原题链接:字符串的反码
解题思路:
①:因为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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#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; } 楼主为什么我这个过不了啊