C语言如何计算数组排除小于80的元素总和 解决if判断失效问题
问题原因与修复方案
核心问题
- 你当前贴出的代码里完全没有加入判断小于80的逻辑,第二个for循环直接累加了所有数组元素,自然无法实现过滤效果
- 如果你之前尝试添加
if (a[x] < 80)但未生效,几乎都是因为没有给for循环加大括号,导致if语句不在循环的执行范围内,仅会在循环结束后执行一次,起不到逐元素判断的作用 - 当前第二个for循环没有写大括号,只有紧随其后的
sum=sum+a[x];会被循环执行,后续的打印语句仅执行一次,虽然当前场景下不影响结果,但新增逻辑时很容易触发bug
修复后的代码
#include<stdio.h> #include<conio.h> #define p printf int main() { clrscr(); int a[10], x, sum=0; p("\nEnter 10 numbers greater than 80: "); for(x=0; x<10; x++) scanf("%d", &a[x]); for(x=0; x<10; x++) { // 仅累加大于等于80的元素,等价于排除小于80的元素 if(a[x] >= 80) { sum += a[x]; } } p("The sum is %d", sum); getch(); return 0; }
关键修改说明
- 给第二个for循环添加了大括号,包裹所有需要循环执行的逻辑
- 新增
if(a[x] >= 80)判断,仅符合要求的元素才会被累加到总和中 - 补充了main函数的int返回值类型,符合C语言标准规范,避免编译器告警
内容的提问来源于stack exchange,提问作者Carlmalone Mabiog
相关产品推荐
相关产品推荐

