编写一个程序以输入五分,并通过以下条件取其平均百分比来确定成绩(如果否则仅使用嵌套(:如果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,但相反,你"失败了">
如果梯子,你应该尝试使用 else
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");
}
这应该有效:
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");
}
}
}
}
}
就您而言,我认为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("%sn", mark(grade));
}
}
return 0;
}