0

假设从 A 到 F 的等级对应于从 1 到 6 的数字。编写一个程序,输入三个字母的等级并打印平均数字等级。我的代码如下所示: PS:我希望它打印出三个字母输入的平均值。(我考虑到这段代码可能完全错误,因此最终代码应该包含“开关”和数字/整数中三个对应值的计算。请帮助)。

int main(){
char x,y,z;
int num;
float avg;
printf("\n Give three grades:\n");
scanf("%d %d %d", &x, &y, &z);

switch(x,y,z){

case 'a': return 1;
break;
case 'b': return 2;
break;
case 'c': return 3;
break;
case 'd': return 4;
break;
case 'e': return 5;
break;
case 'f': return 6;
break;
}
avg = x+y+z /3;
printf("\n The average is: %d \n", avg);
return 0;
}`
4

1 回答 1

0

您一次只能打开一个值。你为什么不把它变成一个函数:

int grade_value( char grade )
{
    switch(grade) {
       case 'a':
       case 'A':
          return 1;

       case 'b':
       case 'B':
          return 2;

       // etc...

       default:
          return 0;
    }
}

x然后只需为,y和中的每一个调用它z。你真的不需要使用 a switch,但没关系。 例如

int grade_value( char grade )
{
    int value = tolower(grade+1) - 'a';
    return (value >= 1 && value <= 6) ? value : 0;
}

另外,请注意,您应该使用%f输出 a float,而不是%d(输出 a int)。

你也误解了它是如何switch工作的。在您的main中,您return从每个case. 那将退出main并返回一个值。这意味着您的程序将终止。

可以在我为您建议的功能中使用return,因为它不是您的main. 它会立即从函数返回给定的值,因此你不需要'bre​​ak'。

于 2013-09-30T23:15:45.223 回答