假设从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;
}`
答案 0 :(得分: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
中的每一个调用它。你根本不需要使用switch
,但没关系。 例如
int grade_value( char grade )
{
int value = tolower(grade+1) - 'a';
return (value >= 1 && value <= 6) ? value : 0;
}
另请注意,您应使用%f
输出float
,而不是%d
(输出int
)。
你也误解了switch
的工作原理。在main
,您切换了return
case
。这将退出main
并返回一个值。这意味着你的程序将终止。
你可以在我建议的功能中使用return
,因为它不是你的main
。它将立即从函数返回给定值,因此您不需要“break”。