原题链接:字符串的反码
解题思路:
①:因为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分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复