#小白提问
#期望 抛出能被 5 整除的数字中所有偶数的和;
#实际结果会莫名奇妙多个10;
#代码如下
#include
int a[] = {};
int i = 0;
char ct;
int text1(int a1[],int n);
int main() {
while(1){
scanf("%d",&a[i]);
ct = getchar();
if(ct == '\n'){
break;
}
i++;
}
printf("%d",text1(a,i));
return 0;
}
int text1(int a1[],int n) {
int sum = 0;
for (int j = 0; j < n; ++j) {
if(a1[j] % 5 == 0){
if(a1[j] % 2 == 0){
sum += a[j];
}
}
}
return sum;
}
**
#望解答
scanf("%d",&a[i]);
这里数组越界了,因为前面没有初始化
int a[] = {};
这里修改为
int a[1000];
首先,代码中的数组a[]没有初始化,所以不能正确的存储能被5整除的数字,需要使用循环将能被5整除的数字存储到数组中。然后,再使用循环遍历数组,找出所有偶数的和。代码示例如下:
#include <stdio.h>
int main() {
int a[100];
int i, sum = 0;
// 将能被5整除的数字存储到数组中
for (i = 0; i < 100; i++) {
if (i % 5 == 0) {
a[i] = i;
} else {
a[i] = -1; // 不能被5整除的数字用-1表示
}
}
// 计算所有偶数的和
for (i = 0; i < 100; i++) {
if (a[i] % 2 == 0 && a[i] != -1) {
sum += a[i];
}
}
printf("所有能被5整除的偶数的和为:%d\n", sum);
return 0;
}
只有全局变量和静态变量才会自动初始化为0。
普通局部变量,若没初始化,则是随机数据。