其实加上也是错的。
重点在于
你的scanf中,格式字符串用的是"%d,%d" 也就是逗号分隔的形式
所以你输入的时候 需要11,22这样才可以。不然num实际上是没有输入成功的。
或者 你用"%d%d"格式,然后输入11 22
这样也可以。
有二个地方必须要改一下:
第一,read改为myread(共有3处)
第二,switch(a)要改为switch(p)
#include <stdio.h>
void myread(int)
int main()
{
char i
printf("please input a number:")
scanf("%d",&i)
myread(i)
printf("\n")
return 0
}
void myread(int p)
{
switch(p){
case 0: printf("ling ")break
case 1: printf("yi ")break
case 2: printf("er ")break
case 3: printf("san ")break
case 4: printf("si ")break
case 5: printf("wu ")break
case 6: printf("liu ")break
case 7: printf("qi ")break
case 8: printf("ba ")break
case 9: printf("jiu ")break
}
}
当你输入非整数时,scanf函数不能成功的将该非整数放入x,返回值ret为0,此时非整数还在原来的stdin流中,等到下次scanf时,scanf函数会扫描stdin流,发现流中有数据,就不会等待输入,而是直接将流中数据尝试放入x,这是还是一样错误,ret=0,如此死循环,就一直输出 “请输入一个整数:“欢迎分享,转载请注明来源:内存溢出
评论列表(0条)