关于c++中多次使用getchar命令闪退问题

代码我以图片的形式放出q1:在完成第8行代码时便出现窗体退出,如何修改?q2:试着在第8行代码后添加纯getchar()命令后,却无法执行switch命令,为什么?... 代码我以图片的形式放出q1:在完成第8行代码时便出现窗体退出,如何修改?q2:试着在第8行代码后添加纯getchar()命令后,却无法执行switch命令,为什么? 展开
 我来答
清河大侠
2018-03-31 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.6万
采纳率:66%
帮助的人:1211万
展开全部

关于你这段程序,有几个情况需要明白:

  1. getchar(),只输入stdin里的“一个字符”,包括行尾的<回车><换行>。

  2. getchar(),需要遇到<回车><换行>符,才会结束运行。

  3. 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);

这样你应该可以看到想要的结果,至少可以知道程序到底执行到哪里了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式