解题思路:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
首先定义二维数组num[5][5],根据数字递增的规律观察行列之和的关系;
a[0][0]=1(行+列=0)
a[1][0]=2 a[0][1]=3(行+列=1)
a[2][0]=4 a[1][1]=5 a[0][2]=6(行+列=2)
...
a[4][0]=11 ......a[0][4]=15(行+列=4)
由此可以看出,当我们输入n为5时,通过控制行列之和<5可以解决该问题
在行列之和为一定值的情况下,每执行一次循环,让行数减1,列数加1
注意事项:
1、输入n,控制行列之和sum<n(注意:sum不能等于n(二维数组性质))
2、初始化a=1,每执行一次循环先赋值,再执行a++
3、输出时,注意不是输出整个二维数组,只输出半个二维数组,剩下半个二维数组是没有值的。
参考代码:
#include<stdio.h> int main(void) { int i,j,sum,n; scanf("%d",&n); int a=1; int num[5][5]; for(sum=0;sum<n;sum++)//行加列=sum { for(i=sum,j=0;i>=0&&j<=sum;i--,j++)//在sum值固定的情况下,行列变换来赋值 { num[i][j]=a; a++; } } for(i=0;i<=n;i++) { for(j=0;j<=n-1-i;j++) printf("%d ",num[i][j]);//输出每一项对应的值 printf("\n");//每一行输出完后进行换行 } }
0.0分
1 人评分
点我有惊喜!你懂得!浏览:1951 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:667 |
C语言训练-计算1977!* (C语言代码)浏览:812 |
分糖果 (C++代码)浏览:1246 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:534 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:526 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:635 |
众数问题 (C语言代码)浏览:770 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:583 |
【计算两点间的距离】 (C语言代码)浏览:1413 |