明解C语言第四章4-4 多重循环

知识点总结

1.BREAK语句

1)用BREAK语句强制结束循环。

2)在多重循环中执行break语句时,仅仅会跳出内侧的循环语句,而不会一下子也跳出外侧的循环语句。

2.多重循环

分类题型

二重循环

1.显示九九乘法表

代码4-16

int main()
{
	int a, b;
	for (a = 1; a <= 9; a++)
	{
		for (b = 1; b <= 9; b++)
		{
			printf("%3d", b*a);
		}

		putchar('\n');

	}
}

2.用BREAK语句强制结束循环

例子1:在九九乘法表中仅显示结果小于40的值

int main()
{
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= 9; j++)
		{
			int seki = i * j;
			if (seki > 40)
				break;
			printf("%3d", seki);
		}
		putchar('\n');
	}
	return 0;
}

显示图形:代码清单4-17

画一个长方形:

int main()
{
	int a, b;
	printf("让我们来画1个长方形");
	printf("高:"), scanf("%d", &a);
	printf("宽:"), scanf("%d", &b);

	int g, k;
	for (g = 1; g <= a; g++)
	{
		for (k = 1; k <= b;  k++)
		{
			putchar('*');
		}
		putchar('\n');
	}
	return 0;
}

3.显示图形

1.显示直角在左下方的等腰直角三角形

int main()
{
	int a, b, c;
	printf("生成直角在左下方的等腰直角三角形");
	printf("短边: "), scanf("%d", &a);

	for (b = 1; b <= a; b++)
	{
		for (c = 1; c <= b; c++) {
			printf("* ");
		}
			putchar('\n');
	}
}

第二个for循环的循环体的最大值不能超过第一个for循环的循环体的值

2.显示直角在右下方的等腰直角三角形

int main()
{
	int a, b, c;
	printf("生成直角在右下方的等腰直角三角形。");
	printf("短边:"), scanf("%d", &c);

	//for (a = 1; a <= c; a++)
	//{
	//	for (b = 1; b <= a; b++)
	//	{
	//		printf("%cd", b);   //可不可以用变量控制整数输出的位数?
	//	}
	//	putchar('\n');
	//}

	for (a = 1; a <= c; a++)
	{
		for (b = 1; b <= c - 1; b++)
			putchar(' ');
		for (b = 1; b <= a; b++)
			putchar('*');
		putchar('\n');
	}
	return 0;
}

第一种方法限制整数位数补空,第二种方法打印空位字符。

4.多重循环

代码清单4-20

输入一个整数,显示该整数个*

int main()
{
	int a, b, c;
	do{
	
	do {
         printf("请输入1个正整数:"), scanf("%d", &a);
		if (a <= 0)
			printf("请不要输入非正整数\n");
	} while (a <= 0);

	for (b = 1; b <= a; b++)
	{
		putchar('*');
	}
	putchar('\n');
	printf("是否继续执行?[Yes 1   NO 0 ]");
	scanf("%d", &c);
	if (c == 0)
		printf("执行完毕,结束");
	}while (c == 1);

}

此段为需要重点理解的代码!该程序的结构是do语句中嵌套有do语句和for语句,将前面所学的几个程序组合在一起

5.为九九乘法表增加横纵表标题

练习4-20

6.生成1个正方形

练习4-21

int main()
{
	int a, b,c;
	printf("生成1个正方形\n正方形有几层: "), scanf("%d",& b);
	
	for (a = 1; a <= b; a++)
	{
		for (c = 1; c <= b; c++)
			printf("* ");
		putchar('\n');
	}
	printf("正方形如上图所示");
	return 0;
}

7.生成横向较长的长方形,自动识别输入数据的长短边

练习4-22   

int main()
{
	int a, b, c, d;
	int min = 0; int max = 0;
	printf("让我们来画1个长方形:\n一边:%d\n另一边:%d\n"), scanf("%d%d", &a, &b);
	if (a >= b)
		min == b, max == a;
	else
		min == a, max == b;
	for (c = 1; c <= min; c++)
		for (d = 1; d <= max; d++)
			printf("* ");
	printf("\n");

	return 0;
}

 8.分别生成直角在左上角和右上角的等腰直角三角形

练习4-23

9.画一个金字塔

练习4-24

int main()
{
	int a, b, c,d;
	printf("让我们来画一个金字塔:\n金字塔有几层:"), scanf("%d", &a);
	for (b = 1; b <= a; b++)
	{
		for (d = 1; d <= a - b; d++)
			printf(" ");
		for (c = 1; c <= (b - 1) * 2 + 1; c++) //此处的b一定是当前的行数而不是总行数(生成金字塔的!)
			//printf("%(a-1)/2d, *" );//如何用控制位数实现
			printf("*");
	
		printf("\n");
	}
	
	return 0;
}

练习4-25(未解决)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值