輸出下列資料 , 當n = 6 時。
1 2 3 4 5 6
12 23 34 45 56
123 234 345 456
1234 2345 3456
12345 23456
123456
uj5u.com熱心網友回復:
i--用回圈陳述句
每次用另一個回圈變數控制輸出
uj5u.com熱心網友回復:
void PrintArrSpecially(int n){
assert(n > 0);
int Row = 1;//代表當前在第幾行
int Count = 0;//目前列印了幾個數字
int i;
do
{
for (i = 0; i < n; i++)
{
printf("%d", i+1);
Count++;//目前已經列印了Count個資料
if (i == n - 1)break;//一旦列印到最后一個元素就退出for回圈表示此行列印結束
if (Row == Count)//第n行,每塊的元素的個數就是行數。故在這個條件下做出相應的操作
{
printf("\t");//列印制表符,輸出的結果更加清晰
Count = 0;//恢復當前塊列印的個數為0
if (Row > 1)i = i - (Row - 1);//如果不是第一行那么就得移動下次塊開始得位置,注意:for回圈體完畢之后i還要加1
}
}
printf("\n");
Count = 0;//每行結束時直接跳出了for回圈,所以我們再給Count置0
Row++;//每次列印完一行,行數加1
} while (Row <= n);
}
PrintArrSpecially(6); //n=6
uj5u.com熱心網友回復:
嗯嗯,會了會了,謝謝啦
uj5u.com熱心網友回復:
初學,試著寫一下。
#include <stdio.h>
int main()
{
int i=1,j=1,n=6;
for(;i<=n;i++)
{
for(j=1;j<=n+1-i;j++)
{
switch (i)
{
case 1:
printf("%d\t", j);
break;
case 2:
printf("%d\t", j*10+(j+1));
break;
case 3:
printf("%d\t", j*100+(j+1)*10+(j+2));
break;
case 4:
printf("%d\t", j*1000+(j+1)*100+(j+2)*10+(j+3));
break;
case 5:
printf("%d\t", j*10000+(j+1)*1000+(j+2)*100+(j+3)*10+(j+4));
break;
case 6:
printf("%d\t", j*100000+(j+1)*10000+(j+2)*1000+(j+3)*100+(j+4)*10+(j+5));
break;
}
}
printf("\n");
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/146121.html
標籤:C語言
下一篇:c++結構嵌套問題
