解题思路:
①:因为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 ;
}

别忘点赞哦-.-

点赞(4)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

木子CoCo~ 4年前 回复TA
@song eg.如果输入多个!,结果应该是再将其输出,而不是结束
木子CoCo~ 4年前 回复TA
@song 题目上面说只有一&#039;!&#039;时,表示输入结束
song 5年前 回复TA
#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;
}
楼主为什么我这个过不了啊