为什么第二次输入num值循环继续的结果都是执行default 语句,不管num是几都是执行default,请教高手,

lxw_2009 2018-05-09 12:12:55
#include<stdio.h>
#include<stdlib.h>

int main(){

int num;
int len=0;
while(1)
{


printf("input num:");
scanf("%d",&num);
while(num>0){
len++;
num/=10;
}
switch(len){
case 1 : printf("1\n");
break;
case 2 : printf("2\n");
break;
case 3 : printf("3\n");
break;
case 4 : printf("4\n");
break;
default :
printf("这个输入的是fail");
}
printf("是否继续输入:是/否");
getchar();
char c=getchar();
if(c=='y'){
continue;
}
else{
printf("退出程序");
exit(-1);
}
}
1,1 Top


...全文
873 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxw_2009 2018-05-16
  • 打赏
  • 举报
回复
非常感谢pkx170,我疏忽了len是一直都是变化的,谢谢,非常谢谢
pkx170 2018-05-15
  • 打赏
  • 举报
回复
把 int len=0; 放到while(1)循环里面就能达到你想要的效果
qq_41873502 2018-05-14
  • 打赏
  • 举报
回复
case如果大于四,就一直d了
白色一大坨 2018-05-09
  • 打赏
  • 举报
回复
这程序莫名其妙的,到底什么意思,len每次输入都增加,还每次都把输入数据给除以10变成了0,len增加到大于4,之后当然一直是错误了。
jena_wy 2018-05-09
  • 打赏
  • 举报
回复
因为第二次输入的时候,获取的是回车,不是一个数字
赵4老师 2018-05-09
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
自信男孩 2018-05-09
  • 打赏
  • 举报
回复
第二次输入之后,对于len的值有没有重新赋值为0.若不是len会一直在上次基数上增加。
Isnis-fallen 2018-05-09
  • 打赏
  • 举报
回复
若输入>10的数, 循环只有两次, len就 大于4了, 结果只能进default
千寻港生惠香 2018-05-09
  • 打赏
  • 举报
回复
程序怪怪的,应该是输4次之后一直default

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧