为什么C语言main函数中仅第一个for循环的内容可以正常打印
问题原因
所有for循环都复用了存储输入起始值的变量a作为循环变量:第一个遍历质数的for循环执行完成后,a的值已经自增到b + 1,后续三个for循环直接使用此时的a作为初始值,天然不满足a <= b的循环执行条件,因此后续循环完全不会执行,无任何输出。
修复方案
每次执行新的遍历前,将循环变量重置为用户输入的起始值即可,推荐以下实现方式:
- 单独定义临时循环变量,不要复用存储输入参数的原始变量,避免误改输入值
修改后的代码如下:
// 标准C规范下main函数返回值为int,不推荐使用void main int main(void){ int a, b, i; printf("\n Hello, how are you? Please enter the two numbers: \n"); scanf("%d %d", &a,&b); printf("\n isPrime numbers: \n"); for(i = a; i<=b; i++){ if(isPrime(i) == 1){ printf("%d, ", i); } } printf("\n isStrong numbers: \n"); for(i = a; i<=b; i++){ if(isStrong(i) == 1){ printf("%d, ", i); } } printf("\n isPalindrome numbers: \n"); for(i = a; i<=b; i++){ if(isPalindrome(i) == 1){ printf("%d, ", i); } } printf("\n isArmostrong numbers: \n"); for(i = a; i<=b; i++){ if(isArmstrong(i) == 1){ printf("%d, ", i); } } return 0; }
内容的提问来源于stack exchange,提问作者f1a2j3n
相关产品推荐
相关产品推荐

