-
#include
int main()
int x,y,i,j;
printf("請輸入稀疏矩陣的行和列");
scanf("%d %d",&x,&y);
int arr[x][y];
printf("請輸入稀疏矩陣");
for(i=0;ifor(j=0;jscanf("%d",arr[i][j]);
for(i=0;ifor(j=0;jif(arr[i][j])
printf("%d %d %d",i,j,a[i][j]);
注意:這個程式使用可變長度的陣列,並不適合所有的編譯器,所以執行修改後的程式來檢查你的編譯器是否支援變數陣列。
-
我想這樣做,但四樓很完美,你應該把它給他。
如果你認為我說的是對的,。。井。。。 你可以給我加分... 井。。。
-
50分....對於這麼簡單的問題,你會用五十分......
好。。。。附言我記得在我第一次學習帕斯卡幾天後,我說了這個問題。無非就是掃瞄、記錄......
-
你能寫清楚嗎?
-
如果陣列是正方形,則可能如下所示:
for(int i=0;i
如果它是乙個 m*n 矩陣,則需要重新組織陣列,但原理幾乎相同。
-
第一步,雙迴圈:鄰接矩陣+單位矩陣。
對於 i=0 到上縣 (i++)對於 j=0 到上縣 (j++),如果 i=j,則 a[i,j]=a[i,j]+1(單位矩陣對角線上的值為 1)。
nextj,i
在第二步中,將得到的矩陣乘以自身(雙迴圈)。 矩陣乘法需要很多字,所以我不會寫它,但我相信你知道,至少你應該能夠查到它。
在第三步中,將乘法後得到的矩陣與乘法前的矩陣進行比較(這也是乙個雙迴圈)。 如果相等,則完成,否則重複。
第 2 步和第 3 步。 如果是自動化的。
二和三的乘法和比較過程需要在外部有一層條件迴圈。
-
為你寫乙個一般的。
如果希望其他矩陣乘以幾次,可以修改 n 和 m 的值以包括
#define n 3
#define m 4
int array[n][m];
int turn[m][n];
void main()
printf("");
printf("轉置前的矩陣為:");
for(i=0;我呼叫矩陣轉置函式。
convert(array,turn);
printf("");
printf("轉置矩陣為:");
for(i=0;ivoid convert(int array[n][m],int turn[m][n])
-
上面這個寫得很好,不要這樣做。
-
#include
#include
int main()
for(i=0;i<=3;i++) 輸出輸入矩陣;
printf("");}
printf("");
for(i=0;i<=3;i++) 轉換矩陣;
printf("");
system("pause");}
-
#include
#define n 1024
void main()
int i, j,k,n,m,a[n][n];
printf(("請輸入 m:"
scanf("%d",&m);
printf(("請輸入 n:"
scanf("%d",&n);
printf("請輸入 %d*%d 元素:"m,n);
for(j=0;jfor(k=0;kscanf("%d",&a[j][k]);
for(i=0;ifor(j=0;jprintf("%d",a[i][j]);
printf("");
-
這是為您分析的... 為什麼前端變了,後端輸出卻沒有變? 原因很簡單。 你已經進行了兩次交流......
例如,當 i=1 和 j=3 時,你交換 t[1][3] 和 t[3][1],當程式執行到 i=3 和 j=1 時,你是否再次交換 t[3][1] 和 t[1][3]?
想想吧。。。 呵呵。。。 進行了兩次交流,所有的工作都白費了......
解決方案是定義乙個二維陣列來儲存交換的值......
#include
using namespace std;
main(),i,j;
int str[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(i=0;i<3;i++)
cout<}return 0;}
-
這很簡單,for(i=0; i<3;i++)
for(j=0;j<3;j++)將 j=0 更改為 j=i+1。
-
你改了2次,當然你又改回來了,呵呵
for迴圈在執行到t[1][1]時應該終止,它是正確的。
-
就是寫乙個十進位到二進位的轉換,原文格式輸出。
for 迴圈的定義。
for(變數的初始值; 終止操作條件; 第乙個迴圈 i 的初始值為 0,一直執行到 i=3 停止 i=2,條件仍然滿足,迴圈體仍然執行,每次步長為 1+1 >>>More