求教一道C语言的题目
#include<stdio.h>intmain(){while(1){printf("请输入你想实现的功能所对应的数字,按回车键确认\n\n1.加法2.减法3.乘法4....
#include<stdio.h>
int main()
{
while(1)
{
printf("请输入你想实现的功能所对应的数字,按回车键确认\n\n1.加法 2.减法 3.乘法 4.乘方\n\n");
printf("5.转置 6.行列式 7.伴随矩阵 8.逆矩阵\n\n");
printf("9.秩 10.解AX=B 11.QR分解 12.判定两矩阵是否相似\n\n");
printf("13.LU分解 14.若当标准型 15.解一阶线性齐次常系数微分方程组\n\n");
int func=0;
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
switch (func)
{
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
case 10: break;
case 11: break;
case 12: break;
case 13: break;
case 14: break;
case 15: break;
}
printf("请选择\n1.返回 2.退出\n");
int cho;
while(1)
{
scanf("%d",&cho);
if(cho==1||cho==2) break;
else printf("输入错误,请重新输入\n");
}
if(cho==1) continue;
else break;
}
return 0;
}
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
在这个循环中,为什么当我输入数字是非法的时候可以重新输入,但是一单输入字符,就跌入死循环,不断的出现“非法输入……”求大神 展开
int main()
{
while(1)
{
printf("请输入你想实现的功能所对应的数字,按回车键确认\n\n1.加法 2.减法 3.乘法 4.乘方\n\n");
printf("5.转置 6.行列式 7.伴随矩阵 8.逆矩阵\n\n");
printf("9.秩 10.解AX=B 11.QR分解 12.判定两矩阵是否相似\n\n");
printf("13.LU分解 14.若当标准型 15.解一阶线性齐次常系数微分方程组\n\n");
int func=0;
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
switch (func)
{
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
case 10: break;
case 11: break;
case 12: break;
case 13: break;
case 14: break;
case 15: break;
}
printf("请选择\n1.返回 2.退出\n");
int cho;
while(1)
{
scanf("%d",&cho);
if(cho==1||cho==2) break;
else printf("输入错误,请重新输入\n");
}
if(cho==1) continue;
else break;
}
return 0;
}
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
在这个循环中,为什么当我输入数字是非法的时候可以重新输入,但是一单输入字符,就跌入死循环,不断的出现“非法输入……”求大神 展开
3个回答
展开全部
while(1)
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
你这里输入的是%d 所以输入数字是正常进入了if();字符就进入了else()
因为你if后面是加了break,所以能正常跳出while(1)这个死循环,而else你是没有加上break的,所以是一直在while(1)死循环。
{
scanf("%d",&func);
if(func<=15&&func>=1) break;
else printf("非法输入,请重新选择你想实现的功能\n");
}
你这里输入的是%d 所以输入数字是正常进入了if();字符就进入了else()
因为你if后面是加了break,所以能正常跳出while(1)这个死循环,而else你是没有加上break的,所以是一直在while(1)死循环。
追问
我不是要输入字符时跳出循环啊,只是想在输入字符时,重新执行这个循环
追答
while(1)
{
scanf("%d",&func);
if(func=1) break;
else
{
printf("非法输入,请重新选择你想实现的功能\n");
setbuf(stdin,NULL); //加上这句就一定行,,他实现清空流里面的数据
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你从键盘接入的时候 使用int型变量接的 所以不能输入字符 ..
如果想要接字符 ..
用char 来接 ..
char func;
switch(func)
{
case '1':
}
如果想要接字符 ..
用char 来接 ..
char func;
switch(func)
{
case '1':
}
追问
我只是想当输入字符的时候,输出“输入错误”之类的,然后重新输入,但是为什么输入字符不是这样的
追答
277586690 QQ说 ..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你定义输入的是%d的形式,也就是整形,所以你输入字符型的时候,计算机会将字符转换成ASCII值,这样你输入的一直是错误的 》。。。结果会一直出现"非法输入....."
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询