题目:从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用函数PrintLine()来输出一行数字,函数原型:void PrintLine(int n)
输入:正整数n(1<=n<=9)
输出:指定数字图形
Exemple:
输入:5
输出:
1
121
12321
1234321
123454321
1234321
12321
121
1
解题思路:由输出我们可以知道一共有(2n-1)行(i 是第几行,j是每行的数),前n行正常,从第n+1行开始,每行的最大数是(2n-i),然后每一行的数输到 i 之后再倒着输出,直到1。
注意:输出的每行数前面还有空格!!!
My DaiMa:
#include<stdio.h>
void PrintLine(int n)
{
int i,j;
for(i=1;i<2*n;i++)
{
if(i<=n)
{
for(j=1;j<=n-i;j++)
printf(" "); //先处理空格的问题,这是输出空格的操作
for(j=1;j<=i;j++)
printf("%d",j); //这些是第 i 行第 i 个数前面的数,正常输出就行咧
for(j=i-1;j>0;j--)
printf("%d",j); //这些就是第 i +1个数的输出情况,倒着输出这些数就行咧
}
else
{
for(j=1;j<=i-n;j++)
printf(" "); //处理空格的操作
for(j=1;j<=2*n-i;j++)
printf("%d",j); //这些是第n+1行以后的数的操作
for(j=(2*n-i-1);j>0;j--)
printf("%d",j);
}
printf("\n"); //每输完一行,都要进行换行
}
}
int main()
{
int n;
scanf("%d",&n);
PrintLine(n);
return 0;
}