这是我在本网站上发现的一个问题,但回复与我认为我的问题没有直接关系。我有点尴尬因为我还是一个非常业余的人。我问用户他们想要输入多少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;
}
答案 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
的类型,编译器正在喷出警告。