将语句字母切换为整数

时间:2013-09-30 23:12:00

标签: c switch-statement average

假设从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;
}`

1 个答案:

答案 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;
    }
}

然后只为xyz中的每一个调用它。你根本不需要使用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”。