首先,概括它,並在功能包裹。你想要一個有對角線的正方形。它必須是偶數個字符才能看起來正確。但是+和*可以是任何字符,並且大小可以是6或者一直到屏幕最大寬度。
所以
/* print a square with a diagonal
N - the size of the sides of the square
cha - character a (eg '+')
chb - character b (eg '*')
*/
void printdiagsquare(int N, char cha, char chb);
這就是我們的原型,這就是成功的一半。
現在我們需要檢查N是否爲正數,然後寫入循環。
讓我們先試一下。
if(N < 2 || (N % 2) == 1)
printf(N must be even\n");
現在主循環的每一行
for(i=0;i<N;i++)
{
//printline code here
printf("\n");
}
立即進行測試。它是否打印N空行?
main(void)
{
printdiagsquare(6, '+', '*');
}
現在打印行。
打印N-1'+'很容易。我們需要J作爲計數器,因爲我是外
for(j=0;j<N-1;j++)
printf("%c", cha);
但是,我們需要推廣,我們需要打印6日5,4,3等爲我增加。
So
for(j=0;j<N-i-1;j++)
printf("%c", cha);
我會留下最後一點點爲你做。沒有意義只是盲目地輸入一個函數。
請[編輯]你的問題,並添加代碼在那裏,不在評論中。 –
'for(int i = 0; i <= 5; i ++)printf(「%。* s \ n」,5,「+++++ *****」+ i);' – BLUEPIXY
程序的第一個問題是'需要做什麼',一步一步來。所以需要做什麼來輸出第一行然後輸出第二行有什麼不同呢現在,有很多方法可以實際編寫代碼。如果排列不會改變,則編碼一個包含這些值的表格,然後逐行打印表格。如果您想要靈活性,那麼請將總行作爲參數傳入。並使用循環來輸出行。 – user3629249