if if inside switch case c language

时间:2016-09-03 10:57:04

标签: c switch-statement

我正在尝试switch然后if else。我不知道我错过了哪里,但这不起作用。

这是我的代码:

include<stdio.h>
include<conio.h>

int main()
{
  clrscr();

  int grade;

  printf("Input Grade");
  scanf("%d",&grade);

  switch(grade<101)
  {
    case 1:
      if (grade>=95)
        printf("A+");
      else
        printf("Invalid");
    break;
    case 2:
      if (grade>=85)
        printf("A");
      else
        printf("Invalid");
      break;
    default:
      printf("Invalid");
  }
getch();
}

所以我不知道是怎么回事。只有第一种情况起作用,当我输入的数字低于95'A'时,不是结果。请帮帮我。

2 个答案:

答案 0 :(得分:1)

如果您 使用switch,则应将if else语句置于switch之外,以便切换正确的整数值。像这样:

int state = 0;
if ( grade < 101 &&‌ grade >= 95 )
  state = 1;
else if ( grade < 101 && grade >= 85 )
  state = 2;

switch state {
   case 1:
      printf("A+");
   break;
   case 2:
      printf("A");
   break;
   default:
      printf("invalid");
   break;
}

答案 1 :(得分:0)

您可以通过以下方式使用switch语句表达这一点(尽管您可能不想这样做):

switch(grade)
{
  case 100:
  case  99:
  case  98:
  case  97:
  case  96:
  case  95:
      printf("A+");
  break;
  case  94:
  case  93:
  case  92:
  case  91:
  case  90:
  case  89:
  case  88:
  case  87:
  case  86:
  case  85:
      printf("A");
  break;
  default:
      printf("Invalid");
      //or an if statement if more options are required.
  break;
}