❶ 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]);
}
}
}
運行示例: