int main(void)
{
'这是我到目前为止制作的代码' int select; 做 { 系统(" CLS&#34); printf(" \ n1] Add Student"); printf(" \ n2]显示学生"); printf(" \ n3)Search Student"); printf(" \ n4]按字母顺序排序"); 的printf(" \ N5]退出&#34); printf(" \ n选择选项:"); 的scanf("%d",&安培;选择);
switch(select)
{
case 1:
.
.
break;
.
.
.
case 5:
printf("\nGoodbye!");
break;
default:
printf("\nSelect 1-5");
break;
}
getch();
}while(select != 5);
}
答案 0 :(得分:2)
首先,<a href="http://empty.com"><span style="text-decoration: none !important;"><font color="f8931c"><i>Text...</i></font></span></a>
不会读取输入流中的任何但十进制整数;如果您输入一个非数字字符,则不会从输入流中读取(意味着scanf( "%d", &select);
将不会更新,select
将返回一个值0)。
其次,scanf
与整数值case '1':
不匹配,但与字符常量 1
(ASCII中的十进制数48)的值不匹配。因此,如果您在提示符下输入'1'
,则代码将不会使用1
分支。
所以,我建议进行以下更改:
case '1':
答案 1 :(得分:0)
由于字符实际上是一类整数类型,因此输入的数字将与交换机情况的ASCII值进行比较。
在'1'
的情况下,其ASCII值为49,因此如果您输入49,则它将匹配'1'
个案。
为了使其按预期工作,案例必须更改为数字而不是代表数字的字符,即case 1:
而不是case '1':
。