【发布时间】:2013-09-30 23:11:59
【问题描述】:
假设从 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;
}`
【问题讨论】:
-
谢谢稻田。我怎么能在没有开关的情况下解决这个问题(以初学者熟练的程序方式)。再次感谢指点
-
看我的回答。我使用了三元运算符 (
?:),这可能不是初学者。您可以对if .. else ..执行相同的操作。如果您不知道tolower,您可以将grade-'A'与grade-'a'分开。我认为您需要不区分大小写。 -
我应该指出,在
scanf中使用%d不会读取字符。也许你想要%c。 -
建议
printf("\n The average is: %.1f\n", (x+y+z) / 3.0);
标签: c switch-statement average