当前位置:首页 » 编程语言 » c语言输入nn矩阵
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言输入nn矩阵

发布时间: 2022-02-27 01:31:22

c语言:输入n,怎么在屏幕上打印出N*N的矩阵

void main()
{ int i, j,n ;
scanf("%d",&n);
for( i = 0 ; i <n ; i++ )
{ for( j = 0 ; j<n ; j++ )
printf("%d ", n) ;
printf("\n") ;
}
}

❷ c语言编程:输入n,输出n行n列的矩阵

#include<stdio.h>
int maini()
{
int n,i,j,k=1;
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d ",k);
k++;
}
printf("\n");
}
}

❸ 用“C语言输入一个n×n的整数矩阵”,的方法怎么计算两个对角线的和

#include "stdio.h"
int main()
{
int a[10][10]={0};
int n,i,j,sum1=0,sum2=0;
scanf("%d",&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<n;j++)
{
if(i==j)
sum1+=a[i][j];
if(i+j==n-1)
sum2+=a[i][j];
}
printf("%d %d\n",sum1,sum2);
}
程序的主旨在for语句里面,自己多看点程序!

❹ c语言:输入是一个n*m的矩阵,要求找到其中最大的全0字矩阵。怎么算

这个题其实就是最大子矩阵,只不过把0的权设为1,其他的权设为负无穷,这样求出来的肯定是最大的全是0的矩阵,仔细看一下我得做法,用的是动态规划。
#include
<cstdio>
const
int
Max_Int
=
0xfffffff;
int
map[
301
][
301
],
opt[
301
],
n,
m,
maxn;
void
init(
)
{
int
i,
j,
t;
scanf("%d%d",
&n,
&m);
for
(
i
=
0;
i
<
n;
i++
)
for
(
j
=
0;
j
<
m;
j++
)
{
scanf("%d",
&t);
if
(
t
==
0
)
map[
i
][
j
]
=
1;
else
map[
i
][
j
]
=
-Max_Int;
}
maxn
=
0;
}
void
work(
)
{
int
i,
j,
k,
t;
for
(
i
=
0;
i
<
n;
i++
)
for
(
j
=
i;
j
<
n;
j++
)
{
t
=
0;
for
(
k
=
0;
k
<
m;
k++
)
{
if
(
j
==
i
)
opt[
k
]
=
map[
i
][
k
];
else
opt[
k
]
+=
map[
j
][
k
];
t
+=
opt[
k
];
if
(
t
<
0
)
t
=
0;
if
(
maxn
<
t
)
maxn
=
t;
}
}
}
void
print(
)
{
printf("%d",
maxn);
}
int
main(
)
{
init(
);
work(
);
print(
);
return
0;
}

❺ 急求!如何用C语言输出如下矩阵(N*N)

题目要求有一个问题,它要求N最小为2,却要求N为奇数,N为奇数应该最小为3或1才对.

按照题目要求编写的C语言矩阵程序如下

#include<stdio.h>

int main(){

int i,j,k,N,count=1;

scanf("%d",&N);

if(N<=2 || 15<N || N%2==0){

printf("请输入小于等于15且大于2的奇数");

}else{

int a[N][N];

for(i=N/2;i>=0;i--){

k=N-i-1;

for(j=N-i-2;j>=i;j--){

a[j][k]=count++;

}

for(j=N-i-2;j>=i+1;j--){

a[i][j]=count++;

}

for(j=i;j<N-i;j++){

a[j][i]=count++;

}

for(j=i+1;j<N-i;j++){

a[k][j]=count++;

}

}

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

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

printf("%-5d",a[i][j]);

}

printf(" ");

}

}

return 0;

}

❻ c语言题目:输入一个n*n矩阵个元素的值,求出两个对角线元素之和。

测试用例,时间复杂度O(n),空间复杂度O(1)

public static void main(String[] args) {

int[] res = diagonalAnd(new int[][]{{1, 2, 3}, {1, 1, 1}, {3, 2, 1}});

System.out.println(Arrays.toString(res));

}

public static int[] diagonalAnd(int[][] matrix){

int res1 = 0;//左上角-->右下角

int res2 = 0;//右上角-->左下角

int len = matrix.length;

for (int i = 0; i < len; i++) {

int n1 = matrix[i][i];

int n2 = matrix[i][len-i-1];

res1 += n1;

res2 += n2;

}
return new int[]{res1,res2};

❼ c语言编程输入一个整数n,生成一个逆时针的螺旋矩阵

#include<stdio.h>
#defineN20
voidmatrx1(inta[][N],intm,intn)
{
intd,x=0,y=0;
intright,left,up,down;
for(d=1;d<=m*n;d++)
{
a[x][y]=d;
right=y<n-1&&a[x][y+1]==0;
left=y>0&&a[x][y-1]==0;
down=x<m-1&&a[x+1][y]==0;
up=x>0&&a[x-1][y]==0;
/* if(right||down)
y++;
else
x++;
if(down||left)
x++;
elseif(left||up)
y--;
elseif(up||right)
x--;*/
if(right)
{
if(up)
x--;
else
y++;
}
elseif(left)
{
if(down)
x++;
else
y--;
}
elseif(down)
{
if(right)
y++;
else
x++;
}

elseif(up)
{
if(left)
y--;
else
x--;
}

}

}
voidoutput(inta[][N],intm,intn)
{
inti,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf(" ");
}

}
voidmain()
{
inta[N][N]={0};
intm,n;
printf("pleaseinputnum: ");
scanf("%d%d",&m,&n);
matrx1(a,m,n);
output(a,m,n);
}

❽ C语言输入N*N的矩阵,输出它的转置矩阵.矩阵的转置操作,即把矩阵的行元素变为列元素,

#include<stdio.h>
#include<math.h>
void main()
{ int a[100][100];
int n,i,j,t;

printf("--------");
scanf("%d",&n);
printf("--------");

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("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)

for(j=0;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;

}
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}

❾ C语言(指针): 编写一个函数实现n*n矩阵转置。在主函数中用scanf输入矩阵元素;将数组名作为函数实参。

好吧,简单说下:void fun( float a[][])
{ int i,j,float t;
for(i=0;a[i][0];i++)
for(j=i;a[i][j];j++)
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
这个函数的局限只限于方阵。也只能对上三角元素操作,是因为a[][]数组本身空间的限制,如果采用指针的话:
令p=a;其他注意是对内容**p之类操作即可。不过如果采用引入矩阵b来操作可以完美解决上述问题:
void fun( float a[][],float b[][])
{ int i,j;
for(i=0;a[i][0];i++)
for(j=0;a[i][j];j++)
{b[j][i]=a[i][j];
}
}
最后如果非要用a[][]输出的话,可以用b[][] 回代即可

❿ c语言输入正整数n(3<=n<=6),输出n*n的矩阵,要求对角线元素均为1,其余均为2

#include<stdio.h>

#defineN10//定义宏变量为N为10
voidmain()
{
intbb[N][N];//声明bb为NxN矩阵
inti,j,n;
printf(" 请输入n(3<=n<=6):");//其实这里可以是小于10的,因为是10x10矩阵
scanf("%d",&n);
while(n<3||n>6)//控制输入的n在3~6之间,如果不是,则重新输入。
{
printf(" 输入有误,大于等于3且小于等于6,请重新输入n:");
scanf("%d",&n);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
bb[i][j]=2;//默认所有位置用2来填充
if(i==j)
{
bb[i][j]=1;//左上角到右下角(正对角线)填1
}
if(j==n-1-i)
{
bb[i][j]=1;//右上角到左下角(正对角线)填1
}
}
}

printf(" 输出结果为: ");
for(i=0;i<n;i++)
{
printf(" ");
for(j=0;j<n;j++)
{
printf("%4d",bb[i][j]);
}
}
}

运行示例: