C语言do-while循环条件`n < 10`运行逻辑与预期相反问题咨询
问题原因
你对do-while循环的条件触发规则理解有误,do-while的执行逻辑是:先执行一次循环体,再判断while后的条件,条件成立(值为真)时会重复执行循环体,条件不成立(值为假)时才会退出循环,执行后续代码。
对应你的代码逻辑拆解:
int n; do { // 首先执行:要求用户输入宽度数值 n = get_int("width"); } // 输入完成后判断:如果n小于10,条件为真,重新进入循环要求用户输入 while (n < 10); // 只有n >=10时,上面的条件为假,才会退出do-while循环,执行下面的打印逻辑 for (int i = 0; i < n; i++) { printf("?"); } printf("\n");
如果你想要实现「用户输入任意正整数n,就打印n个问号,仅限制用户不能输入负数」的需求,可以将do-while的判断条件修改为while (n < 0)即可。
内容的提问来源于stack exchange,提问作者Marco Maher
相关产品推荐
相关产品推荐

