用c編乙個程式,將二維陣列(3 3)轉換。為什麼我總是錯??

2025-01-24 16:15:15 字數 1799 閱讀 2143

1樓:快樂小佩琪

#include

void main()

int a[2][2],t,i,j;

for(i=0;i<=2;i++)

for(j=0;j<=2;j++)

scanf("%d",&a[2][2]);這句錯了而已 ,沒有把控制變數i,j寫進去,把a[2][2]改成a[i][j]就好了。

if(j>i)

t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

for(i=0;i<=2;i++)

for(j=0;j<=2;j++)

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

2樓:文靜你好

把轉換的那個過程,你重新放在另乙個迴圈看看!如果是你那樣放在一起,迴圈體語句按順序執行,第一次迴圈賦予的值到執行第二次時會被覆蓋的!

3樓:

程式沒有語法錯誤。

我改了下,你看看吧,不知道是不是你要的結果;

樓上的說那話就不好了,初學嘛,誰都有第一次。

#include

void main()

int a[3][3],t,i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(j>i)

t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

for(i=0;i<=2;i++)

for(j=0;j<=2;j++)

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

printf("");

4樓:網友

汗死,這程式寫的,。。讓我無言以對了~~~建議你該行吧。。。別學了。你這不倫不類讓我看著心口賭。。。

將二維陣列c[3][4]轉換成一維陣列[12]。

5樓:箕覓翠沈順

假設你一維陣列的大小為100

你需要把它拆分為20*5的乙個二維矩陣。

不妨這樣去實現:

假設一維陣列的下標為x,可以把它在邏輯上轉換為二維陣列的下標:m

xnx比如你要找第一行第二列的元素,那在一維陣列中就是a[1]

轉化為二維座標就是b[0][1]。

其實多維陣列和一維陣列一樣,在計算機中都是用的一段連續的記憶體。只是他們的表現形式不一樣。

另外,c裡邊沒有動態的二維陣列,第二維的大小必須指定的。

問題補充:轉換成二維陣列以後怎麼才能用更簡單的方式a[m][n]去表達呢?如果用那個表示式的話就太麻煩了,我要進行大量的操作,容易出問題。

打不出來中文直接打英文也行,我能看懂的,呵呵,謝謝啦。

答:這個可以用巨集來實現。舉個例子說,比如你定義乙個大小為100的一維陣列a,然後你需要別人輸入m=8,n=9(很多情況別人不可能按照你的意圖來剛好用m和n整除一維陣列的下表最大值,也就是說那個一維陣列只需要保證足夠大就可以了),然後你希望得到乙個8*9的二維矩陣b[8][9]。

引用這個二維矩陣的時候,直接使用b[3][4]來引用第三行第四列的元素?

用巨集定義(以下巨集定義並沒有上機除錯,只是提供思路)

#define

b[(x)][y)]

a[((x*m)+(y%n)]

解釋一下:x*m,加入你需要b[3][4],那麼就是對應一維陣列第3*8+4%9=28個元素。

輸入33的陣列,編寫程式實現,使用二維陣列程式設計實現,鍵盤輸入九9個整數,按33的矩陣輸出,並分別求出

分數有點高,不做都不行。include stdio.h void main void printf 對角線元素權和 d n sum1 printf 對角線上行 列下標均為偶數的各元素的積 d n sum2 printf 對角線上其值最大的元素值 d 行 d,列 d n max,k,k 輸入3 3的陣...

二維陣列名是不是「指標」,二維陣列名是不是一個「指標」?

理解一復 陣列名就是地址制常量,地址常量就是不能更改的地址,一旦定義了一個陣列就定了 指標是變數,這是和陣列本質的區別,他可以令他隨意等於任何一個有效的地址 理解二 個人認為陣列名不佔空間,就是個標誌,名字,和人名一樣,人名不佔空間,a 5 a作為左值,實際就是一個地址,在c語言中,廣義的說,任何名...

請問在C語言中,如何將二維陣列的值賦給一維陣列。謝謝

int i,j,a 3 4 b 12 int n 0 for i 0 i 3 i for j 0 j 4 j 就baiok了 給點du辛苦分 zhi吧dao 謝謝專 屬 可以採用兩種 來方式 1 按元素賦自 值 遍歷 bai一維陣列,並將每個元素賦值到二du維陣列的對應元zhi素上。dao 或者遍歷...