打印相应数字三角形
读入N,S两个自然数(0 <= S, N <= 9), 打印相应的数字三角形(其中,S表示确定三角形的第一个数,N表示确定三角形的行数)。
例:当N = 4, S = 3时打印:
3(首位数为奇数)
4 5
6 7 8
9 1 2 3
当N = 4, S = 4时打印:
(首位数为偶数) 4
6 5
9 8 7
4 3 2 1
#include <stdio.h> /* This function is used to reverse the output */ void reverse(int num[], int cnt) { int pre, last = cnt; int swap; for (pre = 0; pre <= cnt / 2; pre++, last--) { swap = num[pre]; num[pre] = num[last]; num[last] = swap; } for (swap = 0; swap <= cnt; swap++) printf("%d ", num[swap]); } /* This function is used to process the odd s, and print the triangle */ void odd_s(int n, int s) { int i; int len = n; for (; len > 0 ; len--) { i = n - len + 1; while (i-- > 0) { printf("%d ", s++); if (s > 9) s = 1; } putchar('\n'); } } /* This function is used to process the even s, and print the triangle */ int even_s(int n, int s) { int i; int len = n; int empty; int num[n]; int cnt; for (; len > 0 ; len--) { i = n - len + 1; empty = n - i; cnt = 0; while (i-- > 0) { while (empty-- > 0) printf(" "); num[cnt++] = s++; if (s > 9) s = 1; } reverse(num, --cnt); putchar('\n'); } } int main() { int n, s; printf("Please input the number of n: \n"); scanf("%d", &n); printf("Please input the number of s: \n"); scanf("%d", &s); if (s % 2 != 0) odd_s(n, s); else even_s(n, s); return 0; }
测试结果: