CCF NOI1032 菱形
问题链接:CCF NOI1032 菱形。
时间限制:
1000 ms 空间限制: 262144 KB
题目描述
输入一个正整数n,输出用1至(2n-1)的数字组成的菱形。
输入
输入正整数n。
输出
输出对应的菱形(见样例)。
样例输入
3
样例输出
1 123 12345 123 1数据范围限制
1<=n<=10
问题分析
打印菱形,关键是循环控制。程序中需要控制好总行数和每一行的字符。
每一行的字符从左到右包括空格(可能是0个)、*号字符(若干个)和换行符。
程序说明
将打印功能封装在函数diamond()中,可以使得主程序变得更加简洁。
本程序是根据原有的打印菱形字符图案程序修改而成。
这里给出了两个程序代码,应该说得80分的程序输出的结果更加优美,是真正的菱形。而正解程序(100分通过)的输出结果有时就不是菱形了。
- 循环变量与空格数,数字的函数关系。
参考链接:I00007 打菱形字符图案 。
100分通过的C语言程序:
#include <stdio.h> void diamond(int n) { int i, j; for(i=1; i<=n; i++) { for(j=1; j<=n-i; j++) printf(" "); for(j=1; j<=2*i-1; j++) printf("%d", j); printf("\n"); } for(i=1; i<=n-1; i++) { for(j=0; j<i; j++) printf(" "); for(j=1; j<2*n-2*i; j++) printf("%d", j); printf("\n"); } } int main(void) { int n; scanf("%d", &n); diamond(n); return 0; }
80分的C语言程序:
#include <stdio.h> #define BASE 10 void diamond(int n) { int i, j; for(i=1; i<=n; i++) { for(j=1; j<=n-i; j++) printf(" "); for(j=1; j<=2*i-1; j++) printf("%d", j % BASE); printf("\n"); } for(i=1; i<=n-1; i++) { for(j=0; j<i; j++) printf(" "); for(j=1; j<2*n-2*i; j++) printf("%d", j % BASE); printf("\n"); } } int main(void) { int n; scanf("%d", &n); diamond(n); return 0; }