C語言考試矩陣轉換,如何使用C語言將鄰接矩陣轉換為可達矩陣? (緊急)。

發布 科技 2024-04-08
14個回答
  1. 匿名使用者2024-02-07

    #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]);

    注意:這個程式使用可變長度的陣列,並不適合所有的編譯器,所以執行修改後的程式來檢查你的編譯器是否支援變數陣列。

  2. 匿名使用者2024-02-06

    我想這樣做,但四樓很完美,你應該把它給他。

    如果你認為我說的是對的,。。井。。。 你可以給我加分... 井。。。

  3. 匿名使用者2024-02-05

    50分....對於這麼簡單的問題,你會用五十分......

    好。。。。附言我記得在我第一次學習帕斯卡幾天後,我說了這個問題。無非就是掃瞄、記錄......

  4. 匿名使用者2024-02-04

    你能寫清楚嗎?

  5. 匿名使用者2024-02-03

    如果陣列是正方形,則可能如下所示:

    for(int i=0;i

    如果它是乙個 m*n 矩陣,則需要重新組織陣列,但原理幾乎相同。

  6. 匿名使用者2024-02-02

    第一步,雙迴圈:鄰接矩陣+單位矩陣。

    對於 i=0 到上縣 (i++)對於 j=0 到上縣 (j++),如果 i=j,則 a[i,j]=a[i,j]+1(單位矩陣對角線上的值為 1)。

    nextj,i

    在第二步中,將得到的矩陣乘以自身(雙迴圈)。 矩陣乘法需要很多字,所以我不會寫它,但我相信你知道,至少你應該能夠查到它。

    在第三步中,將乘法後得到的矩陣與乘法前的矩陣進行比較(這也是乙個雙迴圈)。 如果相等,則完成,否則重複。

    第 2 步和第 3 步。 如果是自動化的。

    二和三的乘法和比較過程需要在外部有一層條件迴圈。

  7. 匿名使用者2024-02-01

    為你寫乙個一般的。

    如果希望其他矩陣乘以幾次,可以修改 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])

  8. 匿名使用者2024-01-31

    上面這個寫得很好,不要這樣做。

  9. 匿名使用者2024-01-30

    #include

    #include

    int main()

    for(i=0;i<=3;i++) 輸出輸入矩陣;

    printf("");}

    printf("");

    for(i=0;i<=3;i++) 轉換矩陣;

    printf("");

    system("pause");}

  10. 匿名使用者2024-01-29

    #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("");

  11. 匿名使用者2024-01-28

    這是為您分析的... 為什麼前端變了,後端輸出卻沒有變? 原因很簡單。 你已經進行了兩次交流......

    例如,當 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;}

  12. 匿名使用者2024-01-27

    這很簡單,for(i=0; i<3;i++)

    for(j=0;j<3;j++)將 j=0 更改為 j=i+1。

  13. 匿名使用者2024-01-26

    你改了2次,當然你又改回來了,呵呵

    for迴圈在執行到t[1][1]時應該終止,它是正確的。

  14. 匿名使用者2024-01-25

    就是寫乙個十進位到二進位的轉換,原文格式輸出。

相關回答
8個回答2024-04-08

它是用堆實現的,每個節點的左邊子節點是2*n,右邊的子節點是2*n+1

4個回答2024-04-08

2. 1、對 2、錯(只有乙個程式) 3、錯(不一定) 4、對。 >>>More

16個回答2024-04-08

for 迴圈的定義。

for(變數的初始值; 終止操作條件; 第乙個迴圈 i 的初始值為 0,一直執行到 i=3 停止 i=2,條件仍然滿足,迴圈體仍然執行,每次步長為 1+1 >>>More

9個回答2024-04-08

嘿! 這個函式寫起來很簡單,閣下估計剛剛學會了資料結構,現在學習排序,查詢,給我兩百分的獎勵很容易,我馬上幫你寫。 >>>More

8個回答2024-04-08

我想了很久,沒有想出來。

有乙個靜態變數 m >>>More