**警告:我对编码非常陌生。如果这段代码看起来一团糟,那是因为它确实是。 **
我让这段代码完美地工作......直到我的笔记本电脑随机重启并且我丢失了所有代码。我不得不重写它,现在,出于某种原因,当我输入一个数组时,它会添加一个额外的数字。
#include <stdio.h>
int main()
{
int length = 0;
int arr[length];
int i;
do {
printf("please enter a positive nonzero integer: \n");
scanf("%d", &length);
if (length <= 0)
printf("Length is invalid. Try again. \n");
}
while (length <= 0);
printf("please enter %d numbers: \n", length);
do {
for (int i = 0; i <= length; ++i) {
scanf("%d", &arr[i]);
}
}
while (length <= 0);
int min = arr[0];
int max = arr[0];
double sum = arr[0];
for (int i = 1; i <= length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
sum = sum + arr[i];
}
printf("Minimum is: %d\n Maximum is: %d\n Mean is: %f\n", min, max, sum/length);
return 0;
}
例子:数组长度=5,数组=1 2 3 4 5 最小值 = 1,最大值 = 6,平均值 = 4 我被困住了,刚刚被打败了。我不能再看这个了。
C 中的数组从
0
开始索引。长度为 5
的数组在 0
、1
、2
、3
和 4
处具有索引。通过检查您的索引是否小于 或等于 长度,您的索引越界了。这会导致未定义的行为。
例如,您的
for
循环应如下所示,将 <=
替换为 <
.
for (int i = 1; i < length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
sum = sum + arr[i];
}