程序的流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句:顺序控制,分支控制,循环控制。
顺序控制
1.程序从上到下逐行地执行,中间没有任何判断和跳转。
2.C中定义变量时采用合法的前向引用的原则。如:
#include<stdio.h>
void main(){
int a=3;
int b=4;
int c =a+b;
printf("%d",c);
}
前面定义了(a和b)才能调用。如果不定义,==int c =a+b;==这行会报错。
分支控制 if-lese
让程序有选择的执行,分支控制有三种:单分支,双分支,多分支。
1.单分支
基本语法
if(条件表达式){ 执行代码块;}
当条件表达式为真时,就会执行 {} 里面的代码,为假时,不会执行 {} 的代码
注意:语句中有两个getchar()时,第一个接收输入信息时需要按的回车,第二个才是暂停控制台。
例题:如果年龄大于18,输出“你的年龄大于18,要对你自己的行为负责!”(小于18没有什么输出)。
#include<stdio.h>
void main(){
int age = 0;
printf("请输入年龄:");
scanf("%d",&age);
if(age>18){
printf("你的年龄大于18,要对你自己的行为负责!");
}
}
输入20
输入12
2.双分支
基本语法
if(条件表达式){ 执行代码块 1 ;}
else { 执行代码块 2 ;} //当条件为真时,执行代码块1,为假时执行代码块2
例题:1.如果年龄大于18,输出“你的年龄大于18,要对你自己的行为负责!”,否则输出“输出你的年龄小于18”。
#include<stdio.h>
void main(){
int age = 0;
printf("请输入年龄:");
scanf("%d",&age);
if(age>18){
printf("你的年龄大于18,要对你自己的行为负责!");
}
else{
printf("你的年龄小于18!");
}
}
输入20
输入12
2.判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
(1)年份能被4整除,但不能被100整除:(2)能被400整除
#include<stdio.h>
void main(){
int year = 2022;
//对4、100和400分别取模,没有余数就是整除。
//取4和100的模是逻辑与的关系。400和它们是逻辑或的关系
if((year%4==0 && year%100==0)|| year%400==0){
printf("%d 是闰年",year);
}
else{
printf("%d 不是闰年",year);
}
}
3.多分支
基本语法
if(条件表达式){ 执行代码块 1 ;} else if { 执行代码块 2 ;} …… else{ 执行代码块 n ;}
(1)当条件表达式1成立时,即执行代码块1。
(2)如果表达式1不成立,才去判断表达式2是否成立。
(3)如果表达式2成立,就执行代码块2。
(4)以此类推如果所有的表达式都不成立,则执行 else 的代码块,注意,只能有一个执行入口。
例题:1.岳小鹏参加C二级考试,他和父亲岳不群达成承诺:如果:成绩为100分时,奖励一辆BMW;成绩为(80,99)时,奖励一台iphone7plus;当成绩为[60,80]时,奖励一个iPad;其它时,什么奖励也没有。请从键盘输入岳小鹏的C二级考试,并加以判断,输出提示
#include<stdio.h>
void main(){
double a=0.0;
printf("请输入成绩:");
scanf("%lf",&a);
if(a==100){
printf("奖励一辆BMW");
}
else if(a>80 && a<=99){
printf("奖励一台iphone7plus");
}
else if(a>60 && a<=80){
printf("奖励一台iPad");
}
else{
printf("没有奖励");
}
}
2.求ax^2+bx+c=0方程的根。a,b,c分别为函数的参数,如果: b2-4ac>0,则有两个解;b2-4ac=0,则有一个解;b2-4ac<0,则无解;
提示1: x1=(-b+sqrt(b^2-4ac))/2a
x2=(-b-sqrt(b^2-4ac)/2a
提示2: sqrt(num),需要include <math.h>
输入2 5 2
#include<stdio.h>
#include<math.h>
void main(){
double a,b,c,x1,x2;
printf("请输入3个数:");
scanf("%lf%lf%lf",&a,&b,&c);
double t=b*b-4*a*c;
if(t>0){
x1=(-b+sqrt(t))/(2*a);
x2=(-b-sqrt(t))/(2*a);
printf("x1=%.2f,x2=%.2f",x1,x2);
}
else if(t==0){
x1=(-b)/(2*a);
printf("x1=%.2f",x1);
}
else{
printf("无解");
}
}
嵌套分支
在一个分支结构中又完整的嵌套了另一个分支结构,里面的分支结构称为内层分支,外面的结构称为外层分支。嵌套分支不适合过多,最多不超过三层。
基本语法
if(){ if(){ //内包含的可能是单分支,多分支,双分支} else{ } }
例题:1.键盘输入2个数,如果第一个数大于2且第二个数大于4则输出它们的和。如果第一个数大于2但第二个数小于等于4,则输出“a>2但是b=<4”。如果第一个数小于2,则输出“a<2”。
#include<stdio.h>
void main(){
int a;
int b;
printf("请输入这个整数并用空格隔开:");
scanf("%d%d",&a,&b);
if(a>2){
if(b>4){
printf("a+b=%d",a+b);
}
else{
printf("a>2但是b=<4");
}
}
else{
printf("a<2");
}
}
输入4 5
参加百米运动会,如果用时8秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。输入成绩和性别,进行判断。
#include<stdio.h>
void main(){
double time;//保存输入的时间
char gender;//保存输入的性别
printf("请输入跑步的时间(单位秒)");
scanf("%lf",&time);
//先判断是否进入决赛组
if(time <= 8){
printf("请输入性别(m/f)");
scanf("%c",&gender);//接收到回车
scanf("%c",&gender);//这个才接受到性别
if(gender =='m'){
printf("请进入男子组");
}
else{
printf("请进入女子组");
}
}
else{
printf("不好意思,你被淘汰了。");
}
}