博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
上三角
阅读量:7064 次
发布时间:2019-06-28

本文共 2901 字,大约阅读时间需要 9 分钟。

方阵的主对角线之上称为“上三角”。

请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用123….的自然数列,从左上角开始,按照顺时针方向螺旋填充。

例如:当n=3时,输出:

1 2 3

6 4

5

n=4时,输出:

1  2 3 4

9 10 5

8  6

7

n=5时,输出:

  1  2  3  4  5

 12 13 14  6 

 11 15  7

 10  8

  9

程序运行时,要求用户输入整数n3~20

程序输出:方阵的上三角部分。

要求格式:每个数据宽度为4,右对齐。

 

View Code
1 #include 
2 #include
3 4 void main() 5 {
6 int count; 7 int *array = NULL; 8 int sum = 0; //数的总和 9 int i; //总的计数 10 int flgRow = 0;//行的标志位 11 int flgInc = 0; //斜的标志位 12 int row = 0, line = 0, inc = 0; //行,列,斜的计数 13 int layer = 0; //层数 14 int k = 0, j = 0; 15 16 scanf ("%d", &count); 17 18 array = (int *)malloc(sizeof(int)*(count+1)*(count+1)); 19 for (k = 0; k <= count; k++) 20 for (j = 0; j <= count; j++) 21 array[k*(count+1)+j] = 0; 22 23 for (i = count; i > 0; i--) 24 sum += i; 25 26 k = 0; 27 j = 0; 28 for (i = 1; i <= sum; i++) 29 {
30 if (flgRow == 0 && flgInc == 0) //如果是行 31 {
32 33 if (row == 0) //判断是不是行的首位 34 {
35 layer++; 36 } 37 38 array[k*(count+1)+j] = i; 39 j++; 40 41 row++; 42 if (row >= count-(layer-1)*3) //如果结束一环 43 {
44 flgRow = 1; 45 k++; 46 j -= 2; 47 row = 0; 48 } 49 } 50 else if (flgRow == 1 && flgInc == 0) //如果是斜 51 {
52 53 array[k*(count+1)+j] = i; 54 k++; 55 j--; 56 57 inc++; //一层的数字 58 if (inc >= count-(layer-1)*3-1) //如果结束一环 59 {
60 flgInc = 1; 61 k -= 2; 62 j++; 63 inc = 0; 64 } 65 } 66 else if (flgRow ==1 && flgInc == 1)//如果是列 67 {
68 69 array[k*(count+1)+j] = i; 70 k--; 71 72 line++; //一层的数字 73 if (line >= count-(layer-1)*3-2) //如果结束一环 74 {
75 flgRow = 0; 76 flgInc = 0; 77 k++; 78 j++; 79 line = 0; 80 } 81 } 82 } 83 84 k = 0; 85 j = 0; 86 while (1)//输出数组 87 {
88 if (k == count-1) //如果结束 89 {
90 printf("\n"); 91 return; 92 } 93 else if (array[k*(count+1)+j] == 0) //如果到每一行的尾端 94 {
95 k++; 96 j = 0; 97 printf ("\n"); 98 } 99 printf ("%4d", array[k*(count+1)+j]); 100 j++; 101 } 102 }

转载于:https://www.cnblogs.com/zhangdadi/archive/2012/03/20/2409005.html

你可能感兴趣的文章
ES6语法(二) 函数
查看>>
《编程珠玑》读书笔记(2,3)
查看>>
this 绑定题目简析
查看>>
iOS标准库中常用数据结构和算法之查找
查看>>
每天学习2小时,17年前端经验分享,让你前端之路不再迷茫
查看>>
node学习记录(1)
查看>>
Eureka微服务实战-服务提供者
查看>>
简单的原生ajax
查看>>
h5开发坑点小总结
查看>>
几分钟内提升技能的8个 JavaScript 方法!
查看>>
mac显示隐藏文件
查看>>
Android 插件化原理-好文收集(陆续中。。。)
查看>>
双亲委派模型与Tomcat类加载架构
查看>>
Highcharts tooltip显示数量和百分比
查看>>
小程序兼容iphoneX(齐刘海)代码,mpvue的写法
查看>>
小米设备怎么不ROOT激活Xposed框架的步骤
查看>>
Vue Router
查看>>
你所听到的技术原理、技术本质到底是什么?
查看>>
决战燕京城-10 前往天寿山
查看>>
WebMvcTest与SpringBootTest
查看>>