1108 打印数字图形

题目来源:

https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1108

Description
从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用函数PrintLine()来输出图形中的一行,该行中的最大数字是m,函数原型如下:
PrintLine(int m);
Input
正整数n(1≤n≤9)。
Output
指定数字图形。
Sample Input
5
Sample Output
       1
     121
   12321
  1234321
123454321
  1234321
   12321
     121
       1

题意描述:
输入正整数n(1≤n≤9)
调用PrintLine()函数输出图形中的一行,该行中数字最大的是m

解题思路:
for循环,控制传递给函数该行的n为1到(m-1)*2+1,判断当i<=m时传递i,当i>m时,传递m--

程序代码:

 1 #include<stdio.h>
 2 void PrintLine(int n);
 3 int m;
 4 int main()
 5 {
 6     int i,t;
 7     while(scanf("%d",&m)!=EOF)
 8     {
 9         for(t=m,i=1;i<=(m-1)*2+1;i++)
10         {
11             if(i<=m)
12             PrintLine(i);
13             else
14             PrintLine(--t);
15         }
16     }
17     return 0;
18 }
19 void PrintLine(int n)
20 {
21     int i,t,k;
22     t=m-1+n;
23     for(k=1,i=1;i<=t;i++)
24     {
25         if(i<=m)
26         {
27             if(i>m-n)
28             printf("%d",k++);
29             else
30             printf(" ");
31         }
32         else 
33         {    n--;
34             printf("%d",n);
35         }
36     }
37     printf("\n");
38  } 

 

易错分析:
注意相关变量的变换规律

posted @ 2017-04-25 23:57  Reqaw  阅读(599)  评论(0编辑  收藏  举报