C语言:含scanf的for循环未执行,求排查原因
问题分析:For循环未执行的原因及相关疑问解答
嘿,我来帮你拆解一下你的问题:
1. 循环未执行的核心原因
你写的循环条件是for(i=0;i>6;i++),初始值i=0,而0>6是false(假),所以循环的判断条件一开始就不满足,自然不会执行任何循环体代码。你应该把条件改成i<6或者i<=5(如果你想循环6次的话),比如:
for(i=0;i<6;i++) { // 你的循环逻辑 }
2. 关于%i和%d的疑问
在scanf中,%d和%i对于读取十进制整数来说效果完全一致,不用纠结。唯一的区别是%i还能识别八进制(以0开头)和十六进制(以0x开头)的整数,而%d只认十进制。如果你的输入都是十进制数值,用哪个都没问题。
额外的代码小建议
- 读取字符串时,
scanf("%s", &firstName1[0]);可以简化成scanf("%s", firstName1);,因为数组名本身就是指向数组首元素的指针,不需要再加&和下标。 - 你写的
scanf(" %d ", &...里,格式字符串前后的空格会匹配任意空白字符(包括换行、空格、制表符),如果不是特意需要跳过空白,建议写成scanf("%d", &scores[i]);(假设你要把值存到scores数组里),避免输入时出现意外的阻塞。 - 注意你的代码里
scanf(" %d ", &...没有写完,记得补全变量名哦~
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

