在下面的 c 代码中,错误:avg[i]=sum[i]/5 的第 19 行出现“下标值不是数组、指针或向量”

In the below c code , Error: 'subscripted value is not an array, pointer or a vector' on line 19 for avg[i]=sum[i]/5

提问人:Divyasri K 提问时间:7/9/2021 更新时间:7/9/2021 访问量:39

问:

因此,在下面的 C 编程代码中,我无法找出为什么我在 avg[i]=sum[i]/5 的第 19 行收到错误“下标值不是数组、指针或向量”,请帮助并解释我如何解决这个问题

#include<stdio.h>
int main(void)//main starts 
{
  int i,j;
  float mark_tot[]={0,0,0,0,0},sum[5]={0,0,0,0,0},avg[5];
  for(i=0;i<5;i++)
  {
    char name[40];
    float mark[5],tot,avg;
    printf("Enter name : ");
    scanf("%s",name);
    for(j=0;j<5;j++)
    {
      printf("Enter %d th mark of %s ",j+1,name);
      scanf("%f",&mark[j]);
      mark_tot[i]+=mark[j];
      sum[i]+=mark[j];
    }
    avg[i]=sum[i]/5;
    printf("Your name is %s,\nYour total is %f,\nYour average is %f,\n ",name,sum[i],avg);
    for(j=0;j<5;j++)
    {
      printf("%d th mark ",j+1);
    }
  }
}
数组 C 语法错误

评论

0赞 ikegami 7/9/2021
avg是 (),所以没有意义。floatfloat mark[5],tot,avg;avg[i]
0赞 Tom Karzes 7/9/2021
您有两个不同的变量,名为 。顶层的那个具有类型。在循环中声明的类型为 。将它们更改为具有不同的名称。avgmainfloat avg[5];forfloat avg;

答:

0赞 Jing 7/9/2021 #1

我认为当您声明一个名为“avg”(第 9 行)的浮点变量时会发生这种情况,即使您有一个数组变量“avg[5]”,该变量也会从第 7 行到第 25 行生效。您可以声明一个变量“avg_pointer”而不是“avg”,并在第 9 行将其指向“avg[5]”,或者直接删除第 9 行中的“avg”,以便“avg[5]”已经在函数中生效。