我可能在这里做了一些总的混乱,但我已经坐在这个问题了几天。到目前为止,我想出了找到相应位置的方法,但它并不安静的权利。
所以很抱歉缺乏信息或解释,希望像你这样的Maven可以帮助我。
基本上用户输入一个整数,然后必须打印出看起来像这样的2D数字数组:
input: 3 input: 4 input: 5
output: output: output:
1 2 6 1 2 6 7 1 2 6 7 15
3 5 7 3 5 8 13 3 5 8 14 16
4 8 9 4 9 12 14 4 9 13 17 22
10 11 15 16 10 12 18 21 23
11 19 20 24 25
个字符
1条答案
按热度按时间smdnsysy1#
要在矩阵中的每个位置打印的值是矩阵维度、行和列的奇怪函数。要打印的最大值是矩阵维度的平方。若要保持输出列对齐,请根据最大值中的小数位数确定列宽。
下面代码中的神奇计算确定了当前位置位于左下角到右上角的哪个子对角线上。如果位置在左上半部分,则计算当前子对角线上方三角形中的元素的数量,否则计算当前子对角线下方三角形中的元素的数量。然后,它添加当前子对角线内的位置,这取决于该子对角线的数字增加的方向。如果当前位置低于主左下到右上角对角线,则需要从最大值中减去该值。在上述过程的各个步骤中,需要加或减1的一些调整,以获得当前行和列的正确值。
下面的代码实现了上述过程:
字符串
在
printf
说明符"%*d%c"
中,*
为随后的转换指定字段宽度(d
)由int
类型的参数设置,因此整个"%*d%c"
说明符期望*
字段宽度为int
,d
转换为int
,int
用于c
转换。示例
输入:
型
输出量: