600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言-分支结构if-else

C语言-分支结构if-else

时间:2022-02-22 08:14:10

相关推荐

C语言-分支结构if-else

用if-else语句可以实现二分支和多分支结构。

1、二分支结构和if-else语句

二分支结构主要有两种形式,流程图如下,即if-else语句和省略else的if语句。

图(a)是if-else语句实现,其一般形式为:

if (表达式)语句1;else语句2;

该语句的执行流程:先求解表达式,如果表达式的值为“真”,就执行语句1;否则(即表达式的值为“假”),就执行语句2。语句1和语句2总要执行一个,且只执行一个。

图(b)是用省略else的if语句实现的,该语句的一般形式是:

if (表达式)语句1;

其执行流程:先求解表达式,如果表达式的值为“真”,就执行语句1;否则(表达式的值为“假”),则什么也不做。

例1:奇偶分家。

奇偶分家。输入一个正整数n,再输入n个非负整数,统计奇数和偶数各有多少个?

#include <stdio.h>int main(void){int count_odd, count_even, i, n, number;count_odd = 0;/*count_odd记录奇数的个数*/count_even = 0;/*count_even记录偶数的个数*/printf("Enter n:");scanf("%d", &n);printf("Enter %d numbers:", n);/*提示输入n个数*/for (i=1; i<=n; i++){scanf("%d", &number);if (number%2 != 0){/*若number除以2的余数不是0,则为奇数*/count_odd++;/*统计奇数的个数*/} else {count_even++;/*统计偶数的个数*/}}printf("Odd:%d, Even:%d\n", count_odd, count_even);return 0;}

运行效果:

Enter n:6‾\underline{6}6​

Enter 6 numbers:23 34 324 44 2 23

Odd:2, Even:4

这里使用的就是图(a)的if-else语句,输入的6个非负整数中间可以加空格,也可以后回车键。

例2:计算平均分

统计指定数量学生的平均成绩与不及格人数。输入一个非负整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数。

#include <stdio.h>int main(void){int count, i, n;/*count记录不及格成绩的个数*/ double score, total;/*score存放输入的成绩,total保存成绩之和*/printf("Enter n:");scanf("%d", &n);total = 0;count = 0;for (i=1; i<=n; i++){printf("Enter score #%d:", i);/*提示输入第i个成绩*/scanf("%lf", &score);/*输入第i个成绩*/total = total+score;/*累加成绩*/ if (score < 60){/*统计不及格成绩的学生人数*/count++;}}if (n != 0){printf("Average = %.2f\n", total/n);/*分母不能为0*/} else {printf("Average = %.2f\n", 0.0);/*当n为0时,平均分为0*/}printf("Number of failures = %d\n", count);return 0;}

运行效果:

Enter n:4

Enter score #1:45

Enter score #2:67

Enter score #3:87

Enter score #4:34

Average = 58.25

Number of failures = 2

该段程序的分支结构使用的是图(b)的省略else的if语句。C语言中除数不能为0,要注意变量做除数时分母不能为0。

2、多分支结构和else-if语句

else-if语句是最常用的多分支结构,这是if-else语句的级联用法,其一般形式为:

if (表达式1)语句1;else if (表达式2)语句2;...else if (表达式n-1)语句n-1;else语句n;

其流程图如下:

执行流程:首先求解表达式1,如果表达式1的值为“真”,则执行语句1,并结束整个if语句的执行,否则,求解表达式2......最后的else处理给出条件都不满足的情况,即表达式1、表达式2......表达式n-1的值都为“假”时,执行语句n。

例1:猜数游戏

输入你猜的整数(假定1~100),与计算机产生的被猜数比较,若相等,显示猜中;若不相等,显示与被猜数的大小关系。

int main(void){int mynumber = 38;/*计算机指定被猜的数*/int yournumber;printf("Input your number:");/*提示输出你所采的整数*/scanf("%d", &yournumber);if (yournumber == mynumber){/*若相等,显示猜中*/printf("Good Guess!\n");} else if (yournumber > mynumber){/*若不等,比较大小*/printf("Too big!\n");} else {printf("Too small!\n");} return 0;}

运行效果:

Input your number:35

Too small!

Input your number:38

Good Guess!

这里使用了else-if语句来判断多路分支。多路分支只执行一路。

例2:阶梯水费

分段计算居民的水费。按以下公式计算水费,增加了用水量x小于0的情况,确保程序运行时出现误输入的情况,放置计算出错。

y=f(x)={0x<04x30≤x≤152.5x−10.5x>15y=f(x) = \begin{cases}0 & x<0 \\ \frac{4x}{3} & 0\leq x \leq 15 \\ 2.5x-10.5 & x > 15 \end{cases} y=f(x)=⎩⎪⎨⎪⎧​034x​2.5x−10.5​x<00≤x≤15x>15​

#include <stdio.h> int main(void){double x, y;printf("Enter x:");scanf("%lf", &x);/*输入double型数据用%lf*/if (x < 0){y = 0;/*满足x<0*/} else if (x <= 15){y = 4*x/3;/*不满足x<0,但满足x<=15,即满足0<=x<=15*/} else{y = 2.5*x-10.5;/*既不满足x<0,也不满足x<=15,即满足x>15*/}printf("f(%.2f) = %.2f\n", x, y);return 0;}

运行结果:

Enter x:-0.8

f(-0.80) = 0.00

Enter x:4.6

f(4.60) = 6.13

Enter x:43.21

f(43.21) = 97.53

参考 C语言程序设计(第4版)/何钦铭,颜晖

例题及课后习题参考程序/sgxgitee/mooc-c

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。