You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言奇偶统计程序异常求助:输出超大数值问题排查

解决你的C语言奇偶统计程序问题

嘿,折腾了好几个小时还没搞定肯定挺闹心的,别着急,咱们来把问题一个个揪出来:

你的代码里有两个核心错误:

  • 奇偶判断逻辑完全错了:你用num/2 == 0来判断偶数,这根本不对。整数除法里,比如4/2结果是2(不是0),3/2结果是1(也不是0),这会导致所有数都被判定为奇数,逻辑完全颠倒。判断奇偶应该用取模运算符%——它会返回除法的余数,偶数对2取模余数是0,奇数则是1,这才是正确的判断方式。
  • 输出时错误传递了变量地址:你在printf里写的是&num1、&even,&是取地址运算符,你输出的其实是变量在内存中的地址值,这就是为什么会出现超大数值的原因!应该直接写变量名,比如num1、even。

修正后的完整代码:

#include <stdio.h>
#include <stdlib.h>
int main() {
 int num1;
 int num2;
 int num3;
 int num4;
 int num5;
 int odd = 0;
 int even = 0;
 printf("Input the first integer.\n");
 scanf("%i", &num1);
 printf("Input the second integer.\n");
 scanf("%i", &num2);
 printf("Input the third integer.\n");
 scanf("%i", &num3);
 printf("Input the fourth integer.\n");
 scanf("%i", &num4);
 printf("Input the fifth integer.\n");
 scanf("%i", &num5);
 if (num1 % 2 == 0) {
 printf("%i is even.\n", num1);
 even++;
 } else {
 printf("%i is odd.\n", num1);
 odd++;
 }
 if (num2 % 2 == 0) {
 printf("%i is even.\n", num2);
 even++;
 } else {
 printf("%i is odd.\n", num2);
 odd++;
 }
 if (num3 % 2 == 0) {
 printf("%i is even.\n", num3);
 even++;
 } else {
 printf("%i is odd.\n", num3);
 odd++;
 }
 if (num4 % 2 == 0) {
 printf("%i is even.\n", num4);
 even++;
 } else {
 printf("%i is odd.\n", num4);
 odd++;
 }
 if (num5 % 2 == 0) {
 printf("%i is even.\n", num5);
 even++;
 } else {
 printf("%i is odd.\n", num5);
 odd++;
 }
 printf("%i numbers are even.\n", even);
 printf("%i numbers are odd.\n", odd);
 return 0; // 加上main函数的返回值,更符合C语言标准
}

额外小建议:

其实你可以用循环+数组来简化代码,不用重复写5段几乎一样的判断逻辑,比如把5个整数存到数组里,然后循环遍历处理,这样代码会更简洁易维护,不过这是进阶内容啦,先把当前问题解决就好~

内容的提问来源于stack exchange,提问作者Lewis Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:55:15