gpt4 book ai didi

C - 我收到 "array size missing"错误,我是否声明数组错误?

转载 作者:行者123 更新时间:2023-12-04 01:27:48 26 4
gpt4 key购买 nike

我对声明数组感到困惑。如果我输入一个尺寸,即 good[200],答案将只返回 200。该程序基本上从用户那里获取 10 个整数,并返回具有特定数字范围的整数。我想通过数组收集数字然后返回这些数组的长度作为答案来做到这一点。

int n[10], i, j, excellent[], good[], poor[];
printf("Input 10 integers\n");
for (i = 0; i < 10; i++) {
scanf("%d", &n[i]);
}
for (j = 0; j < 10; j++) {
if (n[j] > 80) {
excellent[j] = n[j];
}
if (n[j] >= 60 && n[j] <= 79) {
good[j] = n[j];
}
if (n[j] < 60) {
poor[j] = n[j];
}
}
printf("%lu are excellent\n", (sizeof(excellent) / sizeof(excellent[0])));
printf("%lu are good\n", (sizeof(good) / sizeof(good[0])));
printf("%lu are poor\n", (sizeof(poor) / sizeof(poor[0])));

最佳答案

C 中的数组具有固定的大小,必须在定义数组时指定,可以显式地给出 [] 之间的大小,也可以隐式地由数组初始化的元素数。它们具有随着添加的每个元素而增加的动态大小。

您应该将每个数组的大小设置为 10 以匹配输入数组,并使用单独的变量作为计数器来跟踪每个数组中有效元素的数量。

int n[10],excellent[10],good[10],poor[10];
int i, j, excellent_cnt = 0, good_cnt = 0, poor_cnt = 0;

printf("Input 10 integers\n");
for(i=0;i<10;i++){
scanf("%d",&n[i]);}
for(j=0;j<10;j++){
if(n[j]>80){
excellent[excellent_cnt++] = n[j];}
if(n[j]>=60 && n[j]<=79){
good[good_cnt++] = n[j];}
if(n[j]<60){
poor[poor_cnt++] = n[j];}
}

printf("%lu are excellent\n", excellent_cnt);
printf("%lu are good\n", good_cnt);
printf("%lu are poor\n", poor_cnt);

关于C - 我收到 "array size missing"错误,我是否声明数组错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61568680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com