C语言编程题这题咋做

题目描述输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。输入一行字符输出加密处理后的字符样例输入ab样例输出bc... 题目描述输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。输入一行字符输出加密处理后的字符样例输入a b样例输出b c 展开
 我来答
cpucash
2012-12-04 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:971万
展开全部
这个很简单
两个方式,给你中心代码
一个是打断来处理,要判断范围
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之间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
非风分
2012-12-04 · 超过10用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:30.6万
展开全部
#include<stdio.h>
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈宗权8d804
2012-12-04 · TA获得超过3766个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:965万
展开全部
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
printf("请输入:");
do{
c=getchar();
putchar(isalpha(c)?(c&0x60)+1+(c&0x1f)%26:c);//是不是太复杂了?
}while(c!='\n');
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdxuelj
2012-12-04 · TA获得超过163个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:157万
展开全部
做法很多,给你其中一种,不知满足要求不。
#include "stdio.h"
main()
{ char c="";
while(c!=13)
{ c=getch();

putch(c+1);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
库运盛c8
2012-12-04 · 超过10用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:19.2万
展开全部
#include <stdio.h>

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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式