解题思路:
①:因为a的ascii码为97,z的ascii码为122,设输入的字符为x
②:根据题目字符到a的距离与其反码到z的距离相等
③:所以x的反码y='z'-(x-'a')
④:对于大写字母同理反码y='Z'-(x-'A')
⑤:若输入的字符x不是字母,则输出它本身
注意事项:
以输入仅有一个字符且改字符为感叹号结束,在循环里面加上结束输入判断
即:如果输入的字符只有一个且为'!',则结束
即:要注意的的是,假如输入了:!AACFN
输出应该为:!ZZXUM
不能直接结束
while(gets(A)!=NULL) { if(strlen(A)==1&&A[0]=='!') break; out_putReverse(A); } /*或者这样写也对*/ while(gets(A)!=NULL&&!(A[0]=='!'&&strlen(A)==1)) { out_putReverse(A); }
不可以这样写
while(gets(A)!=NULL&&A[0]!='!') { out_putReverse(A); } /*这样写结提交答案错误*/ /* 因为输入!AACFN就直接结束了*/
参考代码:
#include<stdio.h> #include<string.h> void out_putReverse(char *A); /*--------------------------------------*/ int main() { char A[81]; while(gets(A)!=NULL&&!(A[0]=='!'&&strlen(A)==1)) { out_putReverse(A); } return 0; } /*--------------------------------------*/ void out_putReverse(char *A) { for(int i=0;i<strlen(A);i++) { if(A[i]>='a'&&A[i]<='z') printf("%c",'z'-(A[i]-'a')); else if(A[i]>='A'&&A[i]<='Z') printf("%c",'Z'-(A[i]-'A')); else/*如果不是字母则直接输出*/ printf("%c",A[i]); } /*最后换行*/ printf("\n"); return ; }
别忘点赞哦-.-
0.0分
6 人评分
#include<stdio.h> #include<string.h> int main() { char a[100]; int count=0; while(gets(a)) { int i,len; len=strlen(a); for(i=0;i<len;i++) { if(a[i]=='!') { count++; } } if(count==len) { return 0; } for(i=0;i<len;i++) { if('a'<=a[i]&&a[i]<='z') { int len1=a[i]-'a'; a[i]='z'-len1; } if('A'<=a[i]&&a[i]<='Z') { int len2=a[i]-'A'; a[i]='Z'-len2; } printf("%c",a[i]); } printf("\n"); count=0; } return 0; } 楼主为什么我这个过不了啊
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:2468 |
C语言程序设计教程(第三版)课后习题7.4 (Java代码)浏览:839 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:450 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:509 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1140 |
妹子杀手的故事 (C语言代码)浏览:1218 |
众数问题 (C语言代码)浏览:821 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:464 |
【蟠桃记】 (C语言代码)浏览:1021 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1067 |
木子CoCo~ 2020-08-04 20:23:29 |
题目上面说只有一'!'时,表示输入结束
木子CoCo~ 2020-08-04 20:25:03 |
eg.如果输入多个!,结果应该是再将其输出,而不是结束