解题思路:
①:因为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语言程序设计教程(第三版)课后习题9.3 (C++代码)浏览:702 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:704 |
点我有惊喜!你懂得!浏览:1705 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:1026 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:722 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:581 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:400 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:631 |
WU-格式化数据输出 (C语言代码)浏览:1818 |
母牛的故事 (C语言代码)浏览:739 |
木子CoCo~ 2020-08-04 20:23:29 |
题目上面说只有一'!'时,表示输入结束
木子CoCo~ 2020-08-04 20:25:03 |
eg.如果输入多个!,结果应该是再将其输出,而不是结束