程式設計入門 50 題
-
xmask
- 頂級玩家

- 文章: 1175
- 註冊時間: 週三 7月 11, 2001 8:00 am
-
yuching
- 頂級玩家

- 文章: 2572
- 註冊時間: 週三 10月 10, 2001 8:00 am
貼一下那時候我們計概期中考的題目
九九乘法表加上萬年曆
其中每行後面是程式語言的註解....
夠嚴格了吧....我們老師超狠的....
#include <stdio.h> /*標頭檔*/
int Table99(); /*選項一的程式宣告*/
int PrintCalendar(); /*選項二的程式宣告*/
/*主程式開始*/
main() /*主程式宣告*/
{
int num; /*變數宣告*/
char y; /*變數宣告*/
while (num!=3) /*當所輸入的值為3時就停止迴圈*/
{
printf("nn 歡迎使用本程式 n");
printf(" 選項1:九九乘法表 n
選項2:實用的萬年曆 n
選項3:跳出 n");
printf("請選擇 1~3 >"); /*輸入提示*/
scanf("%d",&num); /*將input放在num中*/
if (num==1) /*若所輸入的值為1則執行九九乘法表*/
while(y!='q'){ /*若是按'q'則停止列印九九乘法表*/
{printf("n");
Table99();}
scanf("%c",&y);} /*將所按的字元放到y中*/
if (num==2) /*若所輸入的值為2則執行萬年曆*/
{printf("n");
PrintCalendar();}
if (num==3) /*若所輸入的值為3符合迴圈終止條件*/
printf("n *****謝謝使用***** nn");
if(num!=1 && num!=2 && num!=3) /*若所輸入的值不是1或2或3,則要求重新輸入*/
printf("nn***你的輸入錯誤,請重新輸入*** n");
}
}
/*選項一的程式開始*/
int Table99()
{
int i,j,k; /*變數宣告*/
printf("n");
printf(" 請先按'q'再按'ENTER'即可結束nn");
for(i=1;i<=9;i=i+5) /*外面大的迴圈.並讓其下一次列印是從第6開始*/
{
for(j=1;j<=9;j++) /*每給一個j值都執行9次才結束*/
{
for(k=i;k<=i+4;k++) /*每給一個i值都執行5次才結束*/
{if (k==10) /*由於是i值一次是跳5,因此要將10排除*/
break;
printf("%2d*%2d=%2d ",k,j,k*j); /*將九九乘法表印出*/
}
printf("n");
}
printf("n");
}
}
/*選項二的程式開始*/
int PrintCalendar()
{
int day,leap,d,i,l,j,k,year,month,mon; /*變數宣告*/
char x; /*變數宣告*/
printf("請輸入西元幾年 > "); /*提示輸入格式*/
scanf("%d",&year); /*讀入年份*/
printf("請輸入1月1日為星期幾.... > n");
printf("若為星期一則輸入1,星期二則輸入2,....星期日則輸入0 >n");
scanf("%d",&day); /*讀入1月1日為星期幾*/
printf("nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn");
printf("n 在每個月之後請按'ENTER'繼續,若要結束請在12月之後先按'q'再按'ENTER'nn");
/*判斷是否為閏年*/
if(year%4==0) /*若是能被4整除則回傳leap值為1*/
{
leap=1;
if(year%100==0) /*若是能被100整除則回傳leap值為0,除非其亦能被400整除才回傳1*/
{
leap=0;
if(year%400==0)
leap=1;
}
}
else /*若不是上述各種情形則回傳leap值為0*/
leap=0;
while(x!='q') /*迴圈會繼續下去,除非按'q'鍵*/
{
for(month=1;month<=12;month++) /*月份從1月開始每繞一次即加1,直到其等於12為止*/
{
printf("n %d月 n",month); /*列印月份標頭*/
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(" 日 一 二 三 四 五 六 n");
for(i=0;i<=day-1;i++) /*判斷要從星期幾開始印,若小於所輸入之day值就一直印空白*/
{
printf(" ");
}
if(leap!=0&&month==2) /*若為閏年且月份為2,則d(即天數)為29天*/
d=29;
if(leap!=1&&month==2) /*若不為閏年且月份為2,則d(即天數)為28天*/
d=28;
if(leap==1&&month!=2&&month!=4&&month!=6&&month!=9&&month!=11)
d=31; /*若為閏年且不為2月,亦不為4,6,9,11月則天數為31天*/
if(leap==0&&month!=2&&month!=4&&month!=6&&month!=9&&month!=11)
d=31; /*若不為閏年且不為2月,亦不為4,6,9,11月則天數為31天*/
if(leap==0&&month!=2&&month!=1&&month!=3&&month!=5&&month!=7&&month!=8&&month!=10&&month!=12)
d=30; /*若不為閏年且不為2月,亦不為1,3,5,7,8,10,12月則天數為30天*/
if(leap==1&&month!=2&&month!=1&&month!=3&&month!=5&&month!=7&&month!=8&&month!=10&&month!=12)
d=30; /*若不為閏年且不為2月,亦不為1,3,5,7,8,10,12月則天數為30天*/
for(j=1;j<=d;j++) /*控制幾日,其上限即為天數*/
{
if ((day+j-1)%7==0) /*幾號加上之前所輸入由星期幾開始的數字若能被7整除即換行*/
{
printf("n");
}
printf("%4d",j); /*印出幾日*/
}
day=(day+j-1)%7; /*將最後除7後所得之餘數即下個月要從星期幾開始印*/
scanf("%c",&x);} /*和開始之while回應,scan一個x,再由while判斷是否中斷 */
}
}
九九乘法表加上萬年曆
其中每行後面是程式語言的註解....
夠嚴格了吧....我們老師超狠的....
#include <stdio.h> /*標頭檔*/
int Table99(); /*選項一的程式宣告*/
int PrintCalendar(); /*選項二的程式宣告*/
/*主程式開始*/
main() /*主程式宣告*/
{
int num; /*變數宣告*/
char y; /*變數宣告*/
while (num!=3) /*當所輸入的值為3時就停止迴圈*/
{
printf("nn 歡迎使用本程式 n");
printf(" 選項1:九九乘法表 n
選項2:實用的萬年曆 n
選項3:跳出 n");
printf("請選擇 1~3 >"); /*輸入提示*/
scanf("%d",&num); /*將input放在num中*/
if (num==1) /*若所輸入的值為1則執行九九乘法表*/
while(y!='q'){ /*若是按'q'則停止列印九九乘法表*/
{printf("n");
Table99();}
scanf("%c",&y);} /*將所按的字元放到y中*/
if (num==2) /*若所輸入的值為2則執行萬年曆*/
{printf("n");
PrintCalendar();}
if (num==3) /*若所輸入的值為3符合迴圈終止條件*/
printf("n *****謝謝使用***** nn");
if(num!=1 && num!=2 && num!=3) /*若所輸入的值不是1或2或3,則要求重新輸入*/
printf("nn***你的輸入錯誤,請重新輸入*** n");
}
}
/*選項一的程式開始*/
int Table99()
{
int i,j,k; /*變數宣告*/
printf("n");
printf(" 請先按'q'再按'ENTER'即可結束nn");
for(i=1;i<=9;i=i+5) /*外面大的迴圈.並讓其下一次列印是從第6開始*/
{
for(j=1;j<=9;j++) /*每給一個j值都執行9次才結束*/
{
for(k=i;k<=i+4;k++) /*每給一個i值都執行5次才結束*/
{if (k==10) /*由於是i值一次是跳5,因此要將10排除*/
break;
printf("%2d*%2d=%2d ",k,j,k*j); /*將九九乘法表印出*/
}
printf("n");
}
printf("n");
}
}
/*選項二的程式開始*/
int PrintCalendar()
{
int day,leap,d,i,l,j,k,year,month,mon; /*變數宣告*/
char x; /*變數宣告*/
printf("請輸入西元幾年 > "); /*提示輸入格式*/
scanf("%d",&year); /*讀入年份*/
printf("請輸入1月1日為星期幾.... > n");
printf("若為星期一則輸入1,星期二則輸入2,....星期日則輸入0 >n");
scanf("%d",&day); /*讀入1月1日為星期幾*/
printf("nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn");
printf("n 在每個月之後請按'ENTER'繼續,若要結束請在12月之後先按'q'再按'ENTER'nn");
/*判斷是否為閏年*/
if(year%4==0) /*若是能被4整除則回傳leap值為1*/
{
leap=1;
if(year%100==0) /*若是能被100整除則回傳leap值為0,除非其亦能被400整除才回傳1*/
{
leap=0;
if(year%400==0)
leap=1;
}
}
else /*若不是上述各種情形則回傳leap值為0*/
leap=0;
while(x!='q') /*迴圈會繼續下去,除非按'q'鍵*/
{
for(month=1;month<=12;month++) /*月份從1月開始每繞一次即加1,直到其等於12為止*/
{
printf("n %d月 n",month); /*列印月份標頭*/
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(" 日 一 二 三 四 五 六 n");
for(i=0;i<=day-1;i++) /*判斷要從星期幾開始印,若小於所輸入之day值就一直印空白*/
{
printf(" ");
}
if(leap!=0&&month==2) /*若為閏年且月份為2,則d(即天數)為29天*/
d=29;
if(leap!=1&&month==2) /*若不為閏年且月份為2,則d(即天數)為28天*/
d=28;
if(leap==1&&month!=2&&month!=4&&month!=6&&month!=9&&month!=11)
d=31; /*若為閏年且不為2月,亦不為4,6,9,11月則天數為31天*/
if(leap==0&&month!=2&&month!=4&&month!=6&&month!=9&&month!=11)
d=31; /*若不為閏年且不為2月,亦不為4,6,9,11月則天數為31天*/
if(leap==0&&month!=2&&month!=1&&month!=3&&month!=5&&month!=7&&month!=8&&month!=10&&month!=12)
d=30; /*若不為閏年且不為2月,亦不為1,3,5,7,8,10,12月則天數為30天*/
if(leap==1&&month!=2&&month!=1&&month!=3&&month!=5&&month!=7&&month!=8&&month!=10&&month!=12)
d=30; /*若不為閏年且不為2月,亦不為1,3,5,7,8,10,12月則天數為30天*/
for(j=1;j<=d;j++) /*控制幾日,其上限即為天數*/
{
if ((day+j-1)%7==0) /*幾號加上之前所輸入由星期幾開始的數字若能被7整除即換行*/
{
printf("n");
}
printf("%4d",j); /*印出幾日*/
}
day=(day+j-1)%7; /*將最後除7後所得之餘數即下個月要從星期幾開始印*/
scanf("%c",&x);} /*和開始之while回應,scan一個x,再由while判斷是否中斷 */
}
}
-
xmask
- 頂級玩家

- 文章: 1175
- 註冊時間: 週三 7月 11, 2001 8:00 am
-
NICKHON
- 頂級玩家

- 文章: 1164
- 註冊時間: 週三 7月 04, 2001 8:00 am
-
xmask
- 頂級玩家

- 文章: 1175
- 註冊時間: 週三 7月 11, 2001 8:00 am
誰在線上
正在瀏覽這個版面的使用者:沒有註冊會員 和 8 位訪客






