C语言基础问题求教

题目要求:读入一个小写字母(letter),按英文字母表顺序求其后面的第二个字母,并规定:字母'y'后面的第二个字母为'a','z'后面的第二个字母为'b'。#inclu... 题目要求 :读入一个小写字母(letter),按英文字母表顺序求其后面的第二个字母,并规定:字母'y'后面的第二个字母为'a','z'后面的第二个字母为'b'。
#include<stdio.h>
int main(void)
{
char ch;
printf("Enter a letter: ");
while(scanf("%c",&ch)!=EOF)

if(ch>='a'&&ch<'y')
printf("%c\n",ch+2);
else if(ch=='y')
printf("a\n");
else
printf("b\n");

return 0;
}
展开
 我来答
百度网友5511d11
2014-03-09 · 超过26用户采纳过TA的回答
知道答主
回答量:51
采纳率:100%
帮助的人:41.2万
展开全部
问题在于你输出完字符的时候要回车。回车就会在stdin输入缓冲区中添加一个\n,
while第一个循环找到你输出的字符执行完
第二个循环将你的\n读入ch了。

循环结束后清空一下输入缓冲区:
scanf(" %[^\n] "); //将不是\n的字符读出来

scanf(" %*c "); //将最后一个字符读出来。

加上面两行就可以清空缓冲区。
百度网友e9f4e42
推荐于2018-04-19 · 超过11用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:18.1万
展开全部
int main(void)
{
char ch;
printf("Enter a letter: ");
while(scanf("%c",&ch)!=EOF)

if(ch>='a'&&ch<'x')
printf("%c\n",ch+2);
else if(ch=='y')
printf("a\n");
else
printf("b\n");

return 0;
}
即将你程序中的if(ch>='a'&&ch<'y')改为if(ch>='a'&&ch<'x')即可
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laughlee7468
2014-03-09 · TA获得超过2004个赞
知道小有建树答主
回答量:541
采纳率:100%
帮助的人:672万
展开全部
#include <stdio.h>
void main( )
{
char ch;
printf("Enter a letter:");
while(scanf("%c", &ch) != EOF)
if(ch >= 'a' && ch <= 'z')
printf("%c\n", (ch-'a'+2)%26+'a');
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式