當前位置:首頁 » 存儲配置 » 二維數組存儲矩陣

二維數組存儲矩陣

發布時間: 2022-05-12 07:44:43

1. c語言問題:c語言中二維數組在內存中怎樣存儲

嚴格意義上說不存在二維數組,只是數組里的每個元素是一個一維數組,而內存是一段連續的空間,根據你申請一個變數的順序按地址從低到高排,所以二維數組不可能像一個矩陣那樣在內存中排列,這就涉及到它是按行依次往下排,還是按列往下排,而在c++中是按行,既 int a[2][2]
a[0][0]
a[0][1]
a[1][0]
a[1][1]

2. java如何輸入二維矩陣並存儲到二維數組中

最不嚴謹的寫法(但是可用)下列方法可以不需知道二維數組的寬度和長度,但是不能直接保存,而是輸入完成之後才能保存,如果需要更完善的方法,則先輸入寬度與長度,然後再輸入字元,可實現:

publicstaticvoidmain(String[]args)throwsException{
Scannerscanner=newScanner(System.in);
ArrayList<String>list=newArrayList<>();
intmaxCol=0;
while(true){
Stringline=scanner.nextLine();
if(line.equals(""))
break;
intl=line.length();
if(maxCol<l){
maxCol=l;
}
list.add(line);
}
scanner.close();
char[][]chars=newchar[list.size()][maxCol];
inti=0;
for(Stringline:list){
chars[i++]=line.toCharArray();
}
System.out.println("Printyourinput:");
for(char[]aChar:chars){
System.out.println(newString(aChar));
}
}

輸入:

***@*

*@@*@

*@**@

@@@*@

@@**@

@@@@@

如果想結束,最後一行,輸入一個空格" ",然後回車結束。

3. C++定義一個二維數組,存儲3*3矩陣

一維數組 int a[3];
二維數組 int a[3][3];
三維數組 int a[3][3][3];

4. c語言中二維數組在內存中是按什麼優先存放的

C語言中
二維數組是按行優先存儲的
即 在內存中存一個二維數組時 先把數組中第一行的數組元素存完 再接著存下一行的 直到存完。
ps:定義一個二維數組 如 int a[m][n] 該數組為m行 n列的矩陣,在內存中 這樣順序存的:
a[0][0] a[0][1] ... a[0][n-1] a[1][0] a[1][1]...
不知道是不是幫到你的忙了
望採納

5. 幫忙用數據結構做下此程序,假設以二維數組存儲矩陣,試編寫演算法求出矩陣中的所有馬鞍點。謝謝。。。

public class P1{
private int[][] a=null;
private int rownum=0,colnum=0;
//存儲每行中最小的那個數的行和列,如"1,2"---第一行,第二列
private int[] rows=null;
//存儲每列中最大的那個數的行和列,如"1,2"---第一行,第二列
private int[] cols=null;
private int num=0;
P1(int[][] a,int row,int col){
this.a = a;
this.rownum=row;
this.colnum=col;
rows = new int[row];
cols = new int[col];
}

public void setMinRow(){
int min;
int minIndex;
for(int r=0;r<rownum;r++){
min = a[r][0];
minIndex=0;
for(int c=0;c<colnum;c++){
if(a[r][c]<min){
min = a[r][c];
minIndex=c;
}
}
rows[r]=minIndex;

}
}

public void setMaxCol(){
int max;
int maxIndex;
for(int c=0;c<colnum;c++){
max = a[0][c];
maxIndex=0;
for(int r=0;r<rownum;r++){
if(a[r][c]>max){
max = a[r][c];
maxIndex=r;
}
}
cols[c]=maxIndex;
}
}

public void getSaddleNUm(){
setMinRow();
setMaxCol();
for(int r=0;r<rownum;r++){
if(r==cols[rows[r]]){
num++;
System.out.println("第"+num+"個馬鞍點是行"+r+"列"+rows[r]+":"+a[r][rows[r]]);
}
}
}

public void print(){
for(int r=0;r<rownum;r++){
for(int c=0;c<colnum;c++){
System.out.print(a[r][c]+" ");
}
System.out.println("");
System.out.println("-----------");
}
}

public static void main(String[] args){
//存放矩陣的數值
int[][] a1 = {{1,5,9,10,2},{7,5,6,3,2},{11,7,9,0,12},{6,9,13,10,21},{11,4,13,40,32},{21,16,91,100,42}};
//第一個參數為存放矩陣的數組,第二個參數為矩陣行數,第三個為矩陣列數
P1 p = new P1(a1,6,5);
p.getSaddleNUm();
p.print();
System.out.println("矩陣擁有的馬鞍點數為:"+p.num);
}
}

6. 編寫程序,用二維數組存儲矩陣元素,從鍵盤輸入數據,將矩陣轉置後按行輸出

#include <stdio.h>
int main(void)
{
int a[4][4],i,j,t;
printf("請輸入矩陣:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);

printf("輸入的矩陣是:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d\t",a[i][j]);
printf("\n");
}

printf("\n轉置後的矩陣是:\n");
for(i=0;i<4;i++)
for(j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}

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

7. 用java定義一個二維數組,用於存儲1個3*3矩陣的元素值,求出該矩陣對角線元素之和並輸出結果

importjava.util.Scanner;
classMain
{
publicstaticvoidmain(String[]args)
{
double[][]matrix=newdouble[3][3];
doublesum=0;
Scannerscanner=newScanner(System.in);
System.out.println("請輸入1個3X3矩陣:");
for(inti=0;i<3;i++)
{
for(intj=0;i<3;j++)
{
matrix[i][j]=scanner.nextDouble();
if(i==j)
{
sum+=matrix[i][j];
}
}
}
System.out.println("對角線之和為:"+sum);
}
}

8. 急!!!!!在線等!C語言 定義一個二維數組來存放一個矩陣,然後將矩陣轉置輸出

/*
程式功能:
矩陣轉置
(transportation)
*//*輸入:m×n矩陣a
*//*輸出:矩陣b,b=at
*/#include
void
main()
{
int
i,
j,
m=5,
n=5;
int
b[6][6],
a[6][6];
printf("請依序輸入二維陣列a(5x5)的元素內容(可以5個一行,可以空格或回車隔開):
\n");
for
(i
=
1;
i
<=
5;
i++)
{
for
(j
=
1;
j
<=
5;
j++)
{
scanf("%d",
&a[i][j]);
}
}
printf("\n\n原始:\n");
for(i
=
1;
i
<=
m;
i
++)
{
for(j
=
1;
j
<=n;
j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("\n轉置後:\n");
for
(i
=
1;
i
<=
m;
i++)
{
for
(j
=
1;
j
<=
n;
j++)
{
b[i][j]
=
a[j][i];
/*作轉置的動作*/
printf("%4d
",
b[i][j]);
/*輸出轉置後的結果*/
}
printf("\n");
}}

9. 用C++:定義兩個二維數組用於存放矩陣

第一題
#include<iostream>
usingnamespacestd;

intmain()
{
constintrow=5;
constintcol=5;
intval=1;
inta[row][col]={0};

for(inti=0;i!=row;++i)
{
for(intj=0;j<i;++j)
{
a[i][j]=val;
}
for(intj=i;j<col;++j)
{
a[i][j]=val;
++val;
}
val=1;
}

for(inti=0;i!=row;++i)
{
for(intj=0;j!=col;++j)
{
cout<<a[i][j]<<"";
}
cout<<" ";
}

system("pause");

}

第二題

#include<iostream>
usingnamespacestd;

intmain()
{

constintrow=6;
constintcol=5;
intval[row][col]={{1001,90,80,85,0},
{1002,70,75,80,0},
{1003,65,70,75,0},
{1004,56,78,97,0},
{1005,80,90,70,0}};
for(inti=0;i<row-1;++i)
{
for(intj=1;j<col-1;++j)
{
val[i][col-1]+=val[i][j];
}
}

for(intj=1;j<col-1;++j)
{
for(inti=0;i<row-1;++i)
{
val[row-1][j]+=val[i][j];
}
}

for(inti=0;i<row;i++)
{
for(intj=0;j<col;j++)
{
cout<<val[i][j]<<" ";
}
cout<<endl;
}
system("pause");
}

10. 用java聲明Matrix類表示矩陣,使用二維數組存儲矩陣元素,實現以下方法:

public class Matrix {
private static String matrix_A;
private int mx[][], m, n;
public Matrix(int r, int c) {
m = r;
n = c;
mx = new int[m][n];
iniMatrix();
}
public Matrix() {
m = 3;
n = 3;
mx = new int[3][3];
iniMatrix();
}
public void iniMatrix()// 隨機取數
{
int i, j;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = (int) (Math.random() * 100);
}
public void tranMatrix()// 轉置矩陣
{
int i, j, t;
int mt[][] = new int[m][n];
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mt[i][j] = mx[i][j];
t = m;
m = n;
n = t;
mx = new int[m][n];
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = mt[j][i];
}
public void printMatrix()// 輸出矩陣所有值
{
int i, j;
for (i = 0; i <= m - 1; i++) {
for (j = 0; j <= n - 1; j++)
System.out.print(" " + mx[i][j]);
System.out.println();
}
}
//判斷一個矩陣是否為上三角矩陣
public boolean isUpperTriangularMatrix() {
int i, j = 0;
int c = this.mx[1][0];

for(i=1; i<this.mx.length; i++)
for(j=0; j<i; j++)
if(this.mx[i][j] != c)
break;
if(i>=this.mx.length)
return true;
return false;
}
public void addMatrix(Matrix b)// 矩陣相加
{
int i, j;
for (i = 0; i <= m - 1; i++)
for (j = 0; j <= n - 1; j++)
mx[i][j] = mx[i][j] + b.mx[i][j];
}
public static void main(String args[]) {
Matrix ma = new Matrix(4, 3);
Matrix mb = new Matrix(4, 3);
System.out.println("The matrix_A:");
ma.printMatrix();
System.out.println("The matrix_B:");
mb.printMatrix();
if(ma.isUpperTriangularMatrix())
System.out.println("上三角矩陣:\n" + ma.isUpperTriangularMatrix());
System.out.println("Matrix_A + Matrix_B:");
ma.addMatrix(mb);
ma.printMatrix();
System.out.println("Transpose Matrix_A:");
mb.tranMatrix();
mb.printMatrix();
System.out.println("Transpose Matrix_A+Matrix_B:");
mb.tranMatrix();
mb.printMatrix();
}
}

熱點內容
正版激活伺服器搭建 發布:2024-11-16 14:47:04 瀏覽:777
安卓導航cd怎麼用 發布:2024-11-16 14:37:06 瀏覽:801
mysql同步兩個資料庫 發布:2024-11-16 14:20:55 瀏覽:759
北京php培訓 發布:2024-11-16 14:20:39 瀏覽:495
新秀麗拉桿箱密碼忘了怎麼辦 發布:2024-11-16 14:05:31 瀏覽:268
為什麼有些國外安卓機不支持電信 發布:2024-11-16 13:49:26 瀏覽:504
唱吧安卓版怎麼樣 發布:2024-11-16 13:39:43 瀏覽:336
抖音思維演算法 發布:2024-11-16 13:31:02 瀏覽:592
沈陽解壓店 發布:2024-11-16 13:28:36 瀏覽:171
集團雲伺服器 發布:2024-11-16 13:26:47 瀏覽:368