c语言程序流程控制(上)

程序的流程控制介绍

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句顺序控制,分支控制,循环控制

顺序控制

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("不好意思,你被淘汰了。");
	} 
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值