C语言-流程控制

目录

一、概述

二、选择结构

2.1 if语句

2.2 switch语句

三、循环结构

3.1 while语句

3.2 do…while语句

3.3 for语句

3.4嵌套循环

3.5跳转语句


一、概述

        C语言的三种基本结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构:依据是否满足条件,有选择的执行相应功能
  • 循环结构:依据条件是否满足,循环多次执行某段代码   

二、选择结构

2.1 if语句

如果表达式结果为真,执行{ }对应的代码

  1. if(表达式)
  2. if(表达式){ } else{ }
  3. if(表达式1){ } else if(表达式2){ }else{ }

#include <stdio.h>
int main() {
	int score;
	scanf("%d",&score);
	if(score>700) {
		printf("我要上清华!");
	}else{
		printf("我要上北大!");
	}
	return 0;
}

 三只小猪称体重:

#include <stdio.h>
int main() {
	int a,b,c;
	printf("请输入三只小猪的体重:\n");
	scanf("%d%d%d",&a,&b,&c);
	if(a>b) {
		if(a>c) {
			printf("小猪a最重\n");
		} else {
			printf("小猪c最重\n");
		}
	} else if(b>c) {
		printf("小猪b最重\n");
	} else {
		printf("小猪c最重\n");
	}
	return 0;
}
//输入:26 28 25
//输出结果:小猪b最重

时间差

#include <stdio.h>
int main(){
    //计算时间差
    int hour1,minute1;
    int hour2,minute2;
    scanf("%d %d\n",&hour1,&minute1);
    scanf("%d %d",&hour2,&minute2);
    int h=hour2-hour1;
    int m=minute2-minute1;
    if(m<0){
    	m=m+60;
    	h--;
	}
    printf("%d:%d和%d:%d相差了%d时%d分。",hour1,minute1,hour2,minute2,h,m);
    return 0;
}

输出结果:


#include <stdio.h>
int main() {
	int a,b,c,max;
	scanf("%d,%d,%d",&a,&b,&c);
	if(a>b) {
		if(a>c) {
			max=a;
		} else {
			max=c;
		}
	} else {
		if(b>c) {
			max=b;
		} else {
			max=c;
		}
	}
	printf("三位数%d,%d,%d中,%d最大",a,b,c,max);
	return 0;
}

输出结果:

2.2 switch语句

switch(控制表达式){
case 常量:
        语句
        ……
case 常量:
        语句
        ……
default:
        语句
        ……
}


#include <stdio.h>
int main() {
	int score;
	scanf("%d",&score);
	switch(score/10) {
		case 10:
			printf("优秀");
			break;
		case 9:
			printf("良好");
			break;
		case 8:
			printf("良好");
			break;
		case 7:
			printf("合格");
			break;
		case 6:
			printf("合格");
			break;
		default:
			printf("不合格");
	}
	return 0;
}
//输入:88
//输出:良好

三、循环结构

3.1 while语句

while循环语句:先判断表达式,后执行语句

#include <stdio.h>
int main() {
	//凡是带7的或者7的倍数都要敲桌子
	int i=1;
	while(i<100){
		if(i%7==0||i/10==7||i%10==7){
			printf("敲桌子\n");
		}else{
			printf("%d\n",i);
		}
		i++;
	}
	return 0;
}

3.2 do…while语句

#include <stdio.h>
int main(void) {
	//水仙花数:从100-999各个位数的立方和相加等于这个数本身就是一个水仙花数
	int i=100;
	do {
		//个位数
		int a=i%10;
		//十位数
		int b=i/10%10;
		//百位数
		int c=i/100;
		if(a*a*a + b*b*b + c*c*c == i) {
			printf("%d\n",i);
		}
		i++;
	} while(i<=999);
	return 0;
}

3.3 for语句

for(初始表达式1;判断表达式2;运算表达式3) 语句;

eg. for(int i =0; i<5;i++){

        // 循环体

}

执行顺序解抛 执行的顺序如下: 第一步 : i=0 初始化值

                                                     第二步 : i<5 进行条件判断,如果为真,则继续执行

                                                     第三步 : 执行循环体的内容

                                                     第四步 : i++ 变量i自增

                                                     第五步 : 回到第二步,条件判断为真,则执行循环体内容,再                                                         到i++一直循环, 直到第二步的判断条件为假,则退出该循环

#include <stdio.h>
int main(){
	for(int i=0;i<10;i++){
		printf("%d ",i);
	}
	return 0;
}
输出结果:0 1 2 3 4 5 6 7 8 9 
#include <stdio.h>
int main(){
	int j=2;
	for(int i=0;i<10,j<10;i++,j+=2){
		printf("%d ",i);
	}
	return 0;
}
//输出结果:0 1 2 3 

3.4嵌套循环

#include <stdio.h>
int main(){
    //外层执行一次,内层执行一周
	for(int i=0;i<5;i++){
		for(int j=0;j<5;j++){
			printf("%d %d\n",i,j);
		}
	}
	return 0;
}

输出结果:


九九乘法表

#include <stdio.h>
int main(){
	for(int i=0;i<=9;i++){
		for(int j=0;j<=i;j++){
			printf("%d*%d=%d ",j,i,i*j);
		}
		printf("\n");
	}
	return 0;
}

输出结果


四、跳转语句

4.1 break语句.

  • 当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构
  • 当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码
  • 当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码
#include <stdio.h>
int main(){
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			if(j==5){
				break;
			}
		printf("i=%d,j=%d\n",i,j);
		}
	}
	return 0;
}

输出结果


#include <stdio.h>
int main() {
	for(int i=0; i<10; i++) {
		if(i==5) {
			break;
		}
		for(int j=0; j<10; j++) {
			printf("i=%d,j=%d\n",i,j);
		}
	}
	return 0;
}

输出结果:


4.2 continue语句

在循环语句中,如果希望立即终止本次循环、并执行下一次循环,此时就需要使用continue语句

#include <stdio.h>
int main() {
	for(int i=0;i<=10;i++){
		if(i%2==1){
			continue;
		}
		printf("%d\n",i);
	}
	return 0;
}

输出结果


4.3、goto语句

无条件跳转

#include <stdio.h>
int main() {
	printf("HelloWorld 1\n");
	printf("HelloWorld 2\n");
	goto flag; //flag后面是分号
	printf("HelloWorld 3\n");
	printf("HelloWorld 4\n");
	flag:      //flag后面是冒号
	printf("HelloWorld 5\n");
	printf("HelloWorld 6\n");
	return 0;
}

输出结果


五、随机数

        每次召唤 rand() 就得到一个随机的整数

#include <stdio.h>
int main(){
	srand(time(0));
	int a=rand();
	printf("%d",a);
	return 0;	
}

六、练习题

6.1猜数游戏

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值