第四章 程序流程结构


C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
顺序结构:程序按顺序执行,不发生跳转。
选择结构:依据条件,有选择的执行相应功能。
循环结构:依据条件,循环多次执行某段代码。

选择结构

if

int main()
{
	int a = 0;
	int b = 3;
	if (a > b) 
		printf("a > b");
	if (a < b) 
		printf("a < b");
	if (a == b) 
		printf("a == b");
	putchar('\n');
	return 0;
}

if else

int main()
{
	int a = 0;
	int b = 3;
	if (a > b)
		printf("a > b");
	else {
		if (a < b)
			printf("a < b");
		else 
			printf("a == b");
	}
	putchar('\n');
	return 0;
}

if else if else if …else

int main()
{
	int a = 0;
	int b = 3;
	if (a > b)
		printf("a > b");
	else if (a < b) 
		printf("a < b");
	else
		printf("a = b");
	putchar('\n');
	return 0;
}

三目运算符 ? :

int main()
{
	int a = 0;
	int b = 3;
	printf(a > b ? "a>b": (a==b?"a==b":"a<b"));
	putchar('\n');
	return 0;
}

多重选择 switch和break

有时程序需要在多个选项中进行选择,可以使用switch语句。

switch(expression){
case label1:
	statement1;
	break;
case label2:
	statement2;
	break;
default:
}

程序根据expression的值跳转至相应的case标签处,然后执行剩下的所有语句,除非遇到break跳出switch。如果没有case标签与expression 的值匹配,控制则转至标有default的语句。 expression和case标签都必须是整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。

#include <stdio.h>

int main()
{
	char c;
	c = getchar();
	switch (c) //参数只能是整型变量
	{
	case '1':
		printf("OK\n");
		break;//switch遇到break就中断了
	case '2':
		printf("not OK\n");
		break;
	default:
		printf("are you ok?\n");
	}
	return 0;
}

循环结构

while

while循环是一种入口条件循环,即在执行循环之前就决定了是否执行循环。

某些while循环的简写形式:

while(scanf("%d", &num)); //跳过整数输入
while(getchar() != '\n'); //跳出输入行的其余部分

do…while

do…while 循环是出口条件循环,在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。

for

for(initialize; test; update)
 statement

for语句使用3个表达式控制循环过程,分别用分号隔开。initialize表达式在循环开始之前执行且只执行一次,然后对test表达式求值,如果表达式为真(或非零),执行循环一次。然后对update表达式求值,并再次检查test表达式。

for循环中的第二个表达式是否会重复执行?

#include <stdio.h>

int main()
{
	//打印乘法口诀表
	for (int i=1, j=1; i < 10; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d×%d=%2d ", j, i, j*i);
		}
		putchar('\n');
	}
	return 0;
}

跳转语句

break

在switch语句和循环语句中都可以使用break语句:
1 在switch条件语句中,终止某个case并跳出switch结构。
2 在循环语句中,中止包含它的最近的循环,执行后面的代码。

continue

立即跳过本次循环剩余部分并执行下一次循环。

goto

goto是无条件跳转语句。

label: statement;  // label 是一个标记
go label; // 跳转到label标记的位置开始执行
int main(void)
{
	// 无限打印字符串,除非手动关闭
end: printf("think you!\n");  // end 标记了一个语句
	goto end;  // 跳转到end标记的语句去执行
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值