C语言(26)蛇形填数2

来源:互联网 发布:淘宝名字能改吗 编辑:程序博客网 时间:2024/05/21 00:18
描述
1  2  3  4  512 13 14 611 15 710 89
跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开
输入
第一行有一个N,表示N组测试数据
接下来每组数据包括一个数字X,表示三角形的边长,0< X <1000
输出
输出之后填好之后的图
样例输入
254
样例输出
1  2  3  4  512 13 14 611 15 710 891  2  3  49  10 58  67
渣渣代码:
#include <stdio.h>#include <string.h>/*蛇形填数2*/int main(int argc, char **argv){int i,j,n,m, flag, t;int buf[1000][1000]={{0}};scanf("%d", &t);while(t--){bzero(buf, sizeof(buf));scanf("%d", &n);flag=0;m=1;i=-1;j=0;while(1){//printf("test1, m=%d\n", m);while(i!=n-2*flag-1){buf[j][++i]=m++;}if(m-1==(n*(1+n)/2)){break;}//printf("test2, m=%d\n", m);while(i!=flag){buf[++j][--i]=m++;}if(m-1==(n*(1+n)/2)){break;}flag++;//printf("test3, m=%d\n", m);while(j!=flag){buf[--j][i]=m++;}if(m-1==(n*(1+n)/2)){break;}}for(i=0; i<n; i++){for(j=0; j<n-i; j++){printf("%d ", buf[i][j]);}printf("\n");}}return 0;}


原创粉丝点击