C语言三大语法结构

。# C语言三大语法结构


前言

介绍C语言中所涉及的三大结构:顺序、选择和循环结构。


一、顺序结构

顺序结构是一种最基本,最简单的编程结构。程序自上而下依次执行、没有分支、代码简单。
常见顺序结构有:四则运算:+,-,*(乘),/(除)以及%(求余)。

顺序结构流程程序框图
顺序结构流程框图

例:求a,b两数的四则运算与取余结果、f,b两数求平均数、半径为2圆面积。代码如下:

#include<stdio.h>
int main()
{
	int a=9,b=2,f=10;
	int c,d;
	float pi=3.14;

	c=a+b;	
	printf("a+b=%d\n",c);
	c=a-b;
	printf("a-b=%d\n",c);
	c=a*b;
	printf("a*b=%d\n",c);
	c=a/b;
	printf("a÷b=%d\n",c);
	c=a%b;
	printf("a除b的余数=%d\n",c);
	d=(f+b)/2;
	printf("f,b的平均数=%d\n",d);
	c=2;d=pi*c*c;
	printf("半径c为2的圆面积=%d\n",d);		
}

二、选择结构

如果计算机只能做像顺序结构那样简单的基本操作的话,它的用途十分有限。计算机功能强大的原因就在于它具有决策或者说具有选择能力,依靠选择(决策)测试,程序可以进行循环(自己返回)或分支操作(在几个可能的方向上选择一个进入方向)。
在选择结构中,程序首先对一个条件语句进行测试。当条件为“真"(True)时,执行一个方向上的程序流程;当条件为“假”(False)时,执行另一个方向上的程序流程。p代表–个条件,当p条件成立(为真)时,执行A操作,否则执行B操作。但两者只能选择其一。两个方向上的程序流程最终将汇集到一起从一个出口中退出。

选择结构程序框图
在这里插入图片描述

(一)多分支结构

1.串行多分支结构

在串行多分支结构中,以单选择结构中的某一分支方向作为串行多分支方向(假如,以条件为“真”为串行方向)继续进行选择结构的操作。若条件为“假”时,执行另外的操作。最终程序在若干种选择之中选出一种操作来执行。并从一个共用的出口退出。

串行多分支结构流程图
在这里插入图片描述

这种串行多分支结构由若干条if,else if 语句嵌套构成。

2.并行多分支结构

在并行多分支结构中,根据K值的不同,而选择A1,A2……,An等不同的操作中的一种来执行。

并行多分支结构流程图在这里插入图片描述

常见的.用于构成并行多分支结构的语句有:switch-case语句。

(二)常见的选择语句

1.if-else

关键字:if; else; else if

代码结构:

if (bool值)				// 如果bool值为真,则执行代码段1,否则执行代码段2
{
	代码段1
}
else
{
	代码段2
}

例:90分及以上为优,80分及以上为良,60分及以上为及格,以下为不及格,然后输入一个学生分数,判断是否及格。

#include <stdio.h>

int main()
{
	int a;
	scanf("%d",&a);

	
	if (a >= 90)		
	{
		printf("优秀");
	}
	else if (a >= 80)	// ((grade >= 80) && (grade < 90))
	{
		printf("良好");
	}
	else if (a >= 60)	
	{
		printf("及格");
	}
	else
	{
		printf("不及格");
	}
	
}

2.switch case

关键字:

代码结构:

switch (变量)
{
	case 常数1: {语句1}; break;				
	case 常数2: {语句2}; break;
		.
		.
		.
	case 常数n: {语句n}; break;
	default: {语句n+1};
		break;
}

注意:
1、case中必须是常数,而且必须是整形
2、一般来说,每个case中代码段后都必须有一个break;
3、case之后一般要有default。可以不写。

例:输入数字打印相应字母;1----a;2----b;3----c;4-----d;…依次。

int main()
{
	int num;
	scanf("%d",&num);
	
	// 使用switch case语句来完成相同功能:
	switch (num)
	{
		case 1:
			printf("a");break;
		case 2:
			printf("b");break;
		case 3:
			printf("c");break;
		case 4:
			printf("d");break;
		case 5:
			printf("e");break;
		case 6:
			printf("f");break;
		case 7:
			printf("g");break;
		default:
			printf("h");break;
	}
}

三、循环结构

所有的分支结构都使程序流程一直向前执行(除非使用了某种goto语句)而使用循环结构则可使分支流程重复地进行。

(一) 循环结构两种型式

1. “当”(while)型循环结构

“当”(while)型循环结构及其流程图
在这里插入图片描述

在这种结构中,当判断条件p成立(为“真”)时,反复执行操作A,直到p条件不成立(为“假”)时,才停止循环。

2. “直到”(do…while)型循环结构

“直到”(do…while)型循环结构流程图
在这里插入图片描述

这种结构中,先执行操作A,再判断条件p,若p成立(为“真”)则再执行A,此时反复直到p为假为止。

(二)循环语句

1. for循环

在C语言中for循环语句是循环语句中最为灵活也是最为复杂的一种。它不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定但已经给出循环条件的情况。它既可以包含一个索引计数变量,也可以包含任何一种表达式。除了被重复的循环指令体外,表达式模块由三个部分组成。
第一部是初始化表达式,对C语言而言,任何表达式在开始执行时都应该做一次初始化。
第二部分是对结束循环进行测试,对C语言而言它可以是任何–种测试,一旦测试为假,就会结束循环。
第三部分是尺度增量,对C语言而言,任何指定的操作或在测试之后,在进人之前将要执行的表达式都可以放在这里。如果为了有效和保密,可以使用这种结构让C去做别人几乎不能理解的事情。
for循环的语句执行过程如下;
1.先对表达式1赋初值,进行初始化。
2.判断表达式2是否满足给定的循环条件,若满足,则执行循环体内语句,然后执行下面第3步。若不满足循环条件,则结束循环,转到第5步。
3.若表达式2为真,在执行指定的循环语句后,求解表达式3。4.回到第二步继续执行。
5.退出for循环,执行下面一条语句。

程序结构

for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)
{
循环体
}

例:计算10的阶乘。

#include <stdio.h>
int main()
{
	int i, val=1;
	for (i=10; i>=1; i--)
	{
		val *= i;
		printf("i = %d\n", i);		
	}
	
	printf("val = %d\n", val);
}

2. while循环

while循环结构的最大特点在于,其循环条件测试处于循环体的开头,要想执行重复操作首先必须进行循环条件测试,若条件不成立则循环体内的重复操作一次也不能执行。
while循环语句的执行过程如下:
表达式是while 循环能否继续的条件,而语句部分则是循环体,是执行重复操作的部分。只要表达式为真,就重复执行循环体内的语句。反之,则终止while循环。执行循环之外的下一行语句。

while 循环语句框图
在这里插入图片描述

程序结构

while (条件判断表达式)
{
	循环体;
	控制语句;
}

例:计算100以内奇数的和。

#include <stdio.h>
int main()
{
	int i=1, sum=0;

	while (i < 100)
	{
		sum += i;
		i += 2;
	}
	
	printf("sum = %d", sum);
}

3.do-while循环

上节讨论的while循环语句是在循环执行之前检测循环结束条件的。如果条件不成立,则该循环不会被执行。在程序设计中,有时需要在循环体的结尾处,而不是在循环体的开始处检测循环结束条件。do- while循环语句可以满足这种要求。
do一while循环语句把while循环语句作了移位,即把循环条件测试的位置从起始处移至循环的结尾处。该语句大多用于执行至少一次以上的循环的情况。

do-- while循环语句的执行过程如下:
首先执行循环体语句,然后执行圆括号中的表达式。如果表达式的结果为“真”(1),则循环继续,并再一次执行循环语句。只有当表达式的结果为假(0)时,循环才会终止,并以正常方式执行程序后面的语句。

do_while 程序流程图
在这里插入图片描述

程序结构

do
{
	循环体;
	条件控制语句;
}while (条件判断语句);			// 终止条件

#include <stdio.h>
int main()
{
	int i = 1;
	int sum = 0;					// 初始化条件
do
{
	printf("i = %d", i);
	sum += i;
	i += 2;					// 增量,循环体的一部分
}while (i < 100);			// 终止条件
}

总结

C语言是一种结构化编程语言。这种结构化语言有一套不允许交叉的程序流程存在的严格的结构。结构化语言的基本元素是模块,它是程序的–部分,只有一个出口和一个入口,不允许有偶然的中途插入或以模块的其它路径退出。结构化编程语言在没有妥善保护或恢复堆栈和其它相关的寄存器之前,不应随便跳入或跳出一-个模块。因此使用这种结构化语言进行编程,当要退出中断时,堆栈不会因为程序使用了任何可以接受的命令而崩溃。
结构化程序由若干模块组成,每个模块中包含着若干个基本结构,而每个基本结构中可以有若干条语句。归纳起来.C语言有三种基本结构;1.顺序结构;2.选择结构;3.循环结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值