簡體   English   中英

使用for循環在C ++中打印矩陣輔助對角線?

[英]Print matrix secondary diagonal in C++ with for loop?

我有一個簡單的程序,我要在其中打印矩陣次對角線上的所有元素-這些是數字5,9,13,-21,12,但該程序無法正常工作。 我究竟做錯了什么?

#include <iostream>
#define SIZE 5
int a[SIZE][SIZE]={
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{100,-21,-70,345,77},
{12,17,765,98,55}
};

for(int i=0;i<5;i++)//The first index increases
for(int k=5;k>0;k--)//The second index decreases
cout<<a[i][k]<<endl;//Printing the element

不需要第二個for循環 您只能使用以下方法之一:

for (int i = 0; i < SIZE; i++){
    std::cout << a[i][SIZE - i - 1] << ' ';
}

這樣,您可以使用一個for循環使兩個索引相反。

好吧,你做到了

for (k=5; k>0; k--)

但沒有a[0][5]

第一行中的最后一個元素是a[0][4]因此您的數組應從4開始並下降到0

for (k=4; k>=0; k--)

順便說一句,只需1個循環即可完成。

對於第二個對角線的每個元素,索引的總和為4。

0+4=4
1+3=4
2+2=3
3+1=4
4+0=4

因此您可以將其寫為a[i][4-i]

for(i=0; i<5; i++) 
cout<<a[i][4-i]<<endl;

嘗試以這種方式做:

for(int i=0; i<5; i++) {
    cout << a[i][4-i] << endl;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM