黑马程序员技术交流社区

标题: if和switch在转换中的校验问题 [打印本页]

作者: Cesar-Bear    时间: 2015-9-26 15:59
标题: if和switch在转换中的校验问题
第一个代码:
#include<stdio.h>
int main(int argc,const char * argv[]){
int score;
printf("请输入一个分数:\n");
scanf("%d",&score);
  if(score<0||score>100){
  printf("你考这个成绩,你妈妈知道么?");
  return 0;
}
int s=score/10;
switch(s){
   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;
}
}


第二个代码
#include<stdio.h>
int main(int argc,const char * argv[]){
int score;
printf("请输入一个分数:\n");
scanf("%d",&score);
int s=score/10;
switch(s){
   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("你考这个成绩,你妈妈知道么?\n");   
}
}
请问第一个代码和第二个这个代码有什么区别么?{:2_33:}
作者: sclea    时间: 2015-9-26 16:37
第一个代码是校验输入的分数是否真实,超过100或者是低于0分都不会执行swich语句,而是直接打印"你考这个成绩,你妈妈知道么",第二段代码是没有这个校验值的,即使是输入了160的分数也会被判断为A,不知道我说的对不对
作者: wwf707542865    时间: 2015-9-26 17:32
楼上回答不对,第二段如果输入160分,那么s=16,default语句会执行,提示你靠这个成绩你妈妈知道么,第一段代码的if语句和第二段代码的default语句都是提示分数输入错误,只是if直接一些
作者: Cesar-Bear    时间: 2015-9-28 15:09
明白了明白了,谢谢!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2