【项目任务】
实现九九乘法表。
【设计思路】
实现九九乘法表的流程图如图5-3所示。
图5-3 九九乘法表流程图
【程序代码】
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%-3d",j,i,i*j);
printf("\n"); /*换行,整个九九乘法表有9行,所以该语句应被执行9次*/
}
}
【运行结果】
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
【知识拓展】
1.一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。
2.在一个循环体内如果有多个语句,应该用大括号括起来,这样就构成了复合语句。
【项目任务】
输出以下图形。
*
***
*****
*******
*********
【设计思路】
从以上图形可以看出,每一行的星号数为该行行数乘以2再减1,每一行前面的空格数为5减去该行行数。用变量i控制行数,用变量j控制行前的空格数以及打印的星号数,循环5次。
【程序代码】
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++) /*打印5-i个空格*/
printf(" ");
for(j=1;j<=2*i-1;j++) /*打印2i-1个星号*/
printf("*");
printf("\n");
}
}
【运行结果】
*
***
*****
*******
*********
【知识拓展】
1.该程序中临时变量i和j不断地被重新赋值,原值均被新值所替代。
2.一般来说,对于输出图形的任务,只要认真找出其中的规律,按照规律来编写代码就相对容易了。
3.参照给出的案例,编写相应的程序代码,输出以下图形。
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
【项目任务】
输出以下杨辉三角形(要求输出6行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
【设计思路】
(1)杨辉三角形最本质的特征是:它的竖直边和斜边都是由数字1组成的,而其余数则是等于这个数正上一行与左上一行的两个数之和。从杨辉三角形的特点出发,可以总结出:第n行有n+1个值(设起始行为第0行)。
(2)对于第n行的第j个值:(n>=2)
① 当j=1或j=n+1时,其值为1。
②当j!=1且j!=n+1时,其值为第n-1行的第j-1个值与第j个值之和。
【程序代码】
#include <stdio.h>
#define N 6
main()
{
int n,i,j,k,a[N][N];
for(i=0;i<N;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<N;i++) /*从第3行开始*/
for(j=1;j<=i-1;j++) /*从第2列开始*/
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<N;i++)
{
for(j=0;j<=i;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
}
【运行结果】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
【知识拓展】
1.本程序用到了二维数组,其定义的形式为:
类型说明符 数组名[常量表达式][常量表达式]
2.程序中,首先使用一个循环体对数组中代表杨辉三角形的两边赋值为1,第二个多重循环体的作用是对数组中代表杨辉三角形的非1数字进行计算和赋值。计算完毕后,值被存储在二维数组的相应位置,第三个多重循环体的作用是打印数组的值。