我是编程新手(C),我要做一个练习,我必须创建一个将欧洲风格等级(1/20 到 20/20)转换为美国风格等级的函数:例如16 至 20 年级的成绩为“A”。 我必须将其集成到主程序中,该程序将要求转换成绩。
这是我到目前为止所做的,但它不起作用(当我输入 1 到 20 之间的数字时,我得到“null”而不是从 A 到 F 的字母):
char chartype;
char convert( int i){
switch(i){
case 16 ... 20:
chartype = "A";
break;
case 13 ... 15:
chartype = "B";
break;
case 10 ... 12:
chartype = "C";
break;
case 8 ... 9:
chartype = "D";
break;
case 6 ... 7:
chartype = "E";
break;
case 0 ... 5:
chartype = "F";
break;
default:
chartype = "X";
break;
}
}
char convert (int note);
int main(){
int note;
char lettre = convert(note);
printf("Quelle est la note à convertir?\n");
scanf("%d", ¬e);
printf("%s\n", lettre);
return 0;
}
最佳答案
只需使用字符串查找适当的条目:
char convert(int numberGrade ){
if (numberGrade >=0 && numberGrade <= 20) {
// 012345678901234567890
return "FFFFFFEEDDCCCBBBAAAAA"[numberGrade];
}
return 'X'
}
编辑
您还需要在输入值之后将调用移至转换函数。
见下文:
int main(){
int note;
printf("Quelle est la note à convertir?\n");
scanf("%d", ¬e);
char lettre = convert(note);
printf("%c\n", lettre); // use %c with `char`, not %s
return 0;
}
关于c - C语言: convert a number grade into a letter grade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50215482/