知识点总结
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(未解决)