解题思路:
    利用常量数组,将所需要的变化写进去,然后再依据自己进行的输入进行输出。正常思路绝对是可以的,然而………………:

    像这样定义常量数组,直接依据下标变换进行输出即可
    const char *rec="abcdefghijklmnopqrstuvwxyza";
    const char *bec="ABCDEFGHIJKLMNOPQRSTUVWXYZA";

5W5C9A%U8$N$DTBF3Q`ETTD.png

    题目的数据一定是有一些奇怪的特殊符号,千万不要忽略,原样输出即可!!!!!


参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	const char *rec="abcdefghijklmnopqrstuvwxyza";
	const char *bec="ABCDEFGHIJKLMNOPQRSTUVWXYZA";
	char ch;
	while((ch=getchar())!='\n'&&ch!=-1){
		if(ch>='a'&&ch<='z')
			cout<<rec[ch-'a'+1];
		else if(ch>='A'&&ch<='Z')
			cout<<bec[ch-'A'+1];
		else
			cout<<ch;
	}
	return 0;
}

换成C语言只需要把

cout<<rec[ch-'a'+1];
cout<<bec[ch-'A'+1];

换成

printf("%c",rec[ch-'a'+1]);
printf("%c",bec[ch-'A'+1]);

即可

点赞(1)
 

0.0分

5 人评分

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

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

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

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

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

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

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

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

评论列表 共有 11 条评论

Sleep 4年前 回复TA
#include <bits/stdc++.h>
using namespace std;

int main(){
	char x[100]={0};
	gets(x);
	for(int i=0;i<strlen(x);i++){
	if(x[i]>='a'&&x[i]<='z'||x[i]>='A'&&x[i]<='Z'){
		if(x[i]!='z'&&x[i]!='z'&&x[i]!=' ')x[i]++;
		if(x[i]=='z'&&x[i]!=' ')x[i]='a';
		if(x[i]=='z'&&x[i]!=' ')x[i]='a';
		printf("%c",x[i]);
	}else{
		printf("%c",x[i]);
	}
	}
	return 0;
}
天尊沐笙 4年前 回复TA
#include<iostream>
using namespace std;
int main()
{
    char a,b;
    cin>>a>>b;
    a+=1;
    b+=1;
    if(b==123)
    b=97;
    cout<<a<<b;
    return 0;
}
这样子,在C++软件里都是行的,为什么在这里就是错了?
19信二霍安琪 4年前 回复TA
@dragonZhan 为什么i<19,不应该是len吗
19信二霍安琪 4年前 回复TA
@机器不学习 输出单个字符即可,把输出里的空格删了
曳枫 4年前 回复TA
#include<stdio.h>

int main()
{
    char * p,a[999]={0};
    p=gets(a);
    int j=0;
    j=strlen(p);
    for(int i=0;i<j;i++)
    {    if(p[i]>='a'&&p[i]<='z')
        printf("%c",(p[i])+1);
        else
        printf("%c",p[i]);
    }
    return 0;
}
机器不学习 4年前 回复TA
有没有大佬看看哪里错了

#include <stdio.h>
#include<string.h>
int main()
{
	int i;
	char str[100];
	gets(str);
	int len;
	len = strlen(str);
	for (i = 0; i < len; i++)
	{
		if ((str[i] >= 'a'&&str[i] <= 'y') || (str[i] >= 'A'&&str[i] <= 'Y'))
		{
			printf("%c ", str[i]+1);
		}
		else if (str[i] =='z')
		{
			printf("a ");
		}
		else if (str[i] == 'Z')
		{
			printf("A ");
		}
		else printf("%c ", str[i]);
	}
	
	return 0;
}
UDP广播协议叫吃饭 4年前 回复TA
@lemon 很简单,因为while是先输入的,需要进行一个判断ch是否已经输入完全了
dragonZhan 4年前 回复TA
#include<iostream>
	#include<stdio.h>
	#include<stdlib.h>
	using namespace std;
	int main()
	{
		char a[30];
		gets(a);
		for(int i=0;i<19;i++)
		{
			if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z')
		{	
			a[i]++;
		}
		if(a[i]=='z')
		{
			a[i]='a';
		}
		if(a[i]=='Z')
		{
			a[i]='A';
		}
		}
		puts(a);
		
	}这个也错误50%
懵懵 4年前 回复TA
用指针可不可以更快,
tw 4年前 回复TA
#include<stdio.h>
#include<string.h>
int main()
{
	char b[100];
	int a = 0;
	fgets(b,99,stdin);
	a = strlen(b);
	for (int i = 0; i < a - 1; i++)
	{
		if (b[i] >= 'a' && b[i] < 'z' || b[i] >= 'A' && b[i] < 'Z')
			b[i] += 1;
		else
			if (b[i] == 'z')
				b[i] = 'a';
			else if (b[i] == 'Z')
				b[i] = 'A';
	}
	puts(b);
}
哪错了?