解题思路:
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分
15 人评分
能帮我看看这个为什么不行吗? int main(){ int i,j,n,t; int a[100][100]={0}; int m=0; scanf("%d",&n); for(i=0;i<n;i++){ j=0; while(i>=0&&j<=n-1){ t=m++; a[i][j]=t; i--; j++; } } for(i=0;i<n;i++){ for(j=0;j<n-i;j++){ printf("%d",a[i][j]); } } }
#include<stdio.h> int main() { int i,j,a,hang=1,lie,sum; printf("请输入:\n"); scanf("%d",&a); for(i=1;i<=a;i++) { hang=hang+i-1; lie=hang; sum=i+1; for(j=a+1-i;j>=1;j--) { printf("%-3d",lie); lie+=sum++; } printf("\n"); } return 0; }
#include<stdio.h> int main() { int a[100][100] = { 0 }, n, j, i, k=1; scanf("%d", &n); a[0][0] = 1; for (i = 1; i < n; i++) { a[i][0] = a[i-1][0] + i; } for (i = 0; i < n; i++) { for (j = 1; j < n-i; j++) { a[i][j] = a[i][j - 1] + j + k; } k++; } for (i = 0; i < n; i++) { for (j = 0; j < n -i; j++) { printf("%d ", a[i][j]); } printf("\n"); } return 0; }
小姜骑猪 2022-07-05 00:06:39 |
我这个思路是先以第一个元素,确定第一行第一列元素,然后找到每行的关系进行赋值
2005年春浙江省计算机等级考试二级C 编程题(3),复杂度最低的方法没有之一!!!!!浏览:804 |
简单的a+b (C语言代码)浏览:643 |
打水问题 (C语言代码)浏览:1063 |
输出正反三角形 (C语言代码)浏览:779 |
Wu-求圆的面积 (C++代码)浏览:1883 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:555 |
文科生的悲哀 (C语言代码)浏览:1397 |
1128题解(返回值为数组的情况)浏览:450 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:498 |
简单的a+b (C语言代码)浏览:547 |
KRzzzz 2022-11-14 16:07:18 |
已解决0.0
KRzzzz 2022-11-14 16:07:31 |
int main(){ int i,j,n,t; int a[100][100]={0}; int m=1; scanf("%d",&n); for(t=0;t<n;t++){ j=0; i=t; while(i>=0&&j<=n-1){ a[i][j]=m++; i--; j++; } } for(i=0;i<n;i++){ for(j=0;j<n-i;j++){ printf("%d ",a[i][j]); } printf(" "); } }