user-0 提问: 成绩转化为等级制，帮忙找一下问题。

回复:
user: user-0
content: 引用 7 楼 自信男孩的回复:#include <stdio.h>  int main(void) {     int grade, ch;      scanf("%d", &grade);     if (grade < 0 || grade > 100)         return 0;      ch = grade / 10;      switch (ch) {         case 0:         case 1:         case 2:         case 3:         case 4:         case 5:             printf("E\n");             break;          case 6:             printf("D\n");             break;          case 7:             printf("C\n");             break;          case 8:             printf("B\n");             break;          case 9:         case 10:             printf("A\n");             break;          default:             printf("Enter error data!\n");             break;     }      return 0; } 多于2个if，建议使用switch case 谢谢，我明白了，但case的用法不太会写，如果case后面是分数段我要怎么去写？

user: user-1
content: #include <stdio.h>  int main(void) {     int grade, ch;      scanf("%d", &grade);     if (grade < 0 || grade > 100)         return 0;      ch = grade / 10;      switch (ch) {         case 0:         case 1:         case 2:         case 3:         case 4:         case 5:             printf("E\n");             break;          case 6:             printf("D\n");             break;          case 7:             printf("C\n");             break;          case 8:             printf("B\n");             break;          case 9:         case 10:             printf("A\n");             break;          default:             printf("Enter error data!\n");             break;     }      return 0; } 多于2个if，建议使用switch case

user: user-0
content: 引用 5 楼 user-3的回复:[quote=引用 4 楼 qq_40814199 的回复:] 我说的不是对x的初始化而是对ABCD的初始化 这四个字母，都是常数，也就是说，程序中写死了的，无法修改的。写死它们，不叫初始化。至于它们应该是什么值，是由程序要完成的功能所决定的，也就是我们常说的需求[/quote] 谢谢，我明白了。刚刚学C语言有很多问题，麻烦你了

user: user-0
content: 引用 9 楼 Intel0011的回复:问题1:什么时候要初始化？ 变量在使用前必须初始化，否则里面的值是不确定的垃圾值  问题2:若最后使用else()括号后面是否要加分号  例:if() y＝ ； else if() y＝ ； else()；y＝ ；  这样是否正确 正确，必须要加分号，y＝ ；语句不属于if结构  问题3:编程改了两次无论输入什么数值都只输出E，问题找不出来 问题在于你定义的x变量的类型是float，而你调用scanf是却使用了%d，%d是整形int，long的说明符，float应该用%f [code=c][/#include <stdio.h>  int main(void) {    float x;     //scanf("%d", &x); //整形数和浮点数的存储格式是不一样的，不能搞混    scanf("%f", &x);     if (x >= 90) printf("A\n");    else if (x >= 80 && x <=89) printf("B\n");    else if (x >= 70 && x <=79) printf("C\n");    else if (x >= 60 && x <=69) printf("D\n");    else if (x < 60) printf("E\n");      return 0; }code] 谢谢，我明白了。刚刚接触C语言，不懂的还有很多，以后请多多帮忙

user: user-2
content: 问题1:什么时候要初始化？ 变量在使用前必须初始化，否则里面的值是不确定的垃圾值  问题2:若最后使用else()括号后面是否要加分号  例:if() y＝ ； else if() y＝ ； else()；y＝ ；  这样是否正确 正确，必须要加分号，y＝ ；语句不属于if结构  问题3:编程改了两次无论输入什么数值都只输出E，问题找不出来 问题在于你定义的x变量的类型是float，而你调用scanf是却使用了%d，%d是整形int，long的说明符，float应该用%f [code=c][/#include <stdio.h>  int main(void) {    float x;     //scanf("%d", &x); //整形数和浮点数的存储格式是不一样的，不能搞混    scanf("%f", &x);     if (x >= 90) printf("A\n");    else if (x >= 80 && x <=89) printf("B\n");    else if (x >= 70 && x <=79) printf("C\n");    else if (x >= 60 && x <=69) printf("D\n");    else if (x < 60) printf("E\n");      return 0; }code]

user: user-0
content: 引用 1 楼 user-3的回复:1. 只要用到的数，就要有确定的值。可以初始化，可以输入，可以由其他数值运算得到，等等 2. else 后面没有括号，有括号就不对了 3. 因为你的变量x是float型，scanf中却用了%d，二者不匹配，输入不会被正确识别。应该用%f 谢谢，但是第一个还是不太懂

user: user-3
content: 1. 只要用到的数，就要有确定的值。可以初始化，可以输入，可以由其他数值运算得到，等等 2. else 后面没有括号，有括号就不对了 3. 因为你的变量x是float型，scanf中却用了%d，二者不匹配，输入不会被正确识别。应该用%f

user: user-3
content: 引用 4 楼 qq_40814199 的回复:我说的不是对x的初始化而是对ABCD的初始化 这四个字母，都是常数，也就是说，程序中写死了的，无法修改的。写死它们，不叫初始化。至于它们应该是什么值，是由程序要完成的功能所决定的，也就是我们常说的需求

user: user-0
content: 我说的不是对x的初始化而是对ABCD的初始化

user: user-3
content: 引用 2 楼 qq_40814199 的回复:[quote=引用 1 楼 user-3的回复:]1. 只要用到的数，就要有确定的值。可以初始化，可以输入，可以由其他数值运算得到，等等 2. else 后面没有括号，有括号就不对了 3. 因为你的变量x是float型，scanf中却用了%d，二者不匹配，输入不会被正确识别。应该用%f 谢谢，但是第一个还是不太懂[/quote]  想要根据变量 x 的内容判断它在哪个区间，x 的内容必须是一个确定的值才能得到确定的结果