[問題] 萬年歷排版...

看板C_and_CPP (C/C++)作者 (不要迷戀哥,哥只是個傳說)時間16年前 (2009/10/22 22:47), 編輯推噓1(1016)
留言17則, 3人參與, 最新討論串1/1
就是阿..我已經成功寫出萬年歷.. 可是我想要的排版是.. 1月 2月 3月 4月 這樣的排法.. int j, k; k=0; while ( k<12 ) { printf( "\n %d 月:\n ", k+1 ); printf( " Sun Mon Tue Wed Thu Fri Sat\n" ); num = month[k]; k++; j=first_day; while( j>0 ) { printf( "%4c", ' '); j--; } j=1; while ( j<=num ) { if ( ( j+first_day-1)%7==0 && j!=1 ) printf("\n"); printf( "%4d", j ); j++; } first_day = ( first_day+num )%7; printf( "\n" ); } system("pause"); } 這樣我該從哪邊修改阿~"~? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.53.143 ※ 編輯: gene07 來自: 61.229.53.143 (10/22 22:51)

10/22 23:16, , 1F
簡單的說, 你要這樣做, 最簡單就是同時處理兩個月的資料
10/22 23:16, 1F

10/22 23:16, , 2F
然後印完兩個月份的每一列再換下一列輸出.
10/22 23:16, 2F

10/22 23:18, , 3F
或者如果環境允許用gotoxy()那也許簡單一點....
10/22 23:18, 3F

10/22 23:19, , 4F
暴力解法就是, 開一個char [80][25]的陣列, 把所有文字
10/22 23:19, 4F

10/22 23:19, , 5F
在裡面印完然後再一次全寫上螢幕, 不限定console輸出的
10/22 23:19, 5F

10/22 23:20, , 6F
話, 你的array還可以開得更大XD
10/22 23:20, 6F

10/22 23:30, , 7F
看不懂= ="
10/22 23:30, 7F

10/22 23:36, , 8F
什麼是一次同時處理2個月的資料..
10/22 23:36, 8F

10/22 23:37, , 9F
你現在迴圈是一個月一個月處理 改成一次處理兩個月
10/22 23:37, 9F

10/22 23:37, , 10F
然後再把兩個月的資料印在同一行
10/22 23:37, 10F

10/22 23:50, , 11F
我該如何下手...~"~
10/22 23:50, 11F

10/23 00:32, , 12F
好吧, 我還有個蠢方法可以用. 基本上要印一個月需要的
10/23 00:32, 12F

10/23 00:33, , 13F
最大char行與列數你可以推算, 假設要char [M][N]的大小,
10/23 00:33, 13F

10/23 00:33, , 14F
你就開char [12][M][N]來, 把每個月的結果用sprintf印
10/23 00:33, 14F

10/23 00:34, , 15F
進個別的char [M][N]去; 12個月都印完了, 再從頭到尾去
10/23 00:34, 15F

10/23 00:35, , 16F
印%s的char [0][M], "看怎麼空格", char [1][M], "\n";
10/23 00:35, 16F

10/23 00:35, , 17F
這樣子比一次處理兩個月容易做多了吧XD
10/23 00:35, 17F
文章代碼(AID): #1Au72H9J (C_and_CPP)
文章代碼(AID): #1Au72H9J (C_and_CPP)