这个很简单
两个方式,给你中心代码
一个是打断来处理,要判断范围
a~y是一部分,这个加上1就可以
z单独处理,变成a就行
int i=0;
char a[100];
gets(a);
for(;a[i];i++)
{
if(a[i]>='a'&&a[i]<='y')
a[i]+=1;
else
a[i]='a';
}
其实还有一个通用公式,就是取余数,这个不用判断范围
a[i]=(a[i]-'a'+x)%26+'a';
这个公式只判断字符串a中的字符是否是大写小写就可以
要是只是小写,那么判断都省了
x是后移的量,如你的题目中的1
解释一下那么公式
a[i]-'a'这个在0~25之间,加上后移量x后,在x~25+x之间
取余数后,还是在0~25之间,但是后面的大于25的,就移到前面来了
最后加上‘a’后,还是在a~z之间
#include
void main()
{
char str[100] ;//更改初始字符串即可
printf("输入字符串:\n");
scanf("%s",str);
printf("待转换字符串为: %s\n",str);
for(int i = 0 ;str[i] != '\0';i++)
{
if(str[i] =='z')
str[i] = 'a';
else if(str[i] =='Z')
str[i] = 'A';
else
str[i] = str[i] +1;
}
printf("转换后字符串:\n%s\n",str);
}
#include
#include
int main()
{
char c;
printf("请输入:");
do{
c=getchar();
putchar(isalpha(c)?(c&0x60)+1+(c&0x1f)%26:c);//是不是太复杂了?
}while(c!='\n');
return 0;
}
做法很多,给你其中一种,不知满足要求不。
#include "stdio.h"
main()
{ char c="";
while(c!=13)
{ c=getch();
putch(c+1);
}
}
#include
int main(void)
{
int ch;
while ((ch=getchar()) != EOF)
{
if (ch>='a' && ch<'z')
{
putchar(ch+1);
}
else if (ch=='z')
{
putchar('a');
}
else
{
putchar(ch);
}
}
return 0;
}