程序结构(顺序结构、选择结构、循环结构)

程序结构

在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构

1、顺序结构:按照实物本身特性,必须一个接着一个来完成。
2、选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。
3、循环结构:循环结构有一个循环体,循环体是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。

总结:对于顺序结构来说,不需判断,因为下一句指令就是你要执行的。对与循环与选择结构来说,都需要进行判断。然后根据判断结果来决定怎么办。逻辑上有一种类型,叫bool类型(又写作boolean类型,中文叫布尔类型)。布尔类型只有两个值,真和假。

C语言中有以下一些判断运算符

==	  等于
!=	  不等于
>	  大于
<	  小于
>=    大于等于
<=	  小于等于

使用这些判断运算符,可以写出一个判断表达式,这个判断表达式最终的值就是一个bool类型。这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环。

1、选择结构详解:
C语言中选择结构一共有两种:
第一种:

if else
引入关键字:if 		else 		else if

if (bool值)				// 如果bool值为真,则执行代码段1,否则执行代码段2
{
	代码段1
}
else
{
	代码段2
}
解析:
if (bool值1)				// 如果bool值1为真,则执行代码段1
{							// 否则则判断bool值2是否为真,若为真则执行代码段2
	代码段1					// 否则直接执行代码段3
}
else if (bool值2)			// 开头的if和结尾的else都只能有一个,但是中间的
{							// else if可以有好多个。
	代码段2
}
else
{
	代码段3
}

练习题目:
规则:90分及以上为优,80分及以上为良,60分及以上为及格,以下为不及格,然后输入一个学生分数,然后printf打印“you” “liang” “jige” "bujige"

#include <stdio.h>

int main(void)
{
	int grade;
	
	grade = 97;
	
	if (grade >= 90)		
	{
		printf("you.\n");
	}
	else if (grade >= 80)	// ((grade >= 80) && (grade < 90))
	{
		printf("liang.\n");
	}
	else if (grade >= 60)	
	{
		printf("ji ge.\n");
	}
	else
	{
		printf("bu ji ge.\n");
	}
	
	return 0;
}


// if (100 >= grade >= 90)		// C语言不支持,应该写成下面一行的样子
// if ((grade >= 90) && (grade <= 100))
// && 逻辑与运算符,它连接的两边都是真的时候,最后的结果才是真。只要两边
//有一边为假,最终的结果就为假。

第二种:switch case
涉及到的C语言关键字:switch case break default

switch (变量)				// 执行到这一句时,变量的值已经知道了
{							// switch case语句执行时,会用该变量的值一次与各个
	case 常数1:				// case后的常数去对比,试图找到第一个匹配项。
		代码段1;			    // 找到匹配的项目后,就去执行该case对应的代码段
		break;				// 如果没找到则继续下一个case,直到default。
	case 常数2:				// 如果前面的case都未匹配,则default匹配。
		代码段2;
		break;
		
	.....
	
	default:
		代码段n;
		break;
}

注意:
1、case中必须是常数,而且必须是整形(不能是float double,可以是int char)
2、一般来说,每个case中代码段后都必须有一个break;如果没有,结果可能会让你大吃一惊
3、case之后一般都会有default。语法上允许没有default,但是建议写代码时一定要写。

练习题目:
规则:9输入数字1,打印a;输入2,打印b,依次类推直到z

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

/*	
	if (num == 1)
	{
		printf("a\n");
	}
	else if (num == 2)
	{
		printf("b\n");
	}
	else if (num == 3)
	{
		printf("c\n");
	}
	else if (num == 4)
	{
		printf("d\n");
	}
	else if (num == 5)
	{
		printf("e\n");
	}
	else if (num == 6)
	{
		printf("f\n");
	}
	else if (num == 7)
	{
		printf("g\n");
	}
	else
	{
		printf("------\n");
	}
*/
	
	return 0;
}

switch case和if else对比:
1、if else适合对比条件比较复杂,但是分支比较少的情况;switch case适合那种对比条件
不复杂,但是分支数很多的情况。
2、所有的选择结构,其实都可以用if else来实现。但是只有部分才可以用switch case实现。
一般的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合使用switch case,则不得不使用if else。
2、C语言中的循环结构
C语言中常用的循环结构有三个:for循环、while循环、do while循环。
2.1、for循环

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

for循环的执行步骤:
1、先进行循环控制变量初始化
2、执行循环终止条件,如果判断结果为真,则进入第3步;如果为假则循环终止,退出。
3、执行循环体。
4、执行循环控制变量增量,转入第2步。

注意:
1、for循环中()中三部分可不可以省略?
标准的for循环,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中绝对不应该更改循环控制变量(可以引用它的值,但不应该改变它)。
练习题目:
规则:计算10!

#include <stdio.h>


int main(void)
{
	int i, val;
	
	/*
	for (i=1,val=1; i<=10; i++)
	{
		val *= i;
		printf("i = %d.\n", i);		// 使用printf进行调试
	}
	*/
	/*
	for (i=1,val=1; i<11; i++)
	{
		val *= i;					// 这种写法更普遍
		// val = val * i;			// 这种写法也可以,但是一般除了新手不采用
		printf("i = %d.\n", i);		// 使用printf进行调试
	}
	*/
	
	for (i=10,val=1; i>=1; i--)
	{
		val *= i;
		printf("i = %d.\n", i);		// 使用printf进行调试
	}
	
	
	printf("val = %d.\n", val);
	
	return 0;
}

2.2、while循环

i = 1;
sum = 0;					// 循环初始化
while (i < 100)				// 终止条件
{
	printf("i = %d.\n", i);
	sum += i;				// 循环体
	i += 2;					// 循环控制增量,属于循环体的一部分
}

while循环的执行步骤:
0、首先是循环初始化。这一部分其实不属于while循环本身。
1、先判断终止条件是否满足。如果是真,则进入第2步;否则直接退出。
2、执行循环体,然后转入第1步。
练习题目:
规则:计算100以内所有奇数的和

#include <stdio.h>


int main(void)
{
	int i, sum;
	
	i = 1;
	sum = 0;
	while (i < 100)
	{
		printf("i = %d.\n", i);
		sum += i;
		i += 2;
	}
	
	printf("sum = %d.\n", sum);
	
	return 0;
}

2.3、do while循环

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

do while循环的执行步骤:
0、首先是循环初始化。这一部分其实不属于do while循环本身。
1、执行循环体(循环控制变量的增量是循环体的一部分)
2、判断终止条件。若成立,则转入1;若不成立则退出

总结:不管哪种循环结构,都不能缺少一些要素:循环控制条件初始化,终止条件,循环控制变量增量,循环体。不同的循环方式(for和while和do while)都有这些,只是格式不同,表现形式不同,放的地方不同,可读性不同,看起来和设计起来难度不同。

while循环和do while循环哪里不同?while循环是先判断后执行,do while循环是先执行后判断等循环开始转了之后,其实是一样的。

由于还有其他的程序结构,暂时只是先介绍这些,之后如果有学习到会继续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值