真诚请教关于do while的问题~~

来源:百度知道 编辑:UC知道 时间:2024/05/08 09:35:49
#include <stdio.h>
void main()
{
int a;
char z;
do
{
printf("请输入数字1或者2:\n");
scanf("%d",&a);
if (a==1)
printf("同一个世界,同一个梦想!\n");
else
if (a==2)
printf("2008北京欢迎你!\n");
else
printf("输入错误!");
printf("是否重新输入?y\\n?");

fflush(stdin); //清除缓存
z=getchar();
}while(z=='y'||z=='Y');
}

请问一下,输入1会出现“同一个世界,同一个梦想!”,输入2会出现“2008北京欢迎你!” 输入1或者2以外的任意字符会出现“输入错误!是否重新输入?y\\n?”。。
但是出现了一个意外的情况,让我不能理解,就是首先输入“1”或者“2”,然后按“y”继续输入。再随意输入一个字符,比如输入“n”,结果却没有出现“输入错误!是否重新输入?y\\n?”,出现的结果却是上一次出现的答案。请问这个什么问题??
本人初学C语言,对C语言有浓厚兴趣,希望各位高手能给予指导!谢谢!

按“y”继续输入之后,应该到执行printf("请输入数字1或者2:\n");
scanf("%d",&a); 这一步了,但是你输入的不是数字,所以scanf没有接受到输入,a还是原来的值。这时你可以看到scanf的返回值是0

printf("是否重新输入?y\\n?");这句话没有实际意义 输入y 再输入一个数据并不会再重新执行你所编的函数。
函数只执行一次判断即是否为1或2或其他执行完一次就结束了,再输入没有意义的吧。也许是这样的哦我是学c++的,不一定看得很明白。

scanf("%d",..)这是对整型数据的输入,符号这些是属于字符,不满足要求,