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 或者遍歷...