关于c++中多次使用getchar命令闪退问题
代码我以图片的形式放出q1:在完成第8行代码时便出现窗体退出,如何修改?q2:试着在第8行代码后添加纯getchar()命令后,却无法执行switch命令,为什么?...
代码我以图片的形式放出q1:在完成第8行代码时便出现窗体退出,如何修改?q2:试着在第8行代码后添加纯getchar()命令后,却无法执行switch命令,为什么?
展开
1个回答
展开全部
关于你这段程序,有几个情况需要明白:
getchar(),只输入stdin里的“一个字符”,包括行尾的<回车><换行>。
getchar(),需要遇到<回车><换行>符,才会结束运行。
putchar('\a'),可能并不会马上听到“嘟”。
举例。当程序运行时:
请输入x的值
5
通常是:
x=5, y得到的是<回车><换行>符('\n')。而a可能的得到的是'nil'(具体看编译器)。
程序运行的结果是执行到switch()中的default的那一条分支。
而执行到putchar('\a')时,由于stdout中,没有遇到'\n',则暂时停止输出,等遇到'\n'之后,才会听到“嘟”一声。而这种机会可能永远也不会有。所以干脆没机会响一声。
解决办法:
scanf("%d", &x);
scanf("%d", &y);
输入x和y的值
scanf("%c", &a);
输入a的值。
在switch()的default的分支里,增加明确的语句:
printf("输入的操作符是'%c'\n", a);
这样你应该可以看到想要的结果,至少可以知道程序到底执行到哪里了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询