第五章分支结构和程序设计
选择结构和条件判断
C语言有有两种选择语句
- if语句,用来实现两个分支的选择结构
- switch语句,用来实现多分支的结构选择
5.1 if语句
用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C语言的if语句有三种基本形式。选择结构和条件判断。
If语句的三种形式:
形式1 没有else子句部分
if (<表达式>)
<语句A>
语法功能:
先判断<表达式>的值,若该值为“真”,则:执行<语句A>;
否则:什么也不执行。
注意:
- <表达式>:一般为条件表达式或逻辑表达式。
- if语句中的<语句A>一般情况下都是以复合语句的形式出现,即用一对花括号将语句括起来。如果语句只有一条,则可以不需要花括号
- if结构的流程图:
【例5.1】输入两个实数,按代数值由小到大的顺序输出这两个数。
**解题思路:**只要做一次比较,然后进行一次交换即可。用if语句实现条件判断。
#include<stdio.h>
int main()
{
float a,b,temp;
printf("please enter a and b:");
scanf("%f,%f",&a,&b);
if(a>b)
{
//将a和b的值互换
temp=a;
a=b;
b=temp;
}
printf("%7.2f,%7.2f\n",a,b);
return 0;
}
两个变量值的互换
a=b;//把变量b的值赋给变量a,a的值等于b的值
b=a;//再把变量a的值赋给变量b,变量b值没有改变
因此,为了实现互换,必须借助于第三个变量
【例5.2】输入a,b,c三个数,要求按由小到大的顺序输出。
#include<stdio.h>
int main()
{
float a,b,c,temp;
printf("please enter a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
temp=a; //借助变量t,实现变量a和变量b互换值
a=b;
b=temp;
} //互换后,a小于或等于b
if(a>c)
{
temp=a; //借助变量t,实现变量a和变量c互换值
a=c;
c=temp;
} //互换后,a小于或等于c
if(b>c)
{
temp=b; //借助变量t,实现变量b和变量c互换值
b=c;
c=temp;
} //互换后,b小于或等于c
printf("%7.2f,%7.2f,%7.2f\n",a,b,c); //顺序输出a,b,c的值
return 0;
}
算法步骤
S1:if a>b,将a和b对换(交换后,a是a,b中的小者)
S2:if a>c,将a和c对换(交换后,a是a、c中的小者,因此a是三者中的最小者)
S3:if b>c,将b和c对换(交换后,b是b、c中的小者,也是三者中次小者)
S4:顺序输出a,b,c
在经过第1次互换值后,a≤b,经过第2次互换值后a≤c,这样a已是三者中最小的(或最小者之一),但是b和c谁大还未解决,还需要进行比较和互换。经过第三次互换值后,a≤b≤c。
形式2 有else子句部分
if(<表达式>)
<语句A>
else
<语句B>
式中<表达式>,一般条件表达式或逻辑表达式。
语法功能:
先判断<表达式>的值,若其值为“真”,则执行<语句A>,否则执行<语句B>。
注意:
结构中的<表达式>,<语句A>与<语句B>的规定同if结构。if_else结构的流程图如图所示。
【例5.3】设计一个猜数游戏,由计算机产生一个随机数magic,从键盘输入一个数guess,若输入的数guess的大小等于随机数magic,则输出“Gratulation!You Are right.”。否则,输出“Sorry!You Are Wrong.”。
掌握伪随机数,真随机数看一下就行
分析: 计算机产生的随机数有两种:
①伪随机数②真随机数
伪随机数: 实际上是一组预先安排好的一个数列,可通过函数rand()获取;
真随机数: 通过一个随机种子对伪随机数进行重新排列而得,该随机种子可以是任何数。如果取时间作为随机种子,为简单起见,本题由计算机产生的数就用随机函数rand()直接取伪随机数。
/*猜数游戏的程序*/
#include<stdio.h>
#include<stdlib.h>
main()
{
int guess,magic;
magic=rand()
printf("Please enter a guess number:\n");
scanf("%d",&guess);
if(guess==magic)
printf("Gratulation!You Are Right.\n");
else
printf("Sorry!You Are Wrong.\n");
}
真随机数
/*example猜数游戏的程序中,计算机产生真随机数*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int guess,magic;
srand(time(NULL));