C 语言程序结构

一般的程序设计语言中的执行结构一般有三种,顺序,选择,循环。

选择结构

if else

只存在if

if(表达式)
{
    语句;
}

if else结构

if(表达式)
{
    语句;
}
else
{
    语句;
}

多层嵌套

if(表达式)
{
    语句;
}
else if(表达式)
{
    语句;
}

..............

else
{
    语句;
}

对于 else 来说,总是与前面第一个没有配对的 if 相结合,容易造成混淆。因此多数时候都会将选择结构嵌套在 else 后,写成 else if 的形式。为了防止混乱,也可以使用大括号对齐结构。

switch

if else 能够实现区间的选择,而如果要对具体的点进行选择,也可以使用 switch。

switch(表达式)
{
    case 常量 1:
        代码块 1;
        break;              // 此处的 break 不可以省略
    case 常量 2:
        代码块 2;   
        break;              // 此处的 break 不可以省略
    case 常量 3:
        代码块 3;
        break;              // 此处的 break 不可以省略
    case 常量 4:
        代码块 4;
        break;              // 此处的 break 不可以省略
    default:
        代码块;
        break;              // 此处的 break 可以省略
}
  • switch (表达式) 中的表达式,必须为整型和字符型

  • case 只能为常量表达式

  • case 分支一定要与 break 连用,从而跳出 switch,不然会连续执行后方的语句直到下一个 break。

  • 两个 case 块之间,可以不用大括号。

循环结构

循环结构用来重复执行某个代码段。循环结构中存在三个要素:循环初始条件,循环终止条件,循环变量趋向终止条件。

while

while (表达式)
{
    语句;
}

do while

do
{
    语句;
}while (表达式);
  • while 结构的循环语句在判断表达式为假时,可能一次都不执行

  • do while 结构至少执行一次,之后判断表达式真假,为真时,才继续执行

  • do while 在输入性检查方面还是比较方便的

for

for (表达式 1; 表达式 2; 表达式 3)
{
    语句;
}
  • 表达式 1 为循环初始条件,如果结构之外已经完成初始化,可以省略

  • 表达式 2 为循环终止条件,如果在循环体中存在终止条件,可以省略

  • 表达式 3 为循环趋近条件,如果在循环体中存在趋近条件,可以省略

对于所有的循环结构来说:

  • 所有循环结构的实质一样,只是实现途径不同,解决具体问题时的方便程度也不相同
  • while 一般用于循环次数不确定的情况,for 一般用于循环次数确定的情况,do while 一般用于至少需要执行一次的情况。
  • for 和 while 都是先判断再执行,do while 则是先执行再判断

当然,所有的循环都可以实现嵌套,进行嵌套时:

  • 从外到内书写循环嵌套
  • 循环控制变量可以采用“半开半闭区间”的写法,如 for (i = 0 ; i <= 10 ; i++)
  • 嵌套时,应该将最长的循环放在最内层,最短的循环放在最外层,以减少 cpu 跨切循环层的次数

程序跳转

break

用来提前结束循环或者选择(switch),只能跳出当前层循环。

continue

用来结束当前本轮循环,放弃本轮循环的后续语句,转到执行下一次循环。只能用在循环结构中。

return

结束当前函数调用,返回结果。如果当前函数是 main 函数,则该进程结束。

goto

在执行到 goto 语句时,程序会直接跳转到 goto 后紧接的标识语句处,如下所示:

#include <stdio.h>
#include <Windows.h>

int main()
{
	int i, j;
	for (i = 0; i <= 10; i++)
	{
		for (j = 0; j <= 10; j++)
		{
			printf("%d,%d\n", i, j);
			if (i >= 5)
				goto target;
		}
	}

target:printf("everying is over;");

	system("pause");
	return 0;	
}

执行结果为:

0,0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
0,10
1,0
1,1
1,2
1,3
1,4
1,5
1,6
1,7
1,8
1,9
1,10
2,0
2,1
2,2
2,3
2,4
2,5
2,6
2,7
2,8
2,9
2,10
3,0
3,1
3,2
3,3
3,4
3,5
3,6
3,7
3,8
3,9
3,10
4,0
4,1
4,2
4,3
4,4
4,5
4,6
4,7
4,8
4,9
4,10
5,0
everying is over;

但是 goto 语句在实际使用时用的并不是太多,因为会破坏结构化程序设计流程。但是 goto 跳出多重循环的效率还是挺高的,还有就是能够进行错误集中处理。

发布了77 篇原创文章 · 获赞 5 · 访问量 4890

猜你喜欢

转载自blog.csdn.net/SAKURASANN/article/details/104420677