#include <stdio.h>
int main()
{
int n = 9, i, j, num = 1, t;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n - i; j++)
printf("%3c", ' ');
if (i % 2 == 0)
{
for (j = 0; j < i; j++)
printf("%3d", num++);
}
else
{
t = num + i-1;
for (j = 0; j < i; j++)
{
printf("%3d", t--);
num++;
}
}
printf("\n");
}
return 0;
}
第4题:非标准答案,仅供参考。
#include <stdio.h>
//数组方法1
void func1()
{
char arr[9][40]={
" 1",
" 2 3",
" 6 5 4",
" 7 8 9 10",
" 15 14 13 12 11",
" 16 17 18 19 20 21",
" 28 27 26 25 24 23 22",
" 29 30 31 32 33 34 35 36",
"45 44 43 42 41 40 39 38 37"
}
;
for(int i=0;i<9;i++)
printf("%s\n",arr[i]);
}
//循环方法2
void func2(int n)
{
int a=0;
int b=0;
int wid;
for(int i=1;i<n+1;i++)
{
wid=3*n+2-3*i;
if(i%2==0)
for(int j=0;j<i;j++)
{
j==0 ? printf("%*d",wid,++a):printf("%3d",++a);
}
else
{
a+=i;
b=a;
for(int k=0;k<i;k++)
k==0 ? printf("%*d",wid,b--):printf("%3d",b--);
}
printf("\n");
}
}
int main(int argc, char** argv){
puts("方法一____数组直接输出:");
func1();
puts("\n方法二____循环输出:");
func2(9);
return 0;
}
有友友可以看一下第三题吗