C编程 按反对角线走斜S形方阵,生成如以下方阵

作者&投稿:资勉 (若有异议请与网页底部的电邮联系)
C语言:编写程序求任意方阵每行、每列、两对角线一元素之和。~

先将方法告诉你:
a[n][n]
这是一个n*n的方阵

for(int i=0;i<n;i++)
s+=a[x][i];
s为第x行的和;

for(int i=0;i<n;i++)
s+=a[i][x];
s为第x列的和;

for(int j=0;j<n;j++)
s+=a[j][j];
s为对角线的和;

for(int j=0;j<n;j++)
s+=a[j][n-1-j];
s为次对角线的和;

下面是代码:
// #include"stdio.h"
// #include"stdlib.h"
// #include"time.h"
// #include"conio.h"

#include
#include
#include

int main()
{
int n,i,j,s;
int **a;

printf("请输入n值: ");
scanf("%d",&n);
fflush(stdin);

a=(int **)malloc(n*n*sizeof(int*));
for(i=0;i<n;i++)
{
a[i]=(int *)malloc(n*sizeof(int));
}

printf("请输入矩阵成员值:
");
for(i=0;i<n;i++)
{
printf("第%d行:
",i);
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
fflush(stdin);
}
}

printf("
");

printf("输入的矩阵为:
");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("
");
}

printf("
");

for(i=0;i<n;i++)
{
s=0;
for(j=0;j<n;j++) s+=a[i][j];
printf("第%d行元素之和为: %d
",i,s);
}

printf("
");

for(i=0;i<n;i++)
{
s=0;
for(j=0;j<n;j++) s+=a[j][i];
printf("第%d列元素之和为: %d
",i,s);
}

printf("
");
s=0;
for(i=0;i<n;i++)
{
s+=a[i][i];
}
printf("主对角线元素之和为: %d
",s);

printf("
");
s=0;
for(i=0;i<n;i++)
{
s+=a[i][n-1-i];
}
printf("从对角线元素之和为: %d
",s);

for(i=0;i<n;i++) free(a[i]);
free(a);


getch();
return 1;
}

#include
#define n 3

int main(void)
{
int i, j, sum;
int a[n][n];

printf("Please input a array
");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf("%d", &a[i][j]);
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%3d", a[i][j]);
}
printf("
");
}
sum = 0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if((i==j) || (i+j==n-1))
{
sum += a[i][j];
}
}
}
printf("主对角线和次对角线之和是:%d
", sum);
return 0;
}
如果不是的话你可以给我留言,要是对的话记得给我加分, 呵呵

C语言源代码:

#include "stdio.h"

#define MAX  100

void main()

{

int arr[MAX][MAX];

int N;

int i, j, k;

printf("rows : ");

scanf("%d", &N);

k = 1;

i = 0;

j = N - 1;

arr[i][j] = k;

while(k < N*N) {

/* down */

if(j>=N-1){

if(i < N-1)

i++;

else

j--;

arr[i][j] = ++k;

}

else if(j <= 0)

arr[++i][j] = ++k;

else

arr[i][--j] = ++k;

/* top-left */

while(i>0 && j>0)

arr[--i][--j] = ++k;

/* left */

if(j > 0)

arr[i][--j] = ++k;

else /* down */

arr[++i][j] = ++k;

/* down-right */

while(i<N-1 && j<N-1)

arr[++i][++j] = ++k;

}

/* output */

for(i=0; i<N; i++){

for(j=0; j<N; j++){

printf("%d", arr[i][j]);

}

printf("
");

}

}

运行测试:




谢通门县19290819988: c语言编程数字矩形方阵 -
当涂兴复方: # include int main() { int i,j; for(i=0;i<6;i++){ for(j=0;j<6;j++) printf("%d ",(i+1)*(j+1)); printf("\n"); } return 0; }

谢通门县19290819988: (1) 用C语言编程输出下列倒三角矩阵 -
当涂兴复方: #include <stdio.h>#define N 4 main() {int i,j,a[N][N]={{3,5,6,3},{0,8,9,1},{0,0,5,0},{0,0,0,7}};for(i = 0;i < N; ++i) {for(j = 0; j < N; ++j) {if(j < i) printf(" ");else printf("%3d",a[i][j]);} printf("\n"); } }//这个已经试验过了,给你的一样,若你的数有规律,或者想要随机数就用一楼的

谢通门县19290819988: 矩阵常用运算,c语言程序设计 -
当涂兴复方: #include<stdio.h>#define N 3 void main() {int i,j, sum = 0; int a[N][N], b[N][N];int max , min,row_max = 0, col_max = 0, row_min = 0,col_min = 0;printf("请输入矩阵的元素:");for( i = 0; i < N; i++ )for( j = 0; j < N; j++ ) scanf("%d",&a[i][j]); ...

谢通门县19290819988: Java或C#中解决方阵问题(S形方阵)
当涂兴复方: public class ZipZag4 { public static void main(String[] args) { int N=5; int row=0; int dig=1; int b[][]=new int[N][N]; int direct=1; //转矩 int rotation=0;//= 2*N-1; //斜排 for(rotation=0;rotation<2*N-1;rotation++){ if(rotation%2==direct){ for(row=0;row>=0&...

谢通门县19290819988: 急啊..求帮助.用C语言编程实现下面的要求: -
当涂兴复方: 这个题目其实挺复杂的,可参考如下程序:#include <stdio.h> void main() { int n,i,j,k=1,m; printf("请输入方阵的阶数:"); scanf("%d",&n); m=(1+n)*n/2; //记录数组个数 int a[20][20]; int row1=0,row2=n,col1=0,col2=n;//row1,col1分别是行...

谢通门县19290819988: c语言中魔方阵编程的思路 -
当涂兴复方: /* 所谓魔方阵是指这样的的方阵: 它的每一行、每一列和对角线之和均相等. 输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数). 例如,当n=3时,魔方阵为:8 1 63 5 74 9 2 魔方阵中各数排列规律为: ① 将“1”放在第...

谢通门县19290819988: C语言编程实现一个斜对角线旋转的立方体 -
当涂兴复方: #include <stdlib.h> 调试通过. 观看方法:方向键及小键盘区的数字键1和2控制立方体的旋转方向,"+"键和"-"键可改变立方体的颜色 (该程序使用的是一点透视) #include <graphics.h> #include <bios.h> #include <dos.h> #include <conio.h>...

谢通门县19290819988: C语言编程 求一个程序
当涂兴复方: 这个是我写的,看看能不能帮到你的忙. #include<stdio.h> #define sz 10 int main() { int n,i,j,a[sz][sz],flag; printf("input n: "); scanf("%d",&n); printf("input a[][]: \n"); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) for(j=0;j...

谢通门县19290819988: C语言编程,输出魔方阵 -
当涂兴复方: 程序代码: #include<stdio.h> #define N 16 int main() { int a[N][N]={0},i,j,k,p,n; p=1; while(p==1) { printf("Enter n(1~%d):",N); scanf("%d",&n); if((n!=0)&&(n<N)&&(n%2!=0)) p=0; } i=n+1; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++) { i=i-1; j=j+1; if((i<1...

谢通门县19290819988: 一个C语言编程
当涂兴复方: #include<stdio.h>int main( ){ int a[9][9],flag,i,j,n;scanf("%d",&n); for (i=0;i<n;i++) for (j=0;j<n;j++) scanf("%d",&a[i][j]); flag=1; for (i=0;i<n;i++) for (j=0;j<n;j++) if(i<=j&&a[i][j]==0){ flag=0; break; } if(flag) printf("YES\n"); else printf("NO\n");} ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网