loops - 为什么我的代码运行 goto 循环的次数比它应该运行的多两次?
问题描述
这是我必须为我的 C 编程课程做的代码练习,但它不起作用。我试图找出问题所在,但似乎找不到。任何人都可以阐明这个问题吗?这是代码(不要介意韩语):
#include<stdio.h>
int main(void)
{
int cnt = 0;
char mun;
while(1)
{
re:
printf("알파벳 입력 :"); /* basically says "type an alphabet" */
scanf_s("%c", &mun, sizeof(mun));
cnt++;
if (mun != 'Q')
{
printf("찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.\n"); /* "Not the alphabet we need, type another alphabet" */
goto re;
}
else
{
printf("총 %d회 실행하여 알파벳을 찾았습니다.\n", cnt); /* "Found the alphabet after %d tries."*/
printf("찾은 알파벳은 대소 문자 구별 없이 \'Q\'입니다.\n"); /* "The said alphabet is q, either uppercase or lowercase. "/
}
}
return 0;
}
很难解释,所以这是它应该打印的结果:
알파벳 입력 : 3
찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.
알파벳 입력 : k
찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.
알파벳 입력 : Q
총 3회 실행하여 알파벳을 찾았습니다.
찾은 알파벳은 대소 문자 구별 없이 'Q'입니다.
但相反,它只是再运行两次 goto 循环,例如:
알파벳 입력 :3
찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.
알파벳 입력 :찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요. /* see here? */
알파벳 입력 :k
찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.
알파벳 입력 :찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.
알파벳 입력 :Q
총 5회 실행하여 알파벳을 찾았습니다.
찾은 알파벳은 대소 문자 구별 없이 'Q'입니다.
알파벳 입력 :찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요. /* it also runs the goto loop after the
알파벳 입력 :
拜托,有人帮帮我!
解决方案
推荐阅读
- ruby - 如何确定哪个 gem 拥有一个文件?
- java - 在osgi项目中添加骆驼组件
- tensorflow - Tensorflow 是否有不需要标签为二进制文件或字符串的模型?
- reactjs - AWS - 环境变量
- linux - 根据输入视频分辨率使用 ffmpeg 自动调整视频大小
- java - WebView 甚至无法识别下载请求 - Android
- elasticsearch - 父子v / s多个索引 - Elasticsearch 6.2+
- tensorflow - Sampled_Softmax 输入参数
- html - 如何在 CSS 中向后对齐单词
- java - 使用 Infos 将备注信息保存在 (txt) 文件中