如何用C语言for循环实现仅接受奇数的输入验证?
修正奇数输入验证的C代码
原代码存在的问题
- For循环语法无效:你的
for(num; num % 2 == 0; num)写法里,初始化和更新部分仅写了变量名,没有执行任何实际操作。For循环的三个字段分别是初始化语句、循环条件、循环后更新语句,这里前和后两个字段都没有起到作用。 - printf参数缺失:
printf("%d is even. TRY AGAIN!: ")中的%d需要对应一个整数参数,不填会导致程序行为异常。
修正后的For循环版本代码
#include <stdio.h> int main() { int num; printf("Enter odd value for n: "); scanf("%d", &num); // 初始化和更新字段留空,仅保留循环条件 for( ; num % 2 == 0; ) { printf("%d is even. TRY AGAIN!: ", num); // 补充%d对应的num参数 scanf("%d", &num); } // 输入奇数后执行后续逻辑示例 printf("Valid odd number: %d\n", num); return 0; }
代码说明
- For循环的三个字段都可以为空:这里因为已经提前读取了
num,所以初始化字段留空;循环条件判断num是否为偶数,是则继续循环;更新字段留空,因为每次循环内的scanf已经更新了num的值。 - 修复了printf的参数问题,确保能正确输出当前输入的偶数。
更直观的While循环版本(可选)
其实这种持续验证输入的场景,用while循环可读性更高:
#include <stdio.h> int main() { int num; printf("Enter odd value for n: "); scanf("%d", &num); while(num % 2 == 0) { printf("%d is even. TRY AGAIN!: ", num); scanf("%d", &num); } printf("Valid odd number: %d\n", num); return 0; }
内容的提问来源于stack exchange,提问作者Habib Khan
相关产品推荐
相关产品推荐

