A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想完成这个:编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变,为什么第一个只能输出字母部分
  1. #include <stdio.h>
  2. int main()
  3. {
  4.          char c;  
  5.          printf("please input a string:");
  6.          while((c=getchar())!='\n')
  7.          {
  8.                  if(c>='A'&&c<='W'||c>='a'&&c<='w')
  9.                  {                 char a[3] = {c+1,c+2,c+3};
  10.                          for(int i = 0;i<3;i++)
  11.                                         printf("%c",a[i]);
  12.                  }
  13.                  else
  14.                  {
  15.                          if(c>='X'&&c<='Z'||c>='x'&&c<='z')
  16.                 //         c=(c+3)-26;
  17.                          {
  18.                 char b[3] = {c-25,c-24,c-23};
  19.                          for(int i = 0;i < 3; i++)
  20.                                         printf("%c",b[i]);
  21.                          }
  22.                  }
  23. }  
  24.          printf("\n");
  25.          return 0;  
  26. }
复制代码


这是第二个,能输出全部,但只有一个字母,他是怎么输出全部的,求详解
  1. #include <stdio.h>
  2.   main()
  3.   {
  4.           char c;
  5.           printf("please input a string:");
  6.           while((c=getchar())!='\n')
  7.           {
  8.                   if(c>='A'&&c<='W'||c>='a'&&c<='w')
  9.                   {          c=c+3;  }
  10.                   else
  11.                           if(c>='X'&&c<='Z'||c>='x'&&c<='z')
  12.                           {  c=(c+3)-26;}
  13.                           printf("%c",c);
  14.   }  
  15.           printf("\n");
  16.           return 0;
  17.   }
复制代码

评分

参与人数 1黑马币 +1 收起 理由
星河鹭起 + 1

查看全部评分

1 个回复

正序浏览
输入一些字符按回车后,getchar() 的特性是每次从缓冲区读取一个字符,然后赋给c,!='\n'则进入循环,进行判断处理后printf("%c",c);,之后进入第二次while循环,getchar()会读取第二个字符给c,重复上述过程,整个循环下来就是输出字符串的效果了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马