题目要求:本题要求计算给定的一系列正整数中奇数的和。
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
请问我这个代码哪里有问题啊
int main() {
int i = 0, sum = 0;
int A[100] = { 0 };
for (i = 0; i<100; i++) {
scanf("%d", &A[i]);
if (A[i] <= 0) {
A[i] = 0;
break;
}
}
for (i = 0; A[i] > 0; i++) {
if (A[i] != 0) {
if (A[i] % 2 != 0) {
sum += A[i];
}
}
else {
break;
}
}
printf("%d", sum);
return 0;
}
可以不存入数组直接算奇数和
#include<stdio.h>
int main() {
int i = 0, sum = 0;
int A;
while(1) {
scanf("%d", &A);
if (A > 0 && A % 2 != 0) {
sum += A;
}
if (A <= 0) {
break;
}
}
printf("%d", sum);
return 0;
}
题目只要求你计算所有奇数的和,并没有对数字进行排序等操作,所以你根本没必要存,直接累加即可
你只给数组设置长度100,很可能实际数量远多于100
可以在读取的同时完成奇数判断和累加呢,修改后的代码如下。望采纳,有问题再沟通。
int main() {
int i = 0, sum = 0;
int A[100] = { 0 };
for (i = 0; i<100; i++) {
scanf("%d", &A[i]);
if (A[i] <= 0) break;
if (A[i] % 2 != 0) sum += A[i];
}
printf("%d", sum);
return 0;
}
上述代码只保留了一个循环,并在每次输入数字后立即判断是否为奇数,如果是就累加到 sum 中。如果输入的数字是零或负数,则退出循环。