C语言---选择结构程序设计
在顺序结构中,各语句是自上而下的顺序执行,执行完上一条语句执行下一条语句,是无条件,也不需要做出任何判断,而实际情况,需要根据某些特定的条件来判断是否执行指定的操作,或者从给定的两种或者多种操作中选择其一。这就是选择结构程序设计。选择结构程序包括:if语句与while语句。
在顺序结构中,各语句是自上而下的顺序执行,执行完上一条语句执行下一条语句,是无条件,也不需要做出任何判断,而实际情况,需要根据某些特定的条件来判断是否执行指定的操作,或者从给定的两种或者多种操作中选择其一。这就是选择结构程序设计。选择结构程序包括:if语句与while语句。
目录
一、用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更多的是表达多分支的个例情况。我们在写代码时,应该根据实际需求,选择合适的语句。
更多推荐


所有评论(0)