我正试图写一个代码,在10次测验中找出最低成绩,并计算测验、期中考试和期末考试的最终成绩。
这就是代码。当我运行它时,它只是说程序以退出代码0结束。
#include <stdio.h>
#include <math.h>
int main(void)
{
int i, quiz[i], min, QUIZ, final_grade;
double MID, FINAL;
/*loop store quiz grades*/
for (i=1; i<=10; ++i)
{
printf ("Enter quiz%d grade:", i);
scanf ("%d", &quiz[i]);
}
/*store midterm and final value*/
printf ("Enter midterm grade:");
scanf ("%lf", &MID);
printf ("Enter final exam grade:");
scanf ("%lf", &FINAL);
/*find sum of quiz score*/
QUIZ=0;
for (i=1; i<=10; ++i)
{
QUIZ += quiz[i];
}
printf ("%d",QUIZ);
/*find min quiz score*/
for (i=1; i<=10; ++i)
{
min=quiz[1];
if (quiz[i]<min);
min=quiz[i];
}
printf ("n%d",min);
/*calculate quiz pecent score*/
QUIZ = 2.5*(QUIZ-min)/9;
printf ("n%d",QUIZ);
/*calculate final grade*/
if (MID>=FINAL)
{
final_grade=MID*.35+FINAL*.4+QUIZ;
}
else
{
final_grade=MID*.25+FINAL*.5+QUIZ;
}
printf ("nThe final grade is:%d", final_grade);
return 0;
}
它在这一部分运行良好
{
int i, quiz[i];
/*loop store quiz grades*/
for (i=1; i<=10; ++i)
{
printf ("Enter quiz%d grade:", i);
scanf ("%d", &quiz[i]);
}
int min;
min=1;
/*find min quiz grade*/
if (quiz[i]<quiz[min])
{
min=i;
}
quiz[min]=0;
printf ("%d", quiz[min]);
return (0);
}
但当我在程序中添加更多的工作时,就不再需要输入了。
很好地纠正了这是错误的
int i, quiz[i]
既然你还没有给i
一个值,你希望quiz
是有多大
我换了
int i, quiz[10]
之后,它运行并给我输出,但不确定它是否是正确的输出。
Enter quiz1 grade:3
Enter quiz2 grade:4
Enter quiz3 grade:5
Enter quiz4 grade:
5
Enter quiz5 grade:5
Enter quiz6 grade:5
Enter quiz7 grade:5
Enter quiz8 grade:5
Enter quiz9 grade:5
Enter quiz10 grade:5
Enter midterm grade:5
Enter final exam grade:6
47
5
11
The final grade is:15
在您的代码中
int i, quiz[i], min, QUIZ, final_grade;
您正在使用未初始化的i
。此时i
的值是不确定的。因此,您的程序行为是未定义的。
您需要确保使用有效值填充i
,然后才能使用该值定义VLA大小。
int i, quiz[i];
这是错误的。你还没有给出i
和quiz
应该有多大。
这是正确的方式:-
int i, quiz[5]; //you can change the size.
使用0 的初始化
int i = 0
然后以i=0以及开始循环
for(i = 0 ; i <= 10 ; ++i)
一切都应该很好去