我的任务是编写一个程序来处理一个简单的一维数组以返回其元素值,但编译器的行为一直很奇怪;输出的值比我拥有的数组元素多。它也不完全符合我的语句之一(每 8 个元素打印一个新行字符)并且没有将最大值分配给我的变量。不过,我认为一旦解决了第一个问题,其他两个问题就会消失。
这是我的简介:
设计、编码和测试程序:
- 用 0 到 100 之间的随机数填充 20 个元素的数组(标记)。
- 将数字 8 打印到一行
- 打印出最大数、最小数以及数的平均值
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(NULL));
int marks[20];
int i = 0;
int sum = 0;
int min;
int max;
for(i;i<=sizeof(marks);i ++){
marks[i] = rand() % 100;
sum += marks[i];
if(i % 8 == 0){
printf("\n");
}
printf("%d ", marks[i]);
if(marks[i]>max){
max = marks[i];
}
else if(marks[i]<min){
min = marks[i];
}
}
printf("\n\nThe minimum value is: %d", min);
printf("\nThe maximum value is: %d", max);
printf("\n\nThe average value is: %d", sum / sizeof(marks));
return 0;
}
请问有人可以帮我得到正确的输出吗?
最佳答案
sizeof() 函数返回数组的字节长度,因此此代码“认为”您的数组是 20 * 无论字节大小 int
s 在您的机器上。您只需使用 i < 20
在循环中或继续
for (i;i<sizeof(marks)/sizeof(int); i ++) { ...
请注意,您可能不想要 <=
for
中的运算符循环,因为数组的索引为 0,因此 marks[20]
实际上是数组之外的一个。
关于c - 我的 C 程序输出不需要的数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660463/