非常坚持这个问题。我最终得到了平均值,但它给出了负3200万或者其他东西。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float fArray[30];
int choice = 0;
int x = 0;
float total = 0;
float avg = 0;
printf("1. Calculate GPA Average");
printf("\n2. Enter GPA");
printf("\n3. Quit");
printf("\n\nEnter your choice (1-3): ");
scanf("%d", &choice);
if(choice == 2)
{
printf("\n\nEnter GPA: ");
scanf("%.2f\n\n", &fArray[x]);
total = total + fArray[x];
}
else if(choice == 3)
{
return 0;
}
else if(choice == 1)
{
printf("The average is: %f", total / x);
}
for(x = 1; x < 30; x++)
{
fflush(stdin);
int temp = 0;
printf("1. Calculate GPA Average");
printf("\n2. Enter GPA");
printf("\n3. Quit");
printf("\n\nEnter your choice (1-3): ");
scanf("%d", &temp);
if(temp == 2)
{
printf("\n\nEnter GPA: ");
scanf("%.2f\n\n", &fArray[x]);
}
else if(temp == 3)
{
break;
}
else if(temp == 1)
{
printf("The average is: %f", total / x);
}
}
system("pause");
}
答案 0 :(得分:6)
这显然是一个家庭作业问题,你显然是一个初学者。你的老师可能会给你提供比我们更好的帮助。
一些提示:
答案 1 :(得分:1)
从哪里开始...使用do {...} while()。你没有初始化浮点数组。你没有记录输入的等级数。您也永远不会更新for循环中的总变量,因此无论输入什么,显示的总数都不会改变。你甚至从不使用声明的avg变量。
这是一个提示:首先考虑算法;即你要如何进行这些操作?您可以将其他操作(例如计算平均值)与其他操作分开(例如获取用户输入)吗?一旦你想出了你想要使用的过程,考虑哪种类型的数据结构和程序流(循环)结构是合适的,然后开始编码;它会产生很大的不同,而且实施起来会更容易。
答案 2 :(得分:0)
忘记在循环中添加到总数
答案 3 :(得分:0)
尝试输入一些调试语句,如
printf("Total is: %d\n", total);
和
printf("x is: %d\n", x);
在“if”语句中(或者您想要检查总数值的任何地方)。你会很快意识到你出错的地方。