在顺序结构中,各语句是自上而下的顺序执行,执行完上一条语句执行下一条语句,是无条件,也不需要做出任何判断,而实际情况,需要根据某些特定的条件来判断是否执行指定的操作,或者从给定的两种或者多种操作中选择其一。这就是选择结构程序设计。选择结构程序包括:if语句与while语句。

目录

一、用if语句实现选择结构

1、第一种形式

 2、第二种形式

 3、第三种形式

练习1:判断是否为闰年;

练习2:判断一个数是否为奇数;

练习3:输出0-100中的奇数;

二、用Switch语句实现选择结构

练习:根据输入(1-7)判断星期(1-7);


一、用if语句实现选择结构

If语句的三种形式:

1:If(表达式)//如果表达式为真,即为非0,就执行语句1;

        语句1;

2:If(表达式)//如果表达式为真,即为非0,就执行语句1;

        语句1;

        else          //如果表达式为假,即为0,就执行语句2;

        语句2;

3:If(表达式1)   语句1;//哪个表达式为真就执行哪个语句;

else If(表达式2)   语句2;

···

else If(表达式n)   语句n;

else(表达式n+1)  语句n+1

注意:1、If、else 后面没有分号;

        2、If 后面只能执行一条语句,如果要执行多条语句,需要将多条语句用大括号括起来,else也一样。

代码示例:

1、第一种形式

(如果3等于3就打印hehe)

#include <stdio.h>
int main()
{
    if(3==3)
    printf("hehe\n");
    return 0;
}

结果:

 2、第二种形式

(如果年龄大于18岁输出成年,可以喝酒,否则不能喝酒)

#include <stdio.h>
int main()
{
    int age=20;
    if(age>18)
      {
        printf("成年\n");
        printf("可以饮酒\n");
      }
    else
        printf("未成年\n");
    return 0;
}

结果:

 3、第三种形式

(多条If语句)

#include <stdio.h>
int main()
{
    int age = 23;
    if(age<18)
        printf("未成年\n");
    else if(age>=18 && age<28)
        printf("青年\n");
    else if(age>=28 && age<40)
        printf("中年\n");
    else if(age>=40 && age<60)
        printf("壮年\n");
    else
        printf("老年\n");

    return 0;
}

结果:

     在选择结构中由多分支时,只会选择一种情况进行。C语言中,0表示假,非0表示正;多条语句一定要用大括号括起来。一个大括号括起来的就是一个代码块,if、else后面的语句尽可能用代码块进行。

练习1:判断是否为闰年;
#include <stdio.h>
int main ()
{
  int year;
  printf("please enter a year:\n");
  scanf("%d",&year);
  if((year%4==0 && year%100!=0)||(year%400==0))
   {
       printf("%d是闰年\n",year);
   }
  else
   {
       printf("%d不是闰年\n",year);
   }  
}

 结果:

练习2:判断一个数是否为奇数;
#include <stdio.h>
int main()
{
    int num;
    printf("enter a number:\n");
    scanf("%d",&num);
    if(num%2==0)
        printf("%d 是偶数\n",num);
    else
        printf("%d 是奇数\n",num);
    return 0;
}

 结果:

练习3:输出0-100中的奇数;
#include<stdio.h>
int main()
{
    int i;
    for(i=1;i<100;i++)
       {
       if(i%2!=0)
       printf("%d ",i);
       }
    return 0;
}

结果:(此处涉及到循环,如不明白,请看后面章节内容)

      总结:If语句在C语言中有着举足轻重的地位,其难度不高,初学者了解其语句要求就可进行大量练习,初期可能会出现语法上的问题,属于正常现象,多加练习即可了解常见的问题。

二、用Switch语句实现选择结构

Switch语句:通常用于多分支语句;switch语句的形式:

switch(表达式)

{

case   常量1:语句1;

case   常量2:语句2;

···

case   常量n:语句n;

default:         语句n+1;  

}

说明:1、switch(表达式)中表达式其值的类型为整形;

2、执行switch语句时,先计算表达式的值,然后将其与花括号中的常量进行匹配,如果与哪个常量的值相同,就转至执行此case后面的语句。如果没有相同,就执行default的语句。

3、可以没有default的语句,这样没有匹配的case常量,则不执行任何语句,转出switch。

4、各个case是并行存在,没有前后之分,但case常量的值必须不同。

5、一般情况,,在执行完一个case语句后,应当用break跳出switch结构,即终止switch语句,最后一个case可以不加。case只决定入口,跳出要带break,如果不加break,程序会一直往下走;

6、多组case可以共用一组执行语句;

练习:根据输入(1-7)判断星期(1-7);
#include<stdio.h>
int main()
{
    int day;
    scanf("%d",&day);
    switch(day)
    {
    case 1:
    printf("星期1\n"); break;
    case 2:
    printf("星期2\n"); break;
    case 3:
    printf("星期3\n"); break;
    case 4:
    printf("星期4\n"); break;
    case 5:
    printf("星期5\n"); break;
    case 6:
    printf("星期6\n"); break;
    case 7:
    printf("星期7\n"); break;
    }
    return 0;
}

结果:

当然,If语句与Switch可以相互转换,如下所示:为If语句所写的同样功能的代码;

#include<stdio.h>
int main()
{
    int i;
    scanf("%d",&i);
    if(i==1)
        printf("星期1\n");
    else if(i==2)
        printf("星期2\n");
    else if(i==3)
        printf("星期3\n");
    else if(i==4)
        printf("星期4\n");
    else if(i==5)
        printf("星期5\n");
    else if(i==6)
        printf("星期6\n");
    else if(i==7)
        printf("星期7\n");
    return 0;
}

结果:

         综上所述,在选择结构语句中,If与switch使用起来都较为简单,而If语句结构可以表示范围,case更多的是表达多分支的个例情况。我们在写代码时,应该根据实际需求,选择合适的语句。

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐