打印图形
题目:编写算法,打印具有下面规律的图形。
1
5 2
8 6 3
10 9 7 4
分析:
自然数在矩阵中的排列规律,主对角线1 2 3 4,作为第一层;5 6 7作为第二层;8 9 作为第三层;10作为第四层。
如果输入为n,可以看出来,第一层有n个元素,第二层n-1个,。。。
层号作为外层循环,循环变量 i 的范围1~n;
层内的序号(从左上到右下,每一层的序号都是从1开始)作为内层循环,循环变量 j 的范围是1~(n-i+1)
通过这样的循环方式,自然数就是依次加1,设定一个变量 k ,每次执行k+1操作。
怎么将数据存储到对应的数组里?
将 k 的值存入一个二维数组里,定义数组 a[100][100] 。
寻找数组元素的行号、列号与层号 i 、层内序号 j 的关系
1、每一层内元素的列号都与层内序号 j 是一一对应的,所以列下标 = j ;
2、元素的行与其所在的层号及层内序号都有关系
第一层行号的范围是1~n , 行号与 j 相同,行下标 = j ;
第二层行号的范围是2~n,行下标 = j + 1;
第三层行号的范围是3~n,行下标 = j + 2;
。
。
。
第 i 层,行号范围 i ~ n , 行下标 = j +(i -1);
第 i 层第 j 个数据的数组下标是a[j +(i -1)][ j ];
问题:
在最后结果输出的时候,没有AC,显示的错误类型是Presentation Error
presentation error 意为输出格式错误,也就是你的输出没有按照输出要求进行格式化。一般是多了或者少了一些空格或者空行。
常见的PE错误应该有以下的几种情况:
每行输出之后有空行
每两行输出之间有空行
一行中,每个输出数字(或字符串,等)之间有空格 !!(这是我出错的问题)
一行中,每个输出数字(或字符串,等)之后有空格
常见的PE错误应该有以下的几种情况:
每行输出之后有空行
每两行输出之间有空行
一行中,每个输出数字(或字符串,等)之间有空格 !!(这是我出错的问题)
一行中,每个输出数字(或字符串,等)之后有空格
解决办法:
就是在每一行输出的时候进行一下处理
每一行最后一个数输出是printf("%d",a[i][j]); (这个没有空格,就是每行最后一个数后面不能存在空格)
每一行中从第一个到倒数第二个数输出格式如下printf("%d ",a[i][j]); (这个有空格!!)

浙公网安备 33010602011771号