我有以下模式可以用 C 編程語言列印。
BBBB
BAAB
BAAB
BBBB
我已經嘗試了以下代碼,但它不起作用。
我的代碼:
#include <stdio.h>
int main() {
// Write C code here
int i,j;
for(i=1;i<=4;i )
{
for(j=1;j<=4;j )
{
if ((i==1&&j>=i)||(i==4&&j<=i)){
printf("%c",65 1);
}
else{
printf("%c",65);
}
}
printf("\n");
}
return 0;
}
但是,我得到的模式如下。
BBBB
AAAA
AAAA
BBBB
uj5u.com熱心網友回復:
您的代碼的問題是您的特殊情況只會在第一行和第四行觸發。如果我們把事情分開,我們可以更好地看到這一點。
if(
(i==1 && j>=i) || // `i==1` only on the first row
(i==4 && j<=i) // `i==4` only on the fourth row
) {
printf("%c",65 1);
}
其他每一次迭代都將使用您else只列印的塊A。
else {
printf("%c",65);
}
注意:'A'比 更容易閱讀65,也'B'比65 1.
有很多方法可以做到這一點。這是單回圈的一種優雅方式。
我們可以觀察到我們想要BBBB在開始和每第三行列印一次。如果我們從 0 開始迭代,我們可以在i可被 3 整除時執行此操作。0/3 的余數為 0。3/3 的余數為 0。我們使用模運算子 %來獲得余數。
for(int i = 0; i < 4; i ) {
if( i % 3 == 0 ) {
puts("BBBB");
}
else {
puts("BAAB");
}
}
如果您擴展回圈,這將繼續重復該模式。6/3 的余數為 0。9/3 的余數為 0。依此類推。
(您也可以從i=1和 check開始i%3 == 1,但習慣于從 0 開始計數;它使很多事情變得更容易。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/493679.html
