今天做了一道蓝桥杯C语言题目,感觉还是有点吃力,意识到自己对C语言数组的掌握还不足,还需要更多的练习,增强对程序的敏感度。
例题:输入n 当n=5时 输出 1 2 3 4 5 当n=6 输出 1 2 3 4 5 6
12 13 14 6 15 16 17 18 7
11 15 7 14 21 29 8
10 8 13 20 9
9 12 10
11
/***********************************************************
File Name:
Author: xxx Date:2016-11-25
Description:输入n 当n=5时 输出 1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
Fuction List:
************************************************************/
#include<stdio.h>
int main()
{
int num = 1;
int n;
int a[50][50] = {0};
int i;
int j;
scanf("%d",&n);
int m = n; //将n的值赋给m 方便操作
for (i = 0; i < n; i++) //根据i的值来进行打印
{
j = i; //j为列号
while (j < m - 1) //当j加到m-2时 打印a【i】【i】到a【i】【m-2】的值
{
a[i][j++] = num++;
}
int temp = i + 1; //遇到拐点后 向左下方打印 即从a【i+1】【m-2-i】开始向左下方打印
j = m - 2 - i;
while (j >= i) //遇到第二个拐点 y<i之前 向左下方打印
{
a[temp++][j--] = num++;
}
temp = m - 2 - i; //遇到第二个拐点后 向上打印,即从a【m-2-i】【i】开始向上打印
j = i;
while (temp > i)
{
a[temp--][j] = num++;
}
m = m-1; //将一层打印完毕后,m-1 打印内一层
}
int k;
for (i = 0; i < n; i++)
{
for (k = 0; k < n - i; k++)
{
printf("%4d",a[i][k]);
}
printf("\n");
}
return 0;
}