100||(score<0) { printf("\n输入有误,请重新输入:"); " />

求教:switch语句问题。

来源:互联网  时间:2016/7/19 7:43:07

关于网友提出的“ 求教:switch语句问题。”问题疑问,本网通过在网上对“ 求教:switch语句问题。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 求教:switch语句问题。
描述:

 #include   
main()  
{ float score;  
  char grade;  
  printf("请输入学生成绩:");  
  scanf("%f",&score);  
  while(score>100||(score<0)  
   { printf("\n输入有误,请重新输入:");  
     scanf("%f",&score);  
   }  
  switch((int)(score/10))  
   { 
     case 10:  
     case 9: grade=’A’;break;  
     case 8: grade=’B’;break;  
     case 7: grade=’C’;break;  
     case 6: grade=’D’;break;  
     case 5:  
     case 4:  
     case 3:  
     case 2:  
     case 1:  
     case 0: grade=’E’;  
   }  
   printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);  
}  
这个程序是C习题答案,运行结果是乱码,请指导一下是哪里出错?
      


解决方案1:

4楼,请不要误人子弟,您说的就是在放狗屁,&&可能同时成立不?!怎么学的数学啊?!
我的建议:main()您要不就是void main()要不就是 int main() 加个return 0;
         其次,switch,您要不就是把那个(float\10)用其他字母代替,建议别用强制类型(INT),这样不划算啊,麻烦。
          细心点,()不是随便加的,scanf不需要用在while ()里面,那样多麻烦啊~
         最后,还是您的习惯问题,您可否将标点设置正常一些啊,别中英文混杂,编译器识别能力有限,他毕竟不是人脑,是机器:)
好啦,我能说的就是这些,希望对您有帮助!

解决方案2:

#include 
int main(void)
{
    float score;
    char grade;
    printf("请输入学生成绩:");
    scanf("%f",&score);
    while(score>100||score<0)//原来代码多了一个上括号

排除这个原因,在DEV-C++ 下调试通过
应该与你编译器有关吧 解决方案3:

引用 4 楼 a8979595 的回复:
include   
main()  
{ float score;  
  char grade;  
  printf("请输入学生成绩:");  
  scanf("%f",&score);  
  while(score>100||(score<0) //这里不要用||用&& { printf("\n输入有误,请重新输入:");  
……

那边就应该用||的,因为是程序功能需要的呀 解决方案4:

[code=C/C++][#include 
int main()
{ float score;
  char grade;
  printf("请输入学生成绩:");
  scanf("%f",&score);
  while(score>100||score<0)//原来代码多了一个上括号
  {
      printf("\n输入有误,请重新输入:");
        scanf("%f",&score);
  }
  switch((int)(score/10))
  {
      case 10:
      case 9: grade='A';break;//这里的单引号改成英文的了
      case 8: grade='B';break;
      case 7: grade='C';break;
      case 6: grade='D';break;
      case 5:
      case 4:
      case 3:
      case 2:
      case 1:
      case 0: grade='E';
  }
  printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
  return 0;
}
/code]
其他的没有改动 在vc6和codeblocks里都通过了

解决方案5:

include    
main()   
{ float score;   
  char grade;   
  printf("请输入学生成绩:");   
  scanf("%f",&score);   
  while(score>100||(score<0)   //这里不要用||用&&  { printf("\n输入有误,请重新输入:");   
  scanf("%f",&score);   //把这句移到while外面来,因为本身不成立所以就不执行下面的语句  }   
  switch((int)(score/10))   
  {  
  case 10:   
  case 9: grade=’A’;break;   
  case 8: grade=’B’;break;   
  case 7: grade=’C’;break;   
  case 6: grade=’D’;break;   
  case 5:   
  case 4:   
  case 3:   
  case 2:   
  case 1:   
  case 0: grade=’E’;   
  }   
  printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);   
}   
不知道说的对不,你试下我这里没有编译器

解决方案6:

你程序里面有错误’A’引号要用英文的引号,不能是中文,while少了个  )    ,main 前加个void
#include    
void main()   
{ float score;   
  char grade;   
  printf("请输入学生成绩:");   
  scanf("%f",&score);   
  while(score>100||(score<0) ) 
  { printf("\n输入有误,请重新输入:");   
  scanf("%f",&score);   
  }   
  switch((int)(score/10))   
  {  
  case 10:   
  case 9: grade='A';break;   
  case 8: grade='B';break;   
  case 7: grade='C';break;   
  case 6: grade='D';break;   
  case 5:   
  case 4:   
  case 3:   
  case 2:   
  case 1:   
  case 0: grade='E';   
  }   
  printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);   
}   

解决方案7:

这主要和你的编译器和操作系统有关

上一篇求一段代码注释,最好是挨行注释以下
下一篇C/C++中单链表问题
明星图片
相关文章
《 求教:switch语句问题。》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)