读入N, S
两个自然数(0<=S,N<=9
),
打印相应的数字三角形(其中,S
表示确定三角形的第一个数,N
表示三角形的行数)。(
提示:左右对齐可使用cout<<left
、cout<<right)
例:当N = 4,S = 3 时 打印:
3 {首位数为奇数,左对齐}
45
678
9123
例:当N = 4,S = 4时 打印:
4 {首位数为偶数,右对齐}
65
987
4321
#include<iostream>
using namespace std;
/* This function is used to reverse the output */
void reverse(int num[], int n )
{
int pre, last = n;
int swap;
for (pre = 0; pre <= n / 2; pre++, last--) {
swap = num[pre];
num[pre] = num[last];
num[last] = swap;
}
for (swap = 0;swap <= n;swap++)
cout<<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) cout<<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 *p=new int [n];
int cnt;
for (; len > 0 ; len--) {
i = n - len + 1;
empty = n - i;
cnt = 0;
while (i-- > 0) {
while (empty-- > 0)
printf(" ");
p[cnt++] = s++;
if (s > 9)
s = 1;
}
reverse(p, --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;
}
此代码有问题