为什么程序在没有任何输入的情况下退出



我正试图写一个代码,在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]; 

这是错误的。你还没有给出iquiz应该有多大。

这是正确的方式:-

int i, quiz[5]; //you can change the size.

使用0 的初始化

int i = 0

然后以i=0以及开始循环

for(i = 0 ; i <= 10 ; ++i)

一切都应该很好去

相关内容

最新更新