当前位置: 代码迷 >> C语言 >> [求助] 这函数为何老是无限循环?
  详细解决方案

[求助] 这函数为何老是无限循环?

热度:130   发布时间:2006-11-05 20:35:48.0
for 循环怎么可以结束捏?
用while?
----------------解决方案--------------------------------------------------------
以下是引用☆暂⊙帜☆在2006-11-5 20:35:48的发言:
for 循环怎么可以结束捏?
用while?

用while?具体地说


----------------解决方案--------------------------------------------------------

0到6,为什么只有case 4个呢?
何必?还是没完成其他选项?


----------------解决方案--------------------------------------------------------
以下是引用Knocker在2006-11-5 20:04:46的发言:

case 3 : exit_110(); break;


----------------解决方案--------------------------------------------------------

请问exit的具体作用是什么?
可以在switch语句外面再加一个break啊


----------------解决方案--------------------------------------------------------
以下是引用feng_shaodon在2006-11-5 18:14:23的发言:
有这么一段函数(部分):
main()
{for(;;)
{ switch(menu_book())
{
case 1 : add(); break;
case 2 : search() ; break;
case 3 : exit_110(); break;
case 4 : list () ; break;
}
}
}
int menu_book()
{ int c;
printf("*******************MENU******************\n");
printf("* 1.tian_jia *\n");
printf("*****************************************\n");
do
{printf("\n\n enter you choice(0-6):");
scanf("%d",&c); }
while(c<0||c>6);
return c}
为何当输入的值为一个非数字字符(如:a,或A)的时候会出现无限循环??
就是老是输出“enter you choise(0-6):”有啥解决方案?
各位朋友帮忙呀!先谢了

楼主说的
"为何当输入的值为一个非数字字符(如:a,或A)的时候会出现无限循环??
就是老是输出“enter you choise(0-6):”有啥解决方案"
这个是因为A或a的ASCII值都是>6的...又因为整型和字符型可以通用...所以这里你虽然定义C为int型...但输入字符也是合法的...所发输入A或a就满足你的while条件....自然会继续do后面的语句了....还有就是你的for循环是死循环.....
----------------解决方案--------------------------------------------------------

以下是引用feng_shaodon在2006-11-5 18:14:23的发言:
有这么一段函数(部分):
main()
{for(;;)
{ switch(menu_book())
{
case 1 : add(); break;
case 2 : search() ; break;
case 3 : exit_110(); break;
case 4 : list () ; break;
}
}
}
int menu_book()
{ int c;
printf("*******************MENU******************\n");
printf("* 1.tian_jia *\n");
printf("*****************************************\n");
do
{printf("\n\n enter you choice(0-6):");
scanf("%d",&c); }
while(c<0||c>6);
return c}
为何当输入的值为一个非数字字符(如:a,或A)的时候会出现无限循环??
就是老是输出“enter you choise(0-6):”有啥解决方案?
各位朋友帮忙呀!先谢了

请弄清楚了,楼主说的是在输入a,或A的时候会出现无限循环。
按照常理输入了一个数,不再0到6的范围内的话(比如说a)就会出现enter you choise (0-6) ;
然后就应该继续让你输入一个数,而楼主的确是出现了无限循环,而没有让你输入一个数。
楼主问的应该是这个现象,本人也想听听高手的解释。谢谢
----------------解决方案--------------------------------------------------------

  相关解决方案