永发信息网

帮我看这段代码!

答案:7  悬赏:0  手机版
解决时间 2021-07-28 19:36
  • 提问者网友:我是我
  • 2021-07-28 09:22

while(1)
{
printf("请输入工程师编号:");
scanf("%d",&member[i].bianhao);
if(member[i].bianhao>0&&member[i].bianhao<10000)
break;
else
printf("非法输入,请重新输入!");
}

以上的输入我输入文字的时候,和字符的时候都是死循环!这是为什么?

最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-07-28 10:11
scanf("%d",&member[i].bianhao);这里你得输入数字,其他字符不行,不然break;不会执行,你试试输入数字行不行
全部回答
  • 1楼网友:等灯
  • 2021-07-28 14:50
这个问题我遇到过,印象中 主要是输入格式为整形,如果输入不是整数时会出现问题,可以试下getchar.
  • 2楼网友:话散在刀尖上
  • 2021-07-28 14:27
没有问题啊,估计是你的member[i].bianhao变量类型与%d的类型不符合吧,member[i].bianhao是int类型的吗?
  • 3楼网友:青尢
  • 2021-07-28 12:49

while(1)

while是一个循环,()里面是循环条件

在C语言中,只要不为0就被视为真

所以说,当你写while(1)时,循环永远是成立的

也就会一直循环下去了

  • 4楼网友:青灯有味
  • 2021-07-28 11:35

while(1) 这是个死循环,只有在 if(member[i].bianhao>0&&member[i].bianhao<10000) 这时才会退出循环

你输入文字当然不符合if的判断,继续循环,只有输入1-9999范围内的数字才会退出

  • 5楼网友:纵马山川剑自提
  • 2021-07-28 11:12

肯定 啊 ,你这里写的是 while(1)又不是变量控制,不会发生改变,肯定是死循环

  • 6楼网友:不想翻身的咸鱼
  • 2021-07-28 11:07

scanf遇到回车就终止了,它不读取回车字符,因此你输入一个数据按回车的时候实际尚你的数据进去了,但回车没进去,处理完这个数据之后,又遇到回车,这时什么也没输入,但遇到回车表示输入已结束,又执行命令去了,

要在scanf后面加个getchar();来读入那个回车符

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯