易百教程

Switch判断整数并选择三个中奖号码

以下代码选择中奖号码。用户需要猜出中奖号码,并且通过switch语句告诉他们可能获得什么奖品:

示例代码

#include <stdio.h>

int main(void)
{
  int choice = 0; // 要选择的数字

  // 提示输入数字
  printf("输入一个1到10之间的数字:");
  scanf("%d", &choice);

  // 检查选择是否有效
  if ((choice > 10) || (choice < 1)){
    choice = 11; // 无效时设置一个值,用于显示
  }
  switch (choice)
  {
  case 7:
    printf("祝贺!\n");
    printf("奖品 : 7个香蕉.\n");
    break; 

  case 2:
    printf("奖品  : 2个红薯.\n");
    break; 

  case 8:
    printf("奖品  : 8个芒果.\n");
    break;

  case 11:
    printf("仅限1到10之间的数字值,这次有点乱来了.\n");
    // 这里没有 break语句
  default:
    printf("对不起,什么奖品也没有.\n");
    break;
  }
  return 0;
}

执行上面示例代码,得到以下结果:

hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
输入一个1到10之间的数字:11
仅限1到10之间的数字值,这次有点乱来了.
对不起,什么奖品也没有.

怎么运行的?

上面示例代码中使用了switch语句,它将选择符合条件的值:

switch(choice)
{
      . . .
}

如果choice的值为7,则执行与该值对应的case语句:

case 7:
    printf("祝贺!\n");
    printf("奖品 : 7个香蕉.\n");
    break;

执行两个printf()函数调用,break将跳转到块的右括号后面的语句。

下一个case语句有点不同:

case 11:
    printf("仅限1到10之间的数字值,这次有点乱来了.\n");
    // 这里没有 break语句

因为没有break语句,因此在显示消息后,default:语句中的printf()继续执行。

默认情况是:

default:
    printf("对不起,什么奖品也没有.\n");
    break;

如果选择的值与任何其他case值不对应,则将选择此选项。