循环结构程序设计及其运用

循环语句简介

  • 在现实中有许多问题都需要有规律地重复某些操作,这些操作在计算机中表现为在满足某些条件下,某些语句会被重复执行,这就是循环。

比如:你想打印100遍“hello world”,需要用到循环语句,且条件为打印100遍就可以,这会很方便。

一、while循环语句

  • 一般结构

while(表达式)
{
语句体;
}

  • 表达式:为循环的条件。可以是C语言中任意合法的表达式,一般为关系或逻辑表达式。
  • 语句体:即为重复执行的操作,也称循环体。如果有多个语句需要“ { } ”括起来,以复合语句形式出现。
  • 其特点:是先判断条件后执行语句体。
  • while循环体内一定有改变循环条件的语句,使循环趋于结束,否则会形成死循环。

1.while语句的执行过程

首先计算表达式的值,如果表达式的值为非0(真),则执行循环体语句,然后再重新计算表达式的值,再次判断值是否为真,如为真,则继续这要执行下去,知道表达式的值为0(假),则跳出循环结构。

2.代码实现

1+2+3+4+…+99+100=?

int main()
{
    
    
	int n=0;
	int k=0;	
	while(n<100)
	{
    
    
		k += (++n);
	}
	printf("%d ",k);
	return 0;
}//输出 5050

二、do…while循环

  • 一般结构

do
{
语句体;
}while(表达式);

  • 表达式:为循环的条件。可以是C语言中任意合法的表达式,一般为关系或逻辑表达式。
  • 语句体:即为重复执行的操作,也称循环体。如果有多个语句需要“ { } ”括起来,以复合语句形式出现。
  • 其特点:先执行一次语句体然后进行判断,所以语句体至少会执行一次。
  • do…while 最后的那个分号“ :”不能省;

1.do…while语句的执行过程

首先执行do后面的语句体,然后计算while后面表达式的值,若表达式的值为非0(真),则继续执行循环语句,如此循环往复,直到表达式的值为0(假),则退出循环结构。

  • 注意
  • 1)do…while循环语句的特点是先执行循环体后判断条件,所以不管条件成不成立,都会执行一次程序,这是其与while循环语句本质上的差距
  • 2)不论循环体是一个语句还是多个语句,最好都用“{}”括起来。

2.代码实现

1+2+3+4+…+99+100=?

int main()
{
    
    
	int i = 0;
	int k = 0;

	do
	{
    
    
		k += ++i;

	} while (i<100);

	printf("%d ", k);
	return 0;
}//结果输出 5050

三、for循环语句

  • 一般结构

for(表达式1;表达式2;表达式3)
{
语句体;
}

  • 表达式1:一般用来给循环变量赋初值,所以常为赋值表达式,指定了循环的地点;如果在for循环外给循环变量赋初值,则可以省略该表达式。
  • 表达式2: 表示循环条件,决定循环是否继续或者结束,一般为关系或逻辑表达式;
  • 表达式3:一般用来修饰循环变量的值,控制变量每一次循环按照生命方式变化,从而改变表达式2的真假性(即改变循环的条件),一般为赋值语句。
  • 注:三个表达式之间用分号“;”隔开,不能使用其他符号;

1.for循环语句的执行过程

1.先执行表达式1
2.再计算表达式2,若为非0(真),则执行循环体;若为0(假),则结束循环。
3.然后计算表达式3,然后重复执行第二步

2.代码实现

1+2+3+4+…+99+100=?

int main()
{
    
    
	int i = 0;
	int j = 0;

	for (i = 0; i <= 100; i++)
	{
    
    
		j += i;
	}

	printf("%d", j);
	return 0;
}//输出 5050

3.for循环语句的几种形式

  • for语句中的3个表达式都可以根据需求省略,但是分号不能省略
    在这里举一个例子:

如果将三个表达式都省略;

int main()
{
    
    
	int i = 0 ;
	int j = 0;
	for (;;)
	{
    
    
		j += i;
		i++;
	}
	printf("%d ", j);
	return 0;
}// 死循环

  • 三个表达式都省略,无初始值,不会判断条件,循环变量不变,会死循环

三、循环的嵌套

简介

  • 在一层循环体内包含另一个循环语句,当循环嵌套时,外层循环执行一次,则内层循环从头到尾执行一遍

代码实现

  • 99乘法表
int main()
{
    
    
	int i = 0;
	int j = 0;

	for (i = 1; i <= 9; i++)
	{
    
    
		for (j = 1; j <= i; j++)
		{
    
    
			printf("%d*%d=%-2d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

99乘法表

四、break、continue和goto语句

1、break一般格式:

break语句:break;,用于强制结束循环,转向执行循环语句的下一条语句;

int main()
{
    
    	int i=0;
	for(i=0;i<=10;i++)
	{
    
    
	printf("haha");
	break;
	}
	printf("hehe");
	return 0
}//则这个循环只会打印一次haha;之后会一遇到break跳出循环,执行打印hehe;

2.continue语句一般格式

  • continue语句:continue; 结束本次循环。对于while和do…while循环,跳过循环体其余语句,转向循环终止条件的判断;对于for循环,跳过循环体其余语句,转向循环变量改变量表达式的计算。

3.goto语句和标号语句

  • goto语句格式:goto<语句标号>;

注:

  • goto语句是无条件转移语句,程序执行到goto语句时,无条件地转移到<语句标号>所指定的语句并执行。

  • <语句标号>是一个标识符,应按标识符的命名规则来命名。
    标号语句的格式:
    语句标号:

  • 标号语句放在某一句行的前面,语句标号后加冒号( : ) 。

  • 语句标号起标识语句的作用,与goto语句配合使用,是goto语句的转移目标。

int main()
{
    
    
	int i,j = 0;
	int a[3][3] = {
    
     1,2,3,4,5,6,7,8,9 };
	for (i = 0; i < 3; i++)
	{
    
    
		for (j = 0; j < 3; j++)
		{
    
    
			if (a[i][j] == 6)
			{
    
    
				goto find;
			}
		}
	}
find:
	printf("%d %d\n", i, j);
	getchar();

	return 0;
}

  • goto语句可以跳到指定位置处执行新的程序,经常用来跳出多重循环

小结

  • 注意break和continue的区分,break是结束本层循环,continue是结束本次循环。
  • while和do…while循环语句在应用时注意后者至少执行一次循环。

猜你喜欢

转载自blog.csdn.net/m0_66780695/article/details/130329187
今日推荐