在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的, 主要有三大流程控制语句。
1) 顺序控制 2)分支控制 (有很多,这篇文章主写if语句 ,switch放在后面写) 3)循环控制 (for,while,do…while ,后面文章写)
顺序控制介绍
程序从上到下逐行地执行,中间没有任何判断和跳转。
顺序控制举例和注意事项
Java,C 中定义变量时采用合法的前向引用的原则。如:
void main() {
int num1 = 12;
int num2 = num1 + 2;
}
错误形式:
void main() {
int num2 = num1 + 2;
int num1 = 12;
}
分支控制 if-else
让程序有选择的的执行,分支控制有三种: 1) 单分支 2) 双分支 3) 多分支
单分支
基本语法
if(条件表达式){
执行代码块;
}
说明:当条件表达式为真 (非 0) 时,就会执行 { } 的代码,返回假(0) 时,不会执行{ } 的代码。
案例说明: 编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 “你年龄大于 18,要对自己的行为负责!”
#include<stdio.h>
void main(){
int age = 0;
printf("请输入年龄");
scanf("%d",&age);
if(age > 18){
printf("\n 你年龄大于 18,要对自己的行为负责!");
}
printf("\n爱干啥干啥吧");
}
双分支
基本语法
if(条件表达式){
执行代码块 1;
}else{
执行代码块 2;
}
说明:当条件表达式成立(为真),执行代码块 1,否则执行代码块 2
案例演示 : 编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 “你年龄大于 18,要对 自己的行为负责!”。否则 ,输出”你年龄太小,放过你了.”
#include<stdio.h>
void main(){
int age = 0;
printf(" 请输入年龄");
scanf("%d",&age);
if(age > 18){
printf("\n 你年龄大于 18,要对自己的行为负责!");
}else{
printf("\n 你年龄太小,放过你了");
}
printf("\n爱干啥干啥吧");
}
练习题
判断一个年份是否是闰年,闰年的条件是符合下面二者之一: (1)年份能被 4 整除,但不能被 100 整除; (2) 能被 400 整除;
#include<stdio.h>
void main(){
int year = 0;
printf("请输入年份");
scanf("%d",&year);
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ){
printf("%d 是闰年",year);
}else{
printf("%d 是平年",year);
}
}
多分支
基本语法
if(条件表达式 1){
执行代码块 1;
}else if (条件表达式 2){
执行代码块 2;
}
……else{
执行代码块 n;
}
说明: 1) 当条件表达式 1 成立时,即执行代码块 1 2) 如果表达式 1 不成立,才去判断表达式 2 是否 成立, 3)如果表达式 2 成立,就执行代码块 2 4)以此类推如果所有的表达式都不成立
案例演示
佟欢参加 心理咨询师 考试,她和昊哥达成承诺: 如果: 成绩为 100 分时,奖励一部手机; 成绩为(80,99]时,奖励一支钢笔; 当成绩为[60,80]时,奖励一个保温杯; 成绩为其它时,给大嘴巴子。 请从键盘输入佟欢的 心理咨询师 考试,并加以判断, 输出提示
#include<stdio.h>
void main() {
int score = 0;
printf("请输入佟欢的成绩:");
scanf("%d",&score);
if(score == 100) {
printf("奖励一部手机");
} else if(score > 80 && score <=99) {
printf("奖励一支钢笔");
} else if(score >= 60 && score <= 80) {
printf("奖励一个保温杯");
} else {
printf("大嘴巴子伺候");
}
}
嵌套分支
基本介绍
在一个分支结构中又完整的嵌套了另一个分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层 分支。嵌套分支不适合过多,最多不要超过 3 层
基本语法
if(){
if(){
.....
}else{
......
}
}else{
......
}
应用案例 1
参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。输入成绩和性别,进行判断。
#include<stdio.h>
void main() {
int second = 0;
printf("请输入秒数");
scanf("%d",&second);
char gender = ' ';
if(second <= 8) {
printf("请输入性别(m/f)");
scanf("%c",&gender);
scanf("%c",&gender);
if(gender == 'm') {
printf("请进入男子组");
} else if(gender == 'f') {
printf("请进入女子组");
} else {
printf("你不男不女是个什么东西?");
}
} else {
printf("你已经被淘汰了,继续努力");
}
}
应用案例 2
出票系统:根据淡旺季的月份和年龄,打印票价 4_10 旺季:成人(18-60):60 儿童(<18):半价 老人(>60):1/3 淡季:成人:40 其他:20
#include<stdio.h>
void main() {
int season = 0;
int age = 0;
double price = 60 ;
printf("请输入季节来判断旺季or淡季");
scanf("%d",&season);
if(season >= 4 && season <= 10) {
printf("你已经进入旺季时刻,请让我看看你年龄");
scanf("%d",&age);
if(age > 0 && age < 18) {
printf("根据你的年龄,你的票价是 %.2f",price / 2 );
} else if(age >= 18 && age < 60) {
printf("根据你的年龄,你的票价是 %.2f",price);
} else if(age >= 60){
printf("根据你的年龄,你的票价是 %.2f",price / 3);
}else{
printf("活这么大第一次看到这个年龄啊!!");
}
} else if ((season > 10 && season < 13) || (season >=1 && season < 4 )) {
printf("你已经进入淡季时刻,请让我看看你年龄");
scanf("%d",&age);
price = 40;
if(age >= 18 && age < 60) {
printf("根据你的年龄,你的票价是 %.2f",price);
} else if((age > 0 && age < 18) || (age >= 60)){
printf("根据你的年龄,你的票价是 %.2f",price / 2);
}else{
printf("活这么大第一次看到这个年龄啊!!");
}
} else {
printf("你输入的数字有问题,本景点不会向你售票");
}
}
编译时一定要反复检查,要细心。
|