zoukankan      html  css  js  c++  java
  • 习题7-7 字符串替换

    本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

    原字母对应字母
    A Z
    B Y
    C X
    D W
    X C
    Y B
    Z A

    输入格式:

    输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

    输出格式:

    输出在一行中给出替换完成后的字符串。

    输入样例:

    Only the 11 CAPItaL LeTtERS are replaced.
    
     

    输出样例:

    Lnly the 11 XZKRtaO OeGtVIH are replaced.

    代码如下:
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 #include<string.h>
     5 int main() {
     6     char a[81];
     7     char b[81];
     8     gets(a);
     9     //int n = strlen(a);
    10     for (int i = 0; i < 81; i++) {
    11         if (a[i] >= 65 && a[i] <= 90) {
    12             b[i] = 155 - a[i];
    13         }
    14         else {
    15             b[i] = a[i];
    16         }
    17     }
    18     
    19     printf("%s", b);
    20     
    21     return 0;
    22 }

    这个题目思路还是蛮简单的,就是把这个式子算出来,如果同学们不知道咋算,我这里有一个笨办法,就是A是65,Z是90,它俩对应,那么输入B(ASCII码对应的是66)时,应该输出89,我们可以像找规律一样,找这几个数字之间的规律,我们发现,65+90 ==  66+89 == ......== ,他们的和是150,所以就是代码第12行的那样子。

    我刚开始做的时候,没有用到gets(),我比较习惯用scanf(),结果发现怎么做都不好做,数据判定总有问题,我就查了查资料,用了这个gets()。

    为什么数组要用到81呢,因为还要留一位存放数组的最后一位,防止数据溢出导致报错或者数据丢失,我在pta就是因为80,而判断出错。

    接下来写以下刚刚查的资料

    单个字符输入的方式有:scanf(%c),getchar(),getcha(),getch()

    字符串输入方式有:scanf(%s),gets()

    具体说说区别,

    getchar就是一个简洁,剩下和scanf没有区别了

    getcha没有缓冲区,输入一个字符就会立刻读出,不用等待用户回车或者其他操作。 需要头文件conio.h,(因为Linux和MAC os没有这个头文件,所以只支持Windows)

    getch 和getcha一样没有缓冲区,它的特别之处是,它没有回显,(看不到用户输入的字符),在特定场合是非常有用的。  需要头文件conio.h  

    scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

    gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。

    也就是说,gets() 能读取含有空格的字符串,而 scanf() 不能。

  • 相关阅读:
    [转]人生哲理小故事
    取PE文件OriginalFilename解析VERSION资源
    [转]COM对象创建外部机制
    读书的几个步骤
    zoj 2412 Farm Irrigation
    HDU 1575 Tr A
    toj 2843 Diamonds
    HDU 1856 More is better
    toj 2841 Bitwise Reverse
    hdu 1213 How Many Tables
  • 原文地址:https://www.cnblogs.com/KeithTee/p/13831336.html
Copyright © 2011-2022 走看看