用户输入C中的数组索引+索引值

时间:2012-10-18 22:16:59

标签: c arrays

这是我在本网站上发现的一个问题,但回复与我认为我的问题没有直接关系。我有点尴尬因为我还是一个非常业余的人。我问用户他们想要输入多少GPA。然后我要求为每个索引输入。问题是每个索引都返回0.所以我很确定我搞乱了变量类型或可能是我增加索引的方式。这是一个家庭作业问题,我正在寻找更多的指导,而不是完全放弃。

#include<stdio.h>

main()
{
      char Rspns; 
      int i, toCount, Total;
      float GPA[toCount];

      printf("\n\tYou can average up to 30 GPAs.");
      printf("\n\tPlease choose how many GPAs you would like to average:");
      scanf(" %d" , &toCount); 

      //assign how many indexes array should have
      for(i = 0; i<toCount; i++)
            GPA[i] = i++;


            do
                {

                system("cls");
                printf("\n\nEnter a GPA:");
                scanf(" %f" , &GPA); 
                printf(" %f" , GPA[i]);
               Total += GPA[i];

               getch();
               system("cls");
               printf("\n\n\tWould you like to average the current amount of GPA's?");
               printf("\n\nY/N: ");
               scanf(" %c" , &Rspns);

                       if(Rspns == 'y' || Rspns == 'Y')
                               {

                               Total = Total / toCount;
                               printf("The average of those GPAs is %.1f" , Total);
                               getch();

                               }// end response

                }while(i<=toCount);//end forCount
                Total = Total / toCount;


 } 

4 个答案:

答案 0 :(得分:0)

int i, toCount, Total;
float GPA[toCount];

toCount此时尚未初始化。

Total += GPA[i];

此处,Total以不确定的值开头。

答案 1 :(得分:0)

scanf(" %f" , &GPA); 

绝对不是你想要做的事:记住,数组和指针在C语言中密切相关 - see this SO answer

scanf(" %f" , &(GPA[i]) ); 

将值扫描到数组的第i个元素

答案 2 :(得分:0)

将GPA数组初始化为固定大小并将toCount验证为1到最大值,或者使用内存分配函数malloc或calloc在知道大小后动态分配GPA数组(并在完成时自由分配)它)。

在你说“分配数组应该有多少索引”时,我无法弄清楚你要做什么,但是不需要在数组中输入你随后会覆盖的值(你可以使用calloc)如上所述,将它们全部初始化为零)。请注意,您应该扫描到GPA阵列的第i个元素(&amp; GPA [i]),而不是扫描到始终是第一个元素的&amp; GPA。

另外,要小心i ++,因为你每次循环都会增加两次。虽然你的代码部分是不必要的,但这是一个值得注意的陷阱。

祝你好运,

答案 3 :(得分:0)

我认为你应该扫描到特定的浮点数而不是扫描整个数组

scanf("%f", &GPA[i]);

另外,检查printf的类型,编译器正在喷出警告。