编写一个程序以输入五个分数,并采用其平均百分比来确定等级(仅在其他情况下使用嵌套),以达到以下条件: 90岁及以上:A级 如果80-70:B级 如果70-80:C级 如果50-70:D级 如果低于50:失败
我确实尝试过使用if(avg> = 50)从后面开始的循环,但它没有给我想要的输出,因为它总是会卡在您失败的地方,而我将其保持在其他状态。
if ( avg <= 90 )
{
if ( avg <= 80 )
{
if ( avg <= 70 )
{
if ( avg <= 50 )
{
printf( "Fail" );
}
else
{
printf( "D" );
}
}
else
{
printf( "C" );
}
}
else
{
printf( "B" );
}
}
else
{
printf( "A" );
}
如果我输入的分数大于90,那么我希望输出结果为A,但是相反,这表示您已“失败”
答案 0 :(得分:3)
您应该尝试使用梯形图其他
if(avg>=90)
{
printf("A");
}
else if(avg>=80)
{
printf("B");
}
else if(avg>=70)
{
printf("C");
}
else if(avg>=50)
{
printf("D");
}
else{
printf("Fail");
}
答案 1 :(得分:1)
这应该有效:
int main()
{
int marks[5];
int i,j;
float avg;
int total=0;
for(i=0;i<5;i++)
{
scanf("%d",&marks[i]);
}
for(j=0;j<5;j++)
{
total = total+marks[j];
}
avg = total/5;
if(avg<50)
{
printf("Fail");
}
else
{
if(avg>=50 &&avg<70)
{
printf("C");
}
else if(avg>=70)
{
if(avg>=80)
{
if(avg<90)
{
printf("B");
}
else if (avg>=90)
{
printf("A");
}
}
}
}
}
答案 2 :(得分:0)
对于您而言,我认为switch
语句可能是最好的解决方案。
# include <stdio.h>
const char * mark(int grade){
switch (grade/10){
case 10:
case 9:
return "A";
case 8:
return "B";
case 7:
case 6:
case 5:
return "C";
default:
return "Fail";
}
}
int main(int argc, char* argv[]){
int grade;
for(int i = 1; i < argc; ++i){
if (sscanf(argv[i], "%d", &grade) < 1){
fprintf(stderr, "\"%s\" can not be converted to an int.\n", argv[i]);
return -1;
}else{
printf("%s\n", mark(grade));
}
}
return 0;
}