C语言问题,还有讲解一下getchar()用法

老师布置的问题,苦苦追求首先提示用户“Hi,Iloveyou”,然后询问“Doyouloveme(Y/N)?”。如果用户输入'y'或者'Y',打印“Sogreat!Kis... 老师布置的问题,苦苦追求
首先提示用户“Hi, I love you”,然后询问“Do you love me(Y/N)?”。
如果用户输入'y'或者'Y',打印“So great! Kiss!”,然后退出。
如果用户输入'n'或者'N',则继续询问“Do you love me(Y/N)?”
如果用户输入其它,则提示“Sorry, I don't understand.”,然后继续询问“Do you love me(Y/N)?”[提示:用getchar()读入用户输入的字符,一次只能读入一个。如果用户一次输入多个字符,那么下次getchar()将读走这次输入的第二个字符,以此类推。]

#include <stdio.h>
main()
{
char answer;

printf("Hi, I love U.\n");
printf("Do you love me(Y\\N)\?\n");
scanf("%c", &answer);
getchar();

if(answer == 'Y' || answer == 'y')
{
printf("So great! Kiss!\n");
goto end;
}

do
{
if(answer == 'N'|| answer == 'n')
{
printf("Do you love me(Y\\N)\?\n");
}
else
{
getwchar();
printf("Sorry, I don't understand.\n");
printf("Do you love me(Y\\N)\?");
}
scanf("%c", &answer);

}while(answer!='Y'&& answer!='y');
end:
getch();
return(0);
}
我不会用,getchar()用了scanf 但还是有问题,就是输入字符的问题。SOS
展开
 我来答
return8023
2009-04-03 · TA获得超过527个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:317万
展开全部
#include <stdio.h>
void main()
{
char answer;
printf("Hi, I love U.\n");
do
{
printf("Do you love me(Y\\N)\?\n");
scanf("%c", &answer);
getchar();
if(answer == 'N'|| answer == 'n')
{
continue;
}
else if(answer == 'Y' || answer == 'y')
{
printf("So great! Kiss!\n");
break;
}
else
{
printf("Sorry, I don't understand.\n");
}
}while(true);
}
//每次给answer用scanf输入赋值时,都得用getchar()来读入回车字符
//注明:对特殊字符(回车,空格)的处理,在这里我没有写,你可以根据回车和空格的ASCII码进行条件判断!
//对你的程序有点改动,比如开头的void,在写代码的时候最好写上,有些编译器不支持默认int.同时对你的代码进行了些优化,多数为代码的复用(有些语句在代码中出现一次就可以了,希望你把我的代码和你的代码进行比较,你会有所收获的).
匿名用户
2009-04-03
展开全部
这么改,已经编译运行确认:
#include <stdio.h>
main()
{
char answer;

printf("Hi, I love U.\n");
printf("Do you love me(Y\\N)\?\n");
//scanf("%c", &answer);
answer=getchar();

if(answer == 'Y' || answer == 'y')
{
printf("So great! Kiss!\n");
goto end;
}

do
{
if(answer == 'Y' || answer == 'y')
{
printf("So great! Kiss!\n");
goto end;
}
else if(answer == 'N'|| answer == 'n')
{
printf("Do you love me(Y\\N)\?\n");
}
else
{
// getwchar();
printf("Sorry, I don't understand.\n");
printf("Do you love me(Y\\N)\?");
}
//scanf("%c", &answer);
fflush(stdin);
answer=getchar();
}while(answer!='Y'&& answer!='y');
end:
getch();
return(0);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bxf0817
2009-04-03 · TA获得超过2163个赞
知道小有建树答主
回答量:1348
采纳率:0%
帮助的人:1156万
展开全部
可以嵌套使用,需要注意回车也会被识别为getchar的内容!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式