2013-02-07 30 views
0

嗨,我是新来的C,并从来没有遇到过这个错误之前,我有点困惑,因为我不相信我已经在我的程序中声明任何int,但是在所有喜欢13 ,14,22,23,24,35和40我得到的数组下标不是整数,我的代码如下。数组下标不是整数问题

#include <stdio.h> 

int main(int argc, char const *argv[]) 
{ 
double mint[8]; 
double gum[8]; 
double count = 1.0,num,sum=0.0; 

while(count <= 8) 
{ 
    printf("please enter a number"); 
    scanf("%d",&num); 
    mint[count]=num; 
    printf("%d\n",mint[count]); 
    count++; 
} 

count = 1; 

while(count<=8) 
{ 
    sum += mint[count]; 
    gum[count] = sum; 
    printf("%d\n",gum[count]); 
    count++; 
} 

count = 1.0; 
sum = 1.0; 

while(count<=8) 
{ 
    while(sum<=8) 
    { 
     printf("%d",mint[sum]); 
     sum++; 
     if (sum==8) 
      printf("\n"); 
    } 
    printf("%d",gum[count]); 
    count++; 
} 

return 0; 
} 
+2

'我不相信我已经在我的程序中声明了任何int'是的,确切地说。这就是错误呻吟的原因。 –

回答

3
scanf("%d",&num); 

d需要一个指向int不是指针到double。如果参数是指向double的指针,请使用lf

同为printf

printf("%d\n",mint[count]); 

d预计的int不是double

+0

这不是OP的问题。我的意思是,这是一个问题。但不是他所问的那个。 –

+0

但有用的信息,但对新的C –

5

您不能为具有double值的数组索引数组。如果count是2.4例如呢?

因此你必须使用一个整数(例如int)。

0

你有

double count = 1.0 

然后

mint[count]=num; 

你不能有索引到一个数组,它是一个双 - 必须是一个整数

0

你得到的错误是指您使用double类型访问阵列:

mint[count] 

其中countdouble

使countsumint摆脱警告。

正如其他answerers已经注意到 - 你的程序也有其他几个问题。您可能想要在某处查看初学者的教程。

+0

或最好是同行评审的书。这种糟糕的编码来自于阅读你找到“某处”的“初学者教程”。 –

+0

这可能是很好的建议。 –