[c语言]顺序、分支、三种重要结构

目录

目录

一、顺序结构

二、选择结构(又叫分支结构)

(一)简单if语句

(二)if...else语句

(三)else if语句

(四)switch语句

(五)if...else语句与switch语句的比较

三、循环结构

(一)while语句

(二) do....whlie语句

(三)for循环语句


前言

     三种结构基本结构是我们学习c语言必不可少的知识,基本所有问题都可以通过这三种结构解决;以下是博主个人对三种结构的经验总结,如果能帮到大家,小红心点一点;如有纰漏请大家指出。

我们首先来看一个简单的思维导图(简单的概况了这些结构里的一些知识点)

一、顺序结构

顺序结构是三种结构中最简单的,我们可以通过字面来理解它,循序结构,顾名思义就是计算机一步一步按你写代码的顺序来执行程序。

                                          

代码图示及讲解

#include<stdio.h>
int main()//程序先从进入main函数开始
{
//在这里代码就会依次进行
printf("hehe\n");//先打印hehe
printf("hello world\n");//在打印hello world
return 0;//最后到这里程序结束
}

二、选择结构(又叫分支结构)

  选择结构就是对条件进行判断,然后根据判断的结果执行想要处理的代码。

(一)简单if语句

(1)if语句的一般形式为

注意:1.在if语句的括号后面一定不能加英文“  ;  ”,不然编辑器会报错;

           2.如果需要执行多条语句,将这些语句都放入大括号{}内,会使表达的更加规范与整洁,使if语句一目了然。

(2)执行流程图

(3)代码图示及讲解

#include<stdio.h>
int main()
{
int a;//定义一个变量a
printf("请输入一个数字\n");
scanf("%d",&a);//输入一个数字
if(a<=5)//这里if语句表判断,如果a<=5,则输出hehe。
{
printf("hehe\n");
}

return 0;
}

(二)if...else语句

由于简单的if语句只能给出条件为真的时候要执行的操作,并没有给出条件为假的时候要干什么。我为了想条件为真或为假的时候执行不同的语句,我们就需要使用if...else语句。

(1)if...else语句的一般形式为

注意:1.与if里注意的一样

           2.else语句必须跟在一个if语句后面,不能单独使用

(2)执行流程图

首先先判断if后面表达式的值,如果表达式的只为真,就执行语句块,当为假的时候执行else后面的语句块2.

(3)代码图示及讲解

#include<stdio.h>
    int main()
{
	int a = 0;
	scanf("%d",&a);
	if (a%5 == 0)//当你输入的值为5的倍数时,if语句表达式为真就执行if语句,打印YSE
		printf("YES");
	else//当if语句为假时,就执行else语句,打印ON
		printf("ON");
	return 0;
}

(三)else if语句

可以用来解决较为复杂的判断和选择问题。

(1)else if语句的一般形式为

(2)执行流程图

首先对if语句中的表达式1进行判断,如果结果为真,则执行语句1;为假,则判断else if语句中的表达式2······以此类推,当前面所有的判断全部不成立,也是都为假值时,执行else后的语句m。

(3)代码图示及讲解(学生成绩等级划分为例)

#include<stdio.h>
int main()
{
	int score;//定义变量score,表示成绩
	printf("请输入成绩:\n");
	scanf("%d", &score);//输入成绩
	if (score >= 90)//如果score大于90,则输出优秀
	{
		printf("优秀\n");
	}
	else if (score >= 80 && score < 90)//如果80<=score<90,则输出良好
	{
		printf("良好\n");
	}
	else if (score >= 60 && score < 80)//如果60<=score<80,则输出及格
	{
		printf("及格\n");
	}
	else //否则,输出不及格
	{
		printf("不及格\n");
	}
	return 0;

(四)switch语句

如果处理多分支选择的情况,若要使用if...else语句的话,一般需要相互嵌套,就会显得比较复杂,可读就会比较差;而switch语句就能直接处理多分支选择的情况。

(1)switch语句的一般形式为

注意:1.任意两个case语句都不能使用相同的常量值(而不是变量值);                                                                                 2.每个case语句后面都要有一个英文冒号“ : ”;                     3.一个switch语句只能有一个default语句,而且default可以省略;                                                                         4.每个case或者default后面都要有一个break语句,用来跳出switch结构,不在执行;不然会一直执行,直到全部执行完,就达不到判断的目的了。

(2)执行流程图

  

(3)代码图示及讲解(判断一年四季)

#define _CRT_SECURE_NO_WARNINGS 1
//已知3·4·5是春季,6·7·8是夏季,9·10·11是秋季,12·1·2是冬季
#include<stdio.h>
int main()
{
	int month;//定义变量month表示月份
	scanf("%d", &month);
	switch (month)//根据月份来判断季节
	{
	case 3:
	case 4:
	case 5:
		printf("%d是春季\n", month);//3·4·5是春季
		break;
	case 6:
	case 7:
	case 8:
		printf("%d是夏季\n", month);//6·7·8是夏季
		break;
	case 9:
	case 10:
	case 11:
		printf("%d是秋季\n", month);//9·10·11是秋季
		break;
	case 12:
	case 1:
	case 2:
			printf("%d是冬季\n", month);//12·1·2是冬季
			break;
	default:
		printf("无此月份");
		return 0;
	}

(五)if...else语句与switch语句的比较

(1)语法上;

1.分别需要的关键字不同;

2.if语句是对条件先判断,而switch反之。

(2)效率上;

1.if...else语句对少量的检验,判断比较快;但是随着检验深度的增长,会逐渐变慢,并且不容易进行后续条件的增加和扩充;

2.switch语句中,对其他每一项的检验速度是一样的,而default默认情况比其他情况更快。

(3)推荐

1.如果判断情况比较少的时候(3至4个分支以下),推荐使用if...else语句;否则使用switch语句。

三、循环结构

生活中经常有许多简单和重复的工作,为了快速解决这些工作,就出现了循环。

(一)while语句

使用while语句可以解决当某个条件满足时,需要反复执行的循环体的问题。

(1)while语句的一般形式为                                                                                             

(2)执行流程

while语句首先检验一个 条件,也就是括号中的表达式。当条件为真时,就执行紧跟其后的循环语句块。每执行-遍循环,程序都将回到while语句处,重新检验条件是否满足。如果-开 始条件就不满足 ,则跳过循环体中的语句,直接执行后面的程序代码。如果第一次检验时条件满足,那么在第一次或其后的循环过程中,必须得有使条件为假的操作,否则循环将无法终止。                                                                   注意:1.无法终止的循环常被称为死循环或者无限循环;                                                                                                      2.while判断表达式后面是没有分号的。

(三)代码图示和讲解(n~100的累加(while版))

//计算n~100相加
#include<stdio.h>
int main()
{
	int n,sum=0;
	scanf("%d", &n);//输入自然数n
	while (n <= 100)//使用while循环,当你<=100时
	{
		sum = sum + n;//不断累加,并保存在sum中
			n++;//n=n+1
	}
	printf("结果为:%d", sum);//输出结果
	return 0;
}

(二) do....whlie语句

有时候,不论条件是否满足,循环都要至少执行一次,那么我就可以使用do....while语句。

(1)do....while语句的一般形式为                                

(2)执行流程                                                                                                                                                do...while语句是这样执行的,首先执行一次循环体语句中的内容,然后判断表达式,当表达式的值为真时,返回重新执行循环体语句,然后再次判断表达式,直到表达式的值为假,此时循环结束。                             注意:在使用do..while语句时,条件表达式要放在while关键宇后面的括号中,最后必须加上一个分号(:),这里和while语句不同,初学者一定要格外注意。

(3)代码图示和讲解(n~100的累加(do....while版))

#define _CRT_SECURE_NO_WARNINGS 1
//计算n~100相加
#include<stdio.h>
int main()
{
	int n, sum = 0;
	scanf("%d", &n);//输入自然数n
	do 
	{
			sum = sum + n;//不断累加,并保存在sum中
			n++;//n=n+1
	} while (n <= 100);//使用do...while循环
	
	printf("结果为:%d", sum);//输出结果
	return 0;
}

(三)for循环语句

for语句是比较好用的一个语句,主打的就是灵活、易控制并且简洁。

(1)for语句的一般形式为

       1. 每条for语句包含3个用分号隔开的表达式,这3个表达式用一对圆括号括起来,其后紧跟着循环语句或语句块。for语句中,程序首先执行第1个表达式为一个循环变量赋初值;接着检验第2个表达式是否为真,如果为真,就执行循环体中的内容,并计算第3个表达式;然后继续检验第2个表达式是否为真, 为真则继续执行循环;如此反复,直到第2个表达式的值为假,退出循环。

2.为了便于理解 for语句的形式也可以为

(2)执行流程 

其执行过程如下。                                                                                                                             (1)求解表达式1。

 (2)求解表达式2,若其值为真,则执行for语句中的循环  语句;然后执行步骤(3);若为假,则结束循环,转到步    骤(5)。                                                                         (3)求解表达式3。                                                         (4)回到步骤(2),继续执行。                                       (5)循环结束,执行for语句下面的一个语句。  

 (3)代码图示和讲解(n~100的累加(for版))

#include<stdio.h>
int main()
{
	int n, i = 1, sum = 0;
	scanf("%d",&n);//输入自然数n
	for ( i = n;i <= 100;i++)//使用for循环
	{
		sum = sum + i;
	}
	printf("结果为:%d", sum);//输出结果
	return 0;
}

 以上便是个人总结,如果能帮到大家小红心点一点;如有纰漏请大家指出。

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王堆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值