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 }
易错分析:
注意相关变量的变换规律
欢迎交流,共同进步——