2007年12月28日 星期五

C 程式設計期末作業,解題練習

作業內容:
有一數字問題,可以透過其最大值與最小值的差值,進行一連串的計算,

其計算過程如下:

一、先將該數依照數字由大排到小,形成新的數字。例如該數為14095,排列完變成95410。

二、再將該數依照數字由小排到大,形成另一個新的數字。例如該數為14095,排列完變成1459。

三、將大的數減去小的數字,所得的差值,取代該數。

四、重複一至三的步驟,直到第三步的差值已經在前面出現過為止。

輸入的值最大為六位數,當輸入為 0 時,則停止。

作業要求:顯示原始輸入數字、顯示最大數與最小數相減結果、顯示數字鏈的長度。

執行範例:
94510
Original number was 94510
95410 - 1459 = 93951
99531 - 13599 = 85932
98532 - 23589 = 74943
97443 - 34479 = 62964
96642 - 24669 = 71973
97731 - 13779 = 83952
98532 - 23589 = 74943
Chain length 7

3412
Original number was 3412
4321 - 1234 = 3087
8730 - 378 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
Chain length 4

777
Original number was 777
777 - 777 = 0
0 - 0 = 0
Chain length 2

0

期末作業解答
回到作業目錄
回到首頁

C 程式設計作業五,解題練習:解答


/* C Programming, Project 5 */
#include <stdio.h>
#include <stdlib.h>

int getZoneNo(int);
int compZoneMin(int, int, int, int);
int main(void)
{
char phoneNo[20];
double zonePrice1=5.4, zonePrice2=3.6;
int startHr, startMin, endHr, endMin;
int zone1, zone2, zoneMin1, zoneMin2;
while (scanf("%s %d %d %d %d",phoneNo, &startHr, &startMin, &endHr, &endMin)==5)
{
printf("%s %6d %6d %6d %6d\n",phoneNo, startHr, startMin, endHr, endMin);
zone1 = getZoneNo(startHr);
zone2 = getZoneNo(endHr);
if (zone1==zone2)
{
if (zone1==1)
{
zoneMin1 = compZoneMin(startHr, startMin, endHr, endMin);
zoneMin2 = 0;
}
else
{
zoneMin1 = 0;
if (startHr<endHr)
zoneMin2 = compZoneMin(startHr, startMin, endHr, endMin);
else
zoneMin2 = compZoneMin(startHr, startMin, endHr+24, endMin);
}
}
else
{
if (zone1==1)
{
if (endHr<8)
endHr += 24;
zoneMin1 = compZoneMin(startHr, startMin, 18, 0);
zoneMin2 = compZoneMin(18, 0, endHr, endMin);
}
else
{
endHr += 24;
if (startHr<8)
startHr += 24;
zoneMin1 = compZoneMin(startHr, startMin, 32, 0);
zoneMin2 = compZoneMin(32, 0, endHr, endMin);
}
}
printf("--------------------------->%6d%6d%10.0lf\n", zoneMin1, zoneMin2, zoneMin1*zonePrice1+zoneMin2*zonePrice2);
}

system("pause");
return 0;
}

int getZoneNo(int hr)
{
if (hr>=8 && hr<18)
return 1;
else
return 2;
}
int compZoneMin(int startHr, int startMin, int endHr, int endMin)
{
printf("%6d %6d %6d %6d\n",startHr, startMin, endHr, endMin);
if (startMin<endMin)
return (endHr-startHr)*60+endMin-startMin;
else
return (endHr-startHr-1)*60+endMin-startMin+60;
}

作業五題目
回到首頁

2007年12月21日 星期五

小考四(F) 解答

/* C Programming, Quiz 4F */
/*
小考題目:完成一個計算標準常態機率密度函數,normdist。
函數輸入一個 x 值,輸出機率值,公式如附圖。
並利用函數呼叫計算下列 x 值所產生的機率。
(a) x = -1
(b) x = 2.01
(c) x = 0

提示:使用 math.h 的 pow 、sqrt、exp 函數。

函數輸入值:一個 double。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出(a)、(b)和(c)的答案。
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double normdist(double);

int main(void)
{

printf("(a) ans: %lf\n", normdist(-1));
printf("(b) ans: %lf\n", normdist(2.01));
printf("(c) ans: %lf\n", normdist(0));

system("pause");
return 0;
}

double normdist(double x)
{
return 1/sqrt(2*M_PI)*exp(-x*x/2);
}

小考四(F)題目
返回小考目錄
回到首頁

小考四(E) 解答

/* C Programming, Quiz 4E */
/*
小考題目:完成一個計算帳戶餘額的函數,saving。
函數輸入四個值,本金(P)、年利率(r)、每年計算複
利次數(n),存款年數(t),完成本利最後餘額的計算,公式為
nt
A = P(1+r/n)

並利用函數呼叫計算
(a)本金12000,年利率0.08,每季複利一次,存20年。
(b)本金24000,年利率0.12,每季複利一次,存10年。

提示:使用 math.h 的 pow 函數。

函數輸入值:二個 double,即本金和利率;二個 int,即每年複利次數和年數。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出(a)和(b)的答案。
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double saving(double,double,int,int);

int main(void)
{

printf("(a) ans: %lf\n", saving(12000, 0.08, 4, 20));
printf("(b) ans: %lf\n", saving(24000, 0.12, 4, 10));

system("pause");
return 0;
}

double saving(double P, double r, int n, int t)
{
return P*pow(1+r/n, n*t);
}

小考四(E)題目
返回小考目錄
回到首頁

小考四(F) 題目

/* C Programming, Quiz 4F */
/*
小考題目:完成一個計算標準常態機率密度函數,normdist。
函數輸入一個 x 值,輸出機率值,公式如附圖。
並利用函數呼叫計算下列 x 值所產生的機率。
(a) x = -1
(b) x = 2.01
(c) x = 0

提示:使用 math.h 的 pow 、sqrt、exp 函數。

函數輸入值:一個 double。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出(a)、(b)和(c)的答案。
*/


小考四(F)解答
返回小考目錄
回到首頁

小考四(E) 題目


/* C Programming, Quiz 4E */
/*
小考題目:完成一個計算帳戶餘額的函數,saving。
函數輸入四個值,本金(P)、年利率(r)、每年計算複
利次數(n),存款年數(t),完成本利最後餘額的計算,公式為
nt
A = P(1+r/n)

並利用函數呼叫計算
(a)本金12000,年利率0.08,每季複利一次,存20年。
(b)本金24000,年利率0.12,每季複利一次,存10年。

提示:使用 math.h 的 pow 函數。

函數輸入值:二個 double,即本金和利率;二個 int,即每年複利次數和年數。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出(a)和(b)的答案。
*/

小考四(E)解答
返回小考目錄
回到首頁

2007年12月18日 星期二

C 程式設計作業五,解題練習

作業內容:
有一家電話公司的電話費率按照時間區段來計算手機費率,計費方式採分鐘計費,費率表如下:
時段8am~6pm6pm~8am
費率5.43.6


例如:電話時間從 5:58pm 到 6:04pm 則電話費為5.4*2 + 3.6*4 = 25.2元。通話費小於一分鐘不計費,通話時間不會超過24小時。

作業基本要求如下:

輸入電話通話紀錄,每行首項為撥打電話號碼,格式為xxxx-xxxxxxxx (例如:0912-345678),接著為開始時數、開始分數、結束時數、結束分數,各資料以一個空格分隔。一行只有 # 表示輸入結束。

輸出為撥出號碼、各時段時間(以分計算)、價格(四捨五入)。

輸入範例:
0912-345678 17 58 18 04
0912-345678 23 55 00 20
0911-223344 07 50 12 30
#


輸出範例:
0912-345678     2     4      25
0912-345678 0 25 90
0911-223344 270 10 1494


作業五解答
回到作業目錄
回到首頁

C 程式設計作業四,迴圈與函數應用:解題


/* C Programming, Project 4 */
#include <stdio.h>
#include <stdlib.h>

int whoWin(int, int);
int main(void)
{
int position = 0;
int computerPlay, myPlay;
int result;

srand(time(NULL));
while (position>4 && position<-4)
{
printf("%*c\n", (position+4)*5-1, 'f');
printf("| -3 | -2 | -1 | 0 | 1 | 2 | 3 |\n\n");
do
{
printf("Enter your play: scissors(1), paper(2), or rock(3) ");
scanf("%d", &myPlay);
} while (myPlay!=1 && myPlay!=2 && myPlay!=3 );
computerPlay = rand()%3 + 1;
if (computerPlay==1)
printf("Computer play: scissors\n");
else if (computerPlay==2)
printf("Computer play: paper\n");
else if (computerPlay==3)
printf("Computer play: rock\n");

result = whoWin(computerPlay, myPlay);
position += result;
}

system("pause");
return 0;
}

int whoWin(int comp, int me)
{
int winner;
if (comp==me)
{
printf("--------------- MATCH ---------------\n");
winner = 0;
}
else if (comp-me==1 || comp-me==-2)
{
printf("------------ PLAYER WIN -------------\n");
winner=1;
}
else
{
printf("----------- COMPUTER WIN ------------\n");
winner=-1;
}
return winner;
}

作業四題目
回到首頁

2007年12月7日 星期五

小考四(D) 解答


/* C Programming Quiz 4B */
/*
小考四題目:參考附圖,一矩形長為 25,寬為 10,內含二個
正三角形,邊長分別為 7, 5,計算矩形內不含三角
型之面積(即斜線面積)。必須完成兩個函數 RectangleArea
和 RTriangleArea,分別計算矩形面積和三角形面積,
並利用函數呼叫完成斜線面積計算。
提示:使用 math.h 的 sqrt 函數。
RectangleArea 函數輸入值:二個 double。
RTriangleArea 函數輸入值:一個 double。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出斜線面積。
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double RectangleArea(double, double);
double RTriangleArea(double);

int main(void)
{
double area;

area = RectangleArea(25.0, 10.0) - RTriangleArea(7.0) - RTriangleArea(5.0);
printf("Area = %lf\n", area);

system("pause");
return 0;
}

double RectangleArea(double x, double y)
{
return x*y;
}
double RTriangleArea(double x)
{
return sqrt(3)*x*x/4;
}

小考四(D)題目
返回小考目錄
回到首頁

小考四(D) 題目


/* C Programming Quiz 4D */
/*
小考四題目:參考附圖,一矩形長為 25,寬為 10,內含二個
正三角形,邊長分別為 7, 5,計算矩形內不含三角
型之面積(即斜線面積)。必須完成兩個函數 RectangleArea
和 RTriangleArea,分別計算矩形面積和三角形面積,
並利用函數呼叫完成斜線面積計算。
提示:使用 math.h 的 sqrt 函數。
RectangleArea 函數輸入值:二個 double。
RTriangleArea 函數輸入值:一個 double。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出斜線面積。
*/

#include <stdio.h>
#include <stdlib.h>
/* your program is here */

int main(void)
{
double area;

/* your program is here */


system("pause");
return 0;
}

/* your program is here */


小考四(C)解答
返回小考目錄
回到首頁

小考四(C) 解答


/* C Programming Quiz 4C */
/*
小考四題目:參考附圖,一圓半徑為 9 ,內含三個正三角形,
邊長分別為 5, 5, 3,計算圓內不含三角型之面
積(即斜線面積)。必須完成兩個函數 CircleArea
和 RTriangleArea,分別計算圓面積和三角形面積,
並利用函數呼叫完成斜線面積計算。
提示:使用 math.h 的 M_PI 與 sqrt 函數。
函數輸入值:一個 double。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出斜線面積。
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double CircleArea(double);
double RTriangleArea(double);

int main(void)
{
double area;

area = CircleArea(9.0) - 2*RTriangleArea(5.0) - RTriangleArea(3.0);
printf("Area = %lf\n", area);

system("pause");
return 0;
}

double CircleArea(double r)
{
return M_PI*r*r;
}
double RTriangleArea(double x)
{
return sqrt(3)*x*x/4;
}

小考四(C)題目
返回小考目錄
回到首頁

小考四(C) 題目


/* C programming Quiz 4C */
/*
小考四題目:參考附圖,一圓半徑為 9 ,內含三個正三角形,
邊長分別為 5, 5, 3,計算圓內不含三角型之面
積(即斜線面積)。必須完成兩個函數 CircleArea
和 RTriangleArea,分別計算圓面積和三角形面積,
並利用函數呼叫完成斜線面積計算。
提示:使用 math.h 的 M_PI 與 sqrt 函數。
函數輸入值:一個 double。
函數輸出值:一個 double。
題目輸入:無
題目輸出:印出斜線面積。
*/

#include <stdio.h>
#include <stdlib.h>
/* your program is here */

int main(void)
{
double area;

/* your program is here */


system("pause");
return 0;
}

/* your program is here */


小考四(C)解答
返回小考目錄
回到首頁

2007年12月4日 星期二

C 程式設計作業四,迴圈與函數應用

作業內容:
這次的作業是製作一個簡單的剪刀、石頭、布遊戲。
這個遊戲有點像拔河遊戲,只是拔河的雙方並不以力氣作為前進、後退的依據,而是用猜拳來決定前進後退。
在遊戲的開始,有一個旗子位於中央位置,如下圖所示。


玩家是你和電腦,以剪刀、石頭、布來決定旗子向左或向右,所以任何一方累積贏的次數超過四次,遊戲就結束。
範例畫面如下:

此作業基本要求如下:

1. 顯示旗子所在的位置,可能的位置有七個。
2. 以隨機方式,產生電腦出拳的結果。
3. 完成函數 int whoWin(int, int),這個函數傳入玩家與電腦出拳的值,輸出為輸贏的結果,有三種結果:輸、贏、平手。
4. 任一方累積贏的次數超過四次,遊戲結束。

作業四解答
回到作業目錄
回到首頁

C 程式設計作業三,迴圈與隨機數應用:解題


/* C Programming Project 3 */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main(void)
{
int dice = 0, currentPos = 0, roundNo = 0;
int money = 10000;
int lucky;
char finger[3] = "↖";

srand(time(NULL));
while (roundNo < 3)
{
printf("\n春分 機會 夏至\n\n");
printf("命運 %s 川堂\n\n", finger);
printf("冬至 大門 秋分\n");
printf("================\n");
printf("現存現金 %d 元\n\n", money);
printf("按任意鍵來丟骰子...");
getch();
system("cls");
dice = rand()%6 + 1;
printf("骰子為 %d\n\n", dice);
currentPos += dice;
if (currentPos/8 == 1)
roundNo++;
currentPos %= 8;
switch(currentPos)
{
case 0:
printf("由此過得2000元\n");
money += 2000;
break;
case 1:
printf("機會:");
lucky = rand()%4 + 1;
switch (lucky)
{
case 1:
dice = rand()%3 + 1;
printf("前進 %d 格\n", dice);
currentPos += dice;
break;
case 2:
dice = rand()%3 + 1;
printf("後退 %d 格\n", dice);
currentPos -= dice;
break;
case 3:
printf("損失 500 元\n");
money -= 500;
break;
case 4:
printf("獲利 600 元\n");
money += 600;
break;
}
break;
case 2:
printf("損失 1000元\n");
money -= 1000;
break;
case 3:
printf("獲利 1500元\n");
money += 1500;
break;
case 4:
printf("前進 二格\n");
currentPos += 2;
break;
case 5:
printf("後退 二格\n");
currentPos -= 2;
break;
case 6:
printf("損失 800元\n");
money -= 800;
break;
case 7:
printf("命運:");
lucky = rand()%4 + 1;
switch (lucky)
{
case 1:
dice = rand()%3 + 1;
printf("前進 %d 格\n", dice);
currentPos += dice;
break;
case 2:
dice = rand()%3 + 1;
printf("後退 %d 格\n", dice);
currentPos -= dice;
break;
case 3:
printf("損失 600 元\n");
money -= 600;
break;
case 4:
printf("獲利 500 元\n");
money += 500;
break;
}
break;
default:
break;
}

switch(currentPos)
{
case 0:
strcpy(finger, "↖");
break;
case 1:
strcpy(finger, "↑");
break;
case 2:
strcpy(finger, "↗");
break;
case 3:
strcpy(finger, "→");
break;
case 4:
strcpy(finger, "↘");
break;
case 5:
strcpy(finger, "↓");
break;
case 6:
strcpy(finger, "↙");
break;
case 7:
strcpy(finger, "←");
break;
default:
break;
}
}
system("pause");
return 0;
}

作業三題目
回到首頁

2007年11月26日 星期一

小考三(F) 解答


/* C Programming Quiz 3F */
/*
小考三題目:使用兩個骰子,在丟出10000次之後,計算出現
點數和為 2 或 12 的機率。
提示一:使用兩個隨機變數。
提示二:以 randNum1+randNum2 == 2 || randNum1+randNum2 == 12
來累進出現的次數,再除以10000,即可得此機率。
輸入值:無。
輸出值:一個機率值。
*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int randNum1, randNum2;
int i;
double count=0;
srand(time(NULL));
for (i=0; i<10000; i++)
{
randNum1 = rand()%6+1;
randNum2 = rand()%6+1;
if (randNum1+randNum2 == 2 || randNum1+randNum2 == 12)
count++;
}
printf("The probability of obtaining 2 or 12 is %.3lf\n", count/10000);

system("pause");
return 0;
}

小考三(F)題目
返回小考目錄
回到首頁

小考三(F) 題目


/* C Programming Quiz 3F */
/*
小考三題目:使用兩個骰子,在丟出10000次之後,計算出現
點數和為 2 或 12 的機率。
提示一:使用兩個隨機變數。
提示二:以 randNum1+randNum2 == 2 || randNum1+randNum2 == 12
來累進出現的次數,再除以10000,即可得此機率。
輸入值:無。
輸出值:一個機率值。
*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int randNum1, randNum2;

/* your program is here */


system("pause");
return 0;
}

小考三(F)解答
返回小考目錄
回到首頁

小考三(E) 解答


/* C Programming Quiz 3E */
/*
小考三題目:使用兩個骰子,在丟出10000次之後,計算出現
點數和為 6, 7, 8 的機率。
提示一:使用兩個隨機變數。
提示二:以計算點數和 6 為例,以 randNum1+randNum2 == 6
出現的次數除以10000,即可得此機率。
輸入值:無。
輸出值:三個機率值。
*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int randNum1, randNum2;
int i;
double countSix=0, countSeven=0, countEight=0;
srand(time(NULL));
for (i=0; i<10000; i++)
{
randNum1 = rand()%6+1;
randNum2 = rand()%6+1;
if (randNum1+randNum2 == 6)
countSix++;
if (randNum1+randNum2 == 7)
countSeven++;
if (randNum1+randNum2 == 8)
countEight++;
}
printf("The probability of obtaining 6 is %.3lf\n", countSix/10000);
printf("The probability of obtaining 7 is %.3lf\n", countSeven/10000);
printf("The probability of obtaining 8 is %.3lf\n", countEight/10000);


system("pause");
return 0;
}

小考三(E)題目
返回小考目錄
回到首頁

小考三(E) 題目


/* C Programming Quiz 3E */
/*
小考三題目:使用兩個骰子,在丟出10000次之後,計算出現
點數和為 6, 7, 8 的機率。
提示一:使用兩個隨機變數。
提示二:以計算點數和 6 為例,以 randNum1+randNum2 == 6
出現的次數除以10000,即可得此機率。
輸入值:無。
輸出值:三個機率值。
*/

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int randNum1, randNum2;

/* your program is here */


system("pause");
return 0;
}

小考三(E)解答
返回小考目錄
回到首頁

2007年11月20日 星期二

C 程式設計作業三 ,迴圈與隨機數應用

作業內容:
你玩過「大富翁」遊戲嗎?沒錯,這個作業就是要設計一個類似的紙上遊戲,只不過是個簡單單人版的紙上遊戲。

這個遊戲基本上有八個或以上的格子,你的棋子由某個角落出發,然後,你用骰子來決定走幾步,再根據走到的地方來決定發生什麼事情,例如有的格子會獲得固定的獎勵,有的會受到固定的懲罰,有的是機會、命運,有的是前進幾格,有的是退後幾格。

下圖是一個類似的紙上遊戲圖:

起點由春分點開始,按順時針行走,所以遊戲的基本執行畫面,會像下面範例。



光是顯示現在的位置是不夠的,因為這樣一點都沒有遊戲的樣子,像樣的遊戲至少會有些變化。這個作業,基本要求的變化如下:

1. 遊戲有一個適當的故事地點,例如:每個點的名稱是街道名、縣市名、鄉鎮名、國名、科幻遊戲地點、線上遊戲地點、或自己編輯的虛幻地名等,都可以。

2. 遊戲必須能呈現現在位置,利用適當的指標來表示玩家的現在位置。例如,上面是用箭頭來表示現在位置。你可以用相同,或別的方式來表示玩家的位置。

3. 除了機會、命運外,你必須在每一個格子設定獲利、損失,前進、或後退四種規則中的一種。在這四種規則中,獲利多少、損失多少,前進多少格、後退多少格,每種至少要有一個格子屬於該規則。

4. 有一個機會和一個命運,這時你必須以隨機的方式,選出你上述四種規則中的一種,每一個機會或命運,必須有四種以上的變化作為選擇。

5. 遊戲有一個固定的起點,在第三次經過該起點以後(繞三圈),遊戲結束。此時你必須計算玩家的獲利或損失的情形,並列印出來。

作業三解答
回到作業目錄
回到首頁

2007年11月17日 星期六

Problem 136 Ugly Numbers,難看的數字

這題要列出的數字,其因數只能有2, 3, 或 5,所以,數字一定是 2^x * 3^y * 5^z的組合,參考他的解答,我使用一個 minUgly(2*x, 3*y, 5*z, &idx)的方式,注意這裡的x,y,z必須也是Ugly number,所以就必須有個index將uglyNum陣列中的數字一個個叫出來。 &idx是告訴你三個中,哪一個最小,這時才能將x,y,或z換大一點的Ugly number。
注意:不要用//,這個註解會產生compilation error。

uglyNum[0] = 1;
while (i<1500)
{
min = minUgly(2*fac[0], 3*fac[1], 5*fac[2], &idx);
if (min>oldmin)
i++;
uglyNum[i] = min;
maxFac[idx]++;
fac[idx] = uglyNum[maxFac[idx]];
oldmin = min;
}

p136題目連結
回ACM題庫目錄
回首頁

2007年11月15日 星期四

Problem 113 Power of Cryptography,密碼的力量

這題在其解說網頁就說了,用exp(log(p)/n))的公式來解,他給的題目是可以求出整數的根值,重點是要列印出整數來。雖然仍然用double 宣告,但是在printf 中以 %.0lf 列印,就可以讓小數消失了。程式碼參考如下:

double n, p, k;
while (scanf("%lf %lf", &n, &p) == 2) {
k = exp(log(p)/n);
printf("%.0lf\n", k);
}

p113題目連結
回ACM題庫目錄
回首頁

2007年11月12日 星期一

C 程式設計作業二,選擇邏輯與迴圈應用:解題


這題主要在能解決前兩天的訂貨能被納進來計算,且能更新。所以我們使用兩個分別處理兩天的訂貨量,如下:
arrivedNum = firstOrder;
firstOrder = secondOrder;

如此第一天的的訂貨為到貨量,第二天的訂貨變成第一天的訂貨,而第二天的訂貨則是今天計算後再決定


/* C Programming, Project 2 */
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int orderNum, stockNum, arrivedNum, soldNum;
int orderMax = 500;
int orderMin = 300;
int firstOrder = 0;
int secondOrder = 0;
int i;

stockNum = 450;
for (i=1; i<=10; i++) {
printf("Enter the sold amount: ");
scanf("%d", &soldNum);
arrivedNum = firstOrder;
firstOrder = secondOrder;
stockNum = stockNum + arrivedNum - soldNum;
if (stockNum < 300)
secondOrder = 500 - stockNum;
else
secondOrder = 0;
printf("Order = %3d, Arrived = %3d, Stock = %3d\n", secondOrder, arrivedNum, stockNum);
}

system("pause");
return 0;
}

作業二題目
回到首頁

2007年11月8日 星期四

C 程式設計作業二,選擇邏輯與迴圈應用

作業內容:
貴公司販售單一進口商品,每週四為存貨計算時間,並紀錄每週的銷售量與到貨量,每次清點完存貨,若發現存貨低於最低安全存量(訂購點)時,則會交給採購部門下訂單進行訂購工作,如有訂購需求,在週五會發出訂單,每次訂購量以到達標準存量來計算,通常在10天後(下下個星期一),訂貨準時到達。

資訊長(CIO)在週末時告訴你一件不幸的事,他說,清點存貨的員工,電腦中毒,有關十周之內的存貨與訂貨資料都消失了,只剩銷售量的資訊, 所以要求你設計一個程式可用銷售量來計算存貨與訂貨的資料。

基本資訊如下(前四項為固定不變,第五項為假設資訊):
一、最低安全存量為 300 件。
二、標準存量為 500 件。
三、十周之前的存貨量為 450 件。
四、前十二、十一周的訂貨量均為 0。
五、假設前十周的銷售量為 160, 90, 115, 170, 150, 140, 165, 155, 185, 175。

在你經過紙上計算,你所獲得的計算結果如下:



前週數121110987654321
銷售量  16090115170150140165155185175
訂貨量002103002050003254803400
到貨量  00210300205000325480
存貨量 45029020029542548034017520160465


紅色部分是經過上述所提供的基本資訊所得到的計算結果。

請完成你的作業,並能輸入不同的十周銷售量進行類似的計算,輸出類似紅色部分的相關資料。

測試方式:
測試題:銷售量 180, 135, 120, 155, 110, 160, 155, 90, 125, 145。

作業二解答
回到作業目錄
回到首頁

小考三(D) 解答


/* C Programming Quiz 3D */
/*
小考題目:有一種外來植物,高度為 H,每月生長高度
為前一個月的 1.5 倍,若生長高度大於 20
公尺時,則次月停止生長。請用 C 語言寫
一個計算其最終高度的程式。例如:初始高度
為 4 公尺,則第一個月長高 6 公尺,第二個
月長高 9 公尺,第三個月長高 13.5 公尺,
第四個月長高 20.25 公尺,第五個月停止
生長,所以總高度為
4 + 6 + 9 + 13.5 + 20.25 = 52.75 公尺。
提示一:使用 scanf 輸入高度,輸出為最終高度。
提示二:do while 迴圈會較容易。
提示三:初始高度小於 10 公尺。


*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
float Height;
float nextGrow;
printf("Enter initial height: ");
scanf("%f", &Height);
nextGrow = Height;
do
{
nextGrow *= 1.5;
Height += nextGrow;
} while (nextGrow <= 20);
printf("Final height = %f\n", Height);

system("pause");
return 0;
}

小考三(D)題目
返回小考目錄
回到首頁

小考三(D) 題目


/* C Programming Quiz 3D */
/*
小考題目:有一種外來植物,高度為 H,每月生長高度
為前一個月的 1.5 倍,若生長高度大於 20
公尺時,則次月停止生長。請用 C 語言寫
一個計算其最終高度的程式。例如:初始高度
為 4 公尺,則第一個月長高 6 公尺,第二個
月長高 9 公尺,第三個月長高 13.5 公尺,
第四個月長高 20.25 公尺,第五個月停止
生長,所以總高度為
4 + 6 + 9 + 13.5 + 20.25 = 57.75 公尺。
提示一:使用 scanf 輸入高度,輸出為最終高度。
提示二:do while 迴圈會較容易。
提示三:初始高度小於 10 公尺。

*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
float Height;

/* your program is here */


system("pause");
return 0;
}

解答下載
返回小考目錄
回到首頁

小考三(C) 解答


/* C Programming Quiz 3C */
/*
小考題目:有一種外來植物,高度為 H,每月生長高度
為前一個月的一半,若生長高度小於一公尺,
則次月停止生長。請用 C 語言寫一個計算
其最終高度的程式。例如:初始高度為 7.0 公尺
,則第一個月長高 3.5 公尺,第二個月長高 1.75
公尺,第三個月長高 0.875 公尺,第四個月停止
生長,所以總高度為
7.0 + 3.5 + 1.75 + 0.875 = 13.125 公尺。
提示一:使用 scanf 輸入高度,輸出為最終高度。
提示二:do while 迴圈會較容易。
提示三:初始高度大於 1 公尺。

*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
float Height;
float nextGrow;
printf("Enter initial height: ");
scanf("%f", &Height);
nextGrow = Height;
do
{
nextGrow /= 2.0;
Height += nextGrow;
} while (nextGrow >= 1);
printf("Final height = %f\n", Height);

system("pause");
return 0;
}

小考三(C)題目
返回小考目錄
回到首頁

小考三(C) 題目


/* C Programming Quiz 3C */
/*
小考題目:有一種外來植物,高度為 H,每月生長高度
為前一個月的一半,若生長高度小於一公尺,
則次月停止生長。請用 C 語言寫一個計算
其最終高度的程式。例如:初始高度為 7.0 公尺
,則第一個月長高 3.5 公尺,第二個月長高 1.75
公尺,第三個月長高 0.875 公尺,第四個月停止
生長,所以總高度為
7.0 + 3.5 + 1.75 + 0.875 = 13.125 公尺。
提示一:使用 scanf 輸入高度,輸出為最終高度。
提示二:do while 迴圈會較容易。
提示三:初始高度大於 1 公尺。

*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
float Height;

/* your program is here */


system("pause");
return 0;
}

解答下載
返回小考目錄
回到首頁

2007年11月7日 星期三

C語言教學影片(二),運用重導(redirect)與管線(pipeline),便於大量資料輸入

教學內容
在這段C語言教學影片中,將介紹簡單的DOS指令,並運用重導(redirect)與管線(pipeline)的概念,讓你在面對大量資料輸入時,能快速處理,免除一個一個進行鍵盤輸入才能完成測試的困擾。

DOS 指令用在「命令提示字元」,或稱Console、shell、操控台等,這裡介紹的基本指令包括:
cd (change directory),改變目錄。
dir ,顯示目錄中的檔案與子目錄名稱。
type ,顯示檔案內容。

重導 (redirect),將某個資料流導向到使用者指定的地方,使用 '<' 或 '>' 指令。
管線 (pipeline),將一個程式執行的輸出導向成為另一個程式執行所需的輸入,使用 '|' 指令。



若無法播放,請由此處下載
其他影片下載:
C語言教學影片(一),初次使用dev-c++

2007年11月4日 星期日

Problem 591 Box of Bricks,方塊擺放問題

因為已經知道要分成幾堆,把總高度除以堆數就知道每一堆的平均高度為多少,接著只要把所有高於平均高度的差加起來就是答案了。

for(i=0;i<n;i++)
{
// every one height
scanf("%d", &m[i]);
// total
h+=m[i];
}

// average
h /= n;
for(i=0;i<n;i++)
{
if(m[i] > h)
moves += m[i]-h;
}

Solved by Wellwind
p591 題目連結
回ACM題庫目錄
回首頁

Problem 579 ClockHands,分針與時針夾角問題


這題出現在之前的程式設計比賽中,控制輸入可以用分號隔開
scanf("%d:%d", &h, &m);

接著只要知道

1小時 = 360度 / 12 = 30度
1分鐘 = 30度 / 5 = 6度

就可以把題目算出來,要注意分針在走的時候時針也有小幅度的在走,不要忘記算進去;注意不要時針跟分針接近的時候很容易做出超出範圍的答案

degree_h = 30.0 * (h+m/60.0);
degree_m = 6.0*m;

ans = degree_m - degree_h;
if(ans < 0)
ans = -ans;
if(ans > 180)
ans = 360-ans;

Solved by Wellwind
p579目連結
回ACM題庫目錄
回首頁

Problem 272 TeX Quotes,單雙引號問題處理


這題非常簡單,只要一直讀入字元,如果是雙引號(")就判斷出現是第奇數次還是偶數次,如果是奇數次就輸出(``);如果是偶數次,輸出('');其他狀況則直接把字元輸出就好

if(c == '"')
{
if(i==1)
{
putchar('`');
putchar('`');
i=0;
}
else if(i==0)
{
putchar('\'');
putchar('\'');
i=1;
}
}
else
putchar(c);

Solved by Wellwind
p272題目連結
回ACM題庫目錄
回首頁

C 程式設計作業一(B),選擇邏輯與輸出、輸入應用:解題


/* C Programming, Project 1B */
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int price, shampoo_L, shampoo_S, conditioner_L, conditioner_S;
int free_S, isOdd;

printf("Enter large shampoo number:");
scanf("%d", &shampoo_L);
printf("Enter large conditioner number:");
scanf("%d", &conditioner_L);
printf("Enter small shampoo number:");
scanf("%d", &shampoo_S);
printf("Enter small conditioner number:");
scanf("%d", &conditioner_S);

free_S = (shampoo_L+conditioner_L)/2;
isOdd = (shampoo_L+conditioner_L)%2;
if (isOdd==1)
{
if (shampoo_L>0)
{
if (conditioner_S > free_S)
{
conditioner_S -= free_S;
free_S = 0;
} else {
free_S -= conditioner_S;
conditioner_S = 0;
}
if (free_S > 0)
{
if (shampoo_S > free_S)
shampoo_S -= free_S;
else
shampoo_S = 0;
}
} else if (conditioner_L>0) {
if (shampoo_S > free_S)
{
shampoo_S -= free_S;
free_S = 0;
} else {
free_S -= shampoo_S;
shampoo_S = 0;
}
if (free_S > 0)
{
if (conditioner_S > free_S)
conditioner_S -= free_S;
else
conditioner_S = 0;
}
}
} else {
if (shampoo_S>0) {
if (shampoo_S > free_S)
{
shampoo_S -= free_S;
free_S = 0;
} else {
free_S -= shampoo_S;
shampoo_S = 0;
}
if (free_S > 0)
{
if (conditioner_S > free_S)
conditioner_S -= free_S;
else
conditioner_S = 0;
}
} else if (conditioner_S>0) {
if (conditioner_S > free_S)
{
conditioner_S -= free_S;
free_S = 0;
} else {
free_S -= conditioner_S;
conditioner_S = 0;
}
if (free_S > 0)
{
if (shampoo_S > free_S)
shampoo_S -= free_S;
else
shampoo_S = 0;
}
}
}
if (isOdd==1 && ((shampoo_L>0 && shampoo_S>0) || (conditioner_L>0 && conditioner_S>0)))
price = (shampoo_L+conditioner_L)*280+(shampoo_S+conditioner_S-1)*150+150*0.6;
else
price = (shampoo_L+conditioner_L)*280+(shampoo_S+conditioner_S)*150;

if (shampoo_L+conditioner_L >=6)
price *= 0.95;

printf("Price checkout:\n\n");
printf("Large shampoo x %d\n", shampoo_L);
printf("Large conditioner x %d\n", conditioner_L);
printf("Small shampoo x %d\n", shampoo_S);
printf("Small conditioner x %d\n", conditioner_S);
printf("\nPrice = %d\n", price);

system("pause");
return 0;
}

請參考下方流程圖,此圖僅顯示針對偶數大瓶裝處理的過程。

作業一(B)題目
回到首頁

2007年10月29日 星期一

C 程式設計作業一(B),選擇邏輯與輸出、輸入應用

作業內容:
貴公司接受顧客委託,修改軟體,該顧客為百貨零售業者,預計進行一項促銷活動,商品是「愛情洗髮護髮系列」。
愛情洗髮精與潤髮乳有分500ml與250ml兩種大小瓶裝,大瓶愛情洗髮精與潤髮乳原售價都是 280 元,小瓶都是150元。
促銷專案如下:

1. 凡購買大瓶愛情洗髮精一瓶,得以六折優待購買小瓶愛情洗髮精一瓶。
2. 凡購買大瓶愛情潤髮乳一瓶,得以六折優待購買小瓶愛情潤髮乳一瓶。
3. 購買大瓶愛情洗髮精或潤髮乳任兩瓶,可免費附贈小瓶愛情洗髮精或潤髮乳一瓶(任選其一)。
4. 購買大瓶愛情洗髮精或潤髮乳任六瓶,總價可再打九五折。
(大瓶裝以免費折扣使用為優先,不得重複與小瓶再進行搭售折扣)

你的任務就是要完成這個商品的價格計算程式,你必須提供適當的文字說明介面,以利使用者輸入,方便結帳。

測試方式:
假設 A1:一瓶大瓶愛情洗髮精,一瓶小瓶愛情洗髮精,370元。
假設 A2:一瓶大瓶愛情潤髮乳,一瓶小瓶愛情洗髮精,430元。
假設 A3:二瓶大瓶愛情潤髮乳,一瓶小瓶愛情洗髮精,560元。
假設 A4:一瓶大瓶愛情潤髮乳,二瓶大瓶愛情洗髮精,二瓶小瓶愛情洗髮精,930元。(難)
假設 A5:二瓶大瓶愛情潤髮乳,二瓶大瓶愛情洗髮精,三瓶小瓶愛情潤髮乳,1270元。
假設 A6:二瓶大瓶愛情潤髮乳,四瓶大瓶愛情洗髮精,二瓶小瓶愛情洗髮精、二瓶小瓶愛情潤髮乳,1738元。
解答下載
回到作業目錄
回到首頁

2007年10月27日 星期六

小考一(D) 解答


/* C Programming Quiz 1D */
/*
小考一題目:使用C語言設計一個程式,以計算採購貨品的訂貨價格,
行情如后。每次採購的基本訂貨成本,固定為 1200元,
每件貨品單價為 80元,若採購數量超過(大於) 500 件時,
每件貨品以九折計價,若採購數量超過(大於) 3000 件時,
每滿 1000 件,賣方再額外扣減 6000元。輸入值是採購
產品的數量。輸出為採購價格。例如,採購 5800 件的價格為
1200 + 5800*80*0.9 - 6000*2 = 406,800 元。

提示:產品採購數量以 10,000 件為限。

*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int orderNum, totalPrice;
int unitPrice, extraDiscount;

printf("Please enter the order number: ");
scanf("%d", &orderNum);

if (orderNum > 500)
unitPrice = 80*0.9;
else
unitPrice = 80;
if (orderNum > 3000)
extraDiscount = (orderNum-3000)/1000*6000;
else
extraDiscount = 0;
totalPrice = 1200 + orderNum*unitPrice - extraDiscount;

printf("Total price is %d\n", totalPrice);

system("pause");
return 0;
}

小考一(D)題目
返回小考目錄
回到首頁

小考一(D) 題目


/* C Programming Quiz 1D */
/*
小考一題目:使用C語言設計一個程式,以計算採購貨品的訂貨價格,
行情如后。每次採購的基本訂貨成本,固定為 1200元,
每件貨品單價為 80元,若採購數量超過(大於) 500 件時,
每件貨品以九折計價,若採購數量超過(大於) 3000 件時,
每滿 1000 件,賣方再額外扣減 6000元。輸入值是採購
產品的數量。輸出為採購價格。例如,採購 5800 件的價格為
1200 + 5800*80*0.9 - 6000*2 = 406,800 元。

提示:產品採購數量以 10,000 件為限。

*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int orderNum, totalPrice;

/* your program is here */


system("pause");
return 0;
}

解答下載
返回小考目錄
回到首頁

小考一(C) 解答


/* C Programming Quiz 1C */
/*
小考一題目:使用C語言設計一個程式,以計算一個業務員的月薪,
規定如后。每月底薪為15000元,每賣出一台產品,可
得紅利 380元。月底結算,如果賣超過(大於) 20 台,
每台紅利則以 420元計算,如果賣超過(大於) 40 台,
每賣出十台,老闆再獎勵 1500元。輸入值是每月賣出
產品的數量。輸出為每月薪資。例如,賣出68台,月薪為
15000 + 420*68 + 1500*2 = 46560元。
提示:產品售出數量為100為限。

*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int saleNum, salary;
int unitBonus, bossBonus;

printf("Please enter the sale number: ");
scanf("%d", &saleNum);

if (saleNum > 20)
unitBonus = 420;
else
unitBonus = 380;
if (saleNum > 40)
bossBonus = (saleNum-40)/10*1500;
else
bossBonus = 0;
salary = 15000 + saleNum*unitBonus + bossBonus;

printf("Salary is %d\n", salary);

system("pause");
return 0;
}

小考一(C)題目
返回小考目錄
回到首頁

小考一(C) 題目


/* C Programming Quiz 1C */
/*
小考一題目:使用C語言設計一個程式,以計算一個業務員的月薪,
規定如后。每月底薪為15000元,每賣出一台產品,可
得紅利 380元。月底結算,如果賣超過(大於) 20 台,
每台紅利則以 420元計算,如果賣超過(大於) 40 台,
每賣出十台,老闆再獎勵 1500元。輸入值是每月賣出
產品的數量。輸出為每月薪資。例如,賣出68台,月薪為
15000 + 420*68 + 1500*2 = 46560元。
提示:產品售出數量為100為限。
*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int saleNum, salary;
int unitBonus, bossBonus;

/* your program is here */


system("pause");
return 0;
}

解答下載
返回小考目錄
回到首頁

2007年10月25日 星期四

C語言考古題,小考系列

95學年度


小考一(A),選擇邏輯測驗
小考一(B)
小考二(A),選擇邏輯測驗
小考二(B)
小考三(A),迴圈邏輯測驗
小考三(B)
小考四(A),函數運用測驗
小考四(B)
小考五(A),迴圈與函數運用測驗
小考五(B)
期末考(A),迴圈與函數運用測驗
期末考(B)
小考六(A),函數與陣列測驗
小考六(B)
小考七(A),函數、陣列與指標測驗
小考七(B)
小考八(A),檔案處理測驗
小考八(B)
小考九(A)、模組設計測驗
小考九(B)

96學年度


小考一(C)>,選擇邏輯測驗
小考一(D)
小考三(C),迴圈邏輯測驗
小考三(D)
小考三(E),迴圈邏輯與隨機數測驗
小考三(F)
小考四(C),函數運用測驗
小考四(D)
小考四(E)
小考四(F)
期末考(C),迴圈與函數運用測驗
期末考(D)
小考六(C),函數與陣列測驗
小考六(D)
小考八(A),結構與陣列測驗
小考八(B)
小考九(A),二進位檔案處理
小考十,命令列參數處理
回到首頁

小考九(A) 解答


/* ================================= */
/* File: main.c */
#include <stdio.h>
#include <stdlib.h>

int oddsum(int);
int evensum(int);

int main(int argc, char *argv[])
{
int n,m;
printf("請輸入 n 的值:");
scanf("%d",&n);
printf("1 到 n 的奇數和=%d\n",oddSum(n));

printf("請輸入 m 的值:");
scanf("%d",&m);
printf("1 到 n 的偶數和=%d\n",evenSum(m));

printf("n 的奇數和加 m 的偶數和=%d\n",oddSum(n)+evenSum(m));

system("pause");
return 0;
}
/* ================================= */
/* File: evenSum.c */
#include <stdio.h>
#include <stdlib.h>

int evenSum(int a)
{
int i,sum=0;
for(i=a;i>0;i--){
if(i%2==0)
sum+=i;
}
return sum;
}

/* ================================= */
/* File: oddSum.c */
#include <stdio.h>
#include <stdlib.h>

int oddSum(int a)
{
int i,sum=0;
for(i=a;i>0;i--){
if(i%2==1)
sum+=i;
}
return sum;
}

小考九(A)題目
返回小考目錄
回到首頁

小考九(A) 題目

使用Dev-C++,建立一個新的C專案,屬性為Console Application,在這個專案中,有三個.c檔案,其中一個是main.c,另兩個.c檔案各有一個C函數,第一個C函數為int oddSum(int),計算1到n的奇數和,輸入是一個整數n,輸出也是一個整數(計算結果);第二個C函數為int evenSum(int),計算1到m的偶數和,輸入是一個整數m,輸出也是一個整數(計算結果)。主程式main.c的內容包括,數入兩個值,n和m,然後分別呼叫oddSum和evenSum,最後輸出oddSum和evenSum相加之後的值。

解答下載
返回小考目錄
回到首頁

2007年10月24日 星期三

Problem 294 Divisors, 整除數量計算

這題不是很難的問題,只是因為數值大的關係,如果從頭到尾都算的話時間會不夠,所以要記得把要算的數值開根號,就可以省去一半的時間。

for(j=L;j<=U;j++)
{
max_tmp = 0;
for(m=1;m<=sqrt(j);m++)
{
if(j%m == 0)
{
//printf("%d => %d\n", j,m);
if(m*m == j)
max_tmp++;
else
max_tmp+=2;
}
}
if(max_tmp > max)
{
max = max_tmp;
max_n = j;
}
}

Solved by Wellwind
p294目連結
回ACM題庫目錄
回首頁

2007年10月23日 星期二

Problem 477 Points in Figures: Rectangles and Circles,判斷點在矩形與圓形中的問題


477是476的延伸題,只要在加入圓形的判斷即可;宣告圓形的結構
typedef struct t_Circle
{
Point center;
double r;
} Circle;

判斷座標是否在圓形之內,計算點與圓心的距離是否小於半徑就可以了
if (
( p.x - c[i].center.x) * (p.x - c[i].center.x) +
( p.y - c[i].center.y) * (p.y - c[i].center.y)
< c[i].r * c[i].r)
{
...
}

Solved by Wellwind

p477題目連結
回ACM題庫目錄
回首頁

Problem 476 Points in Figures: Rectangles,判斷點在矩形中的問題


為了方便可以設計兩個struct

typedef struct t_Point
{
double x;
double y;
} Point;


typedef struct t_Rect
{
Point top_left;
Point bottom_right;
} Rect;

接著只要照題目建立Rect並且判斷每個Point有沒有在範圍裡面就好了,判斷的方法可以參考程式碼

if ( p.x > r[i].top_left.x &&
p.x < r[i].bottom_right.x &&
p.y < r[i].top_left.y &&
p.y > r[i].bottom_right.y )
{
printf("Point %d is contained in figure %d\n",p_count,i+1);
}


Solved by Wellwind

p476題目連結
回ACM題庫目錄
回首頁

C 程式設計作業九,使用結構、結構陣列與檔案處理:解題


/* C Programming, Project 9 */

#include <stdio.h>
#include <stdlib.h>
#define MAX 20

struct record {
char name[20];
char sex;
double score;
};

int queryDB(char [], struct record *);
void insertDB(struct record *);
void listAllName(void);
char *getLine(FILE *);

int main(void)
{
struct record *stdPtr;
char qname[20];
char ch;
int idx, ifFound;

do {
printf("Command(h for help):");
ch = getche();
switch (ch) {
case 'h':
printf("\nUse\n");
printf("h to show this help;\n");
printf("f to find a record by name;\n");
printf("l to list all names in the file;\n");
printf("i to insert a new record;\n");
printf("d to delete a specified record;\n");
printf("m to modify a specified record;\n");
printf("q to quit.\n");
break;
case 'f':
printf("\nFind the name:");
gets(qname);
ifFound = queryDB(qname, stdPtr);
if (!ifFound) {
printf("\nName %s not found!\n", qname);
} else {
printf("\nName: %s\n", stdPtr->name);
printf("Sex: %c\n", stdPtr->sex);
printf("Score: %f\n", stdPtr->score);
}
break;
case 'l':
listAllName();
break;
case 'i':
break;
case 'd':
break;
case 'm':
break;
case 0xd:
break;
case 'q':
printf("\nQuit now.\n");
break;
default:
printf("\nNot a valid command\n");
}
fflush(stdin);
printf("\n");
} while (ch!='q');

system("pause");
return 0;

}


int queryDB(char qname[], struct record *stdPtr) {
struct record *studtemp;
char *str, aname[20];
char asex;
double ascore;
FILE *fptr;
int i, rno, found=0;
fptr = fopen("db.txt","r");
if (fptr==NULL)
return 0;
else {
fscanf(fptr, "%d\n", &rno);
for (i=0;i<rno;i++) {
str = getLine(fptr);
strcpy(aname, str);
str = getLine(fptr);
asex = str[0];
str = getLine(fptr);
ascore = atof(str);
if (!strcmp(aname,qname)) {
strcpy(stdPtr->name, aname);
stdPtr->sex = asex;
stdPtr->score = ascore;
found = 1;
}
}
fclose(fptr);
if (found)
return 1;
else
return 0;
}
}
void insertDB(struct record *stdPtr) {
}

void listAllName(void) {
FILE *fptr;
int i, rno=0;
char *str;

fptr = fopen("db.txt","r");
if (fptr==NULL)
printf("Failed to open file\n");
else {
fscanf(fptr, "%d\n", &rno);
printf("\n");
for (i=0;i<rno;i++) {
str = getLine(fptr);
puts(str);
str = getLine(fptr);
str = getLine(fptr);
}
}
fclose(fptr);
}
char *getLine(FILE *fptr) {
static char str[80];
int i=0;

while ((str[i]=getc(fptr)) != '\n')
i++;
str[i] = '\0';
return str;
}

作業九題目
回到首頁

C 程式設計作業九,使用結構、結構陣列與檔案處理

作業內容:
針對提供的資料檔案,建立查詢與顯示資料的功能。程式的執行,一開始出現指令輸入列,並提示可用的協助鍵,例如

Command(h for help):
當使用者鍵入「h」後,則會列出一系列可用的指令,例如

Use
h to show this help;
f to find a record by name;
l to list all names in the file;
i to insert a new record;
d to delete a specified record;
m to modify a specified record;
q to quit.
h:列出指令說明;
f:查詢一筆資料的內容;
l:列出所有資料中的人名;
i:插入一筆新的資料;
d:刪除一筆特定的資料;
m:修改一筆特定的資料;
q:離開。

本次作業要完成 h、f、l、q 四個基本功能。

所需處理的資料檔案名稱為「db.txt」,其內容如下圖所示,第一行為資料的筆數,每筆資料有三項內容,第一項為姓名,為20個以內的英文字;第二項為性別,為「M」或「F」的單一字元;第三項為分數,是一個實數。這個檔案有三筆資料,所以第一行為3,每筆有三項資料,所以 3*3就有九行的資料。因此檔案全部內容共十行。

當使用者鍵入「f」後,則會出現一行提示使用者輸入欲查詢的姓名,鍵入姓名後,如果檔案中有這個人的資料,則列出該人的三項資料內容,如果找不到,則列出該人名未被發現。

當使用者鍵入「l」後,則會列出資料檔案中全部的人名。

當使用者鍵入「q」後,則程式執行結束。

如果使用者是輸入未經認可的指令,則列出「Invalid command」,亦即無此指令。

作業提示:
一、程式本身是一個循環結構,不斷的處理使用者輸入的指令(合法或不合法),直到鍵入「q」才結束。

二、建議使用switch的方式來處理每個輸入的指令。

三、使用適當的函數呼叫,以增加程式的可讀性,在開發過程也較容易進行除錯的工作。

四、經常使用Dev-C++所提供的除錯功能,進行逐步執行,以了解程式的每個指令執行過程。

五、測試時, 要分別詳細測試 h、f、l、q 四個功能是否正確,並備便紀錄全部的執行過程,以備未來列印。測試內容列印可參考 p3output.txt
解答下載
回到作業目錄
回到首頁

C 程式設計作業八,使用陣列、函數與指標:解題


/* C Programming, Project 8 */

#include <stdio.h>
#include <stdlib.h>
#define SIZE 26

void getMax(double *, double *);
void getMin(double *, double *);

int main(void)
{
double A[][SIZE] = {{617, 90, 195, 813, 697, 81, 435, 202, 594, 109, 486, 778, 743, 335, 881, 427, 931, 81, 81, 275, 108, 282, 812, 95, 325, 0},
{699, 392, 915, 757, 487, 614, 449, 354, 895, 107, 526, 147, 606, 233, 459, 16, 866, 226, 353, 923, 839, 776, 120, 5, 909, 0},
{83, 576, 846, 468, 52, 983, 279, 101, 489, 646, 337, 168, 93, 755, 143, 38, 72, 849, 876, 3, 928, 326, 496, 623, 907, 0},
{243, 704, 460, 820, 487, 924, 273, 911, 849, 405, 686, 251, 534, 491, 772, 248, 47, 118, 588, 770, 496, 421, 472, 858, 886, 0},
{415, 575, 245, 3, 629, 405, 81, 224, 209, 457, 927, 820, 929, 650, 723, 712, 258, 245, 351, 458, 788, 539, 6, 752, 756, 0},
{882, 856, 909, 501, 59, 823, 233, 250, 935, 720, 997, 676, 909, 221, 648, 606, 28, 326, 35, 846, 429, 766, 116, 513, 706, 0},
{239, 824, 122, 401, 99, 877, 570, 494, 895, 395, 550, 820, 371, 798, 635, 695, 218, 995, 931, 374, 37, 350, 25, 351, 500, 0},
{408, 214, 972, 907, 975, 117, 388, 44, 443, 821, 647, 112, 850, 484, 844, 428, 183, 662, 474, 99, 434, 305, 176, 48, 799, 0},
{859, 772, 186, 140, 670, 890, 800, 419, 549, 339, 311, 246, 235, 568, 279, 810, 777, 576, 978, 989, 231, 16, 159, 735, 594, 0},
{855, 689, 199, 253, 67, 104, 686, 925, 756, 117, 346, 203, 552, 774, 932, 495, 693, 302, 146, 181, 183, 596, 742, 196, 937, 0},
{658, 730, 199, 707, 569, 844, 261, 452, 547, 816, 202, 249, 167, 130, 236, 273, 322, 480, 452, 581, 608, 873, 803, 47, 142, 0},
{538, 362, 661, 202, 412, 907, 948, 4, 317, 410, 22, 488, 866, 188, 921, 733, 752, 6, 606, 378, 894, 175, 820, 911, 909, 0},
{509, 764, 938, 263, 977, 433, 928, 800, 213, 679, 130, 248, 898, 783, 557, 255, 246, 498, 721, 862, 786, 104, 293, 532, 496, 0},
{857, 515, 845, 317, 249, 11, 190, 751, 294, 551, 791, 658, 389, 988, 625, 95, 336, 301, 157, 439, 486, 502, 871, 697, 124, 0},
{649, 325, 747, 697, 771, 53, 472, 54, 415, 121, 566, 84, 484, 965, 669, 588, 145, 605, 233, 767, 245, 505, 511, 97, 768, 0},
{98, 804, 137, 94, 11, 3, 292, 796, 841, 248, 334, 444, 55, 171, 146, 320, 605, 975, 515, 707, 12, 853, 984, 489, 499, 0},
{989, 898, 639, 931, 880, 792, 815, 651, 577, 674, 250, 336, 961, 52, 766, 275, 936, 291, 365, 983, 145, 91, 82, 735, 448, 0},
{641, 531, 644, 391, 757, 246, 468, 296, 243, 23, 106, 301, 513, 962, 457, 520, 794, 126, 498, 897, 632, 292, 571, 750, 433, 0},
{724, 210, 267, 154, 2, 546, 817, 905, 484, 240, 262, 819, 908, 821, 76, 783, 688, 719, 30, 661, 622, 424, 330, 909, 111, 0},
{352, 966, 232, 839, 464, 997, 608, 895, 606, 681, 37, 848, 143, 889, 125, 290, 397, 677, 723, 843, 702, 534, 953, 70, 762, 0},
{945, 574, 542, 737, 812, 301, 528, 359, 691, 651, 581, 233, 67, 21, 891, 302, 572, 303, 788, 40, 582, 546, 478, 553, 19, 0},
{873, 395, 608, 714, 410, 819, 661, 163, 725, 520, 71, 714, 806, 795, 381, 157, 491, 100, 239, 545, 58, 978, 657, 480, 189, 0},
{778, 232, 813, 678, 181, 400, 97, 990, 719, 587, 554, 568, 293, 282, 480, 568, 718, 343, 502, 821, 236, 414, 156, 55, 884, 0},
{92, 94, 887, 656, 962, 896, 386, 129, 526, 280, 588, 849, 133, 192, 768, 975, 725, 88, 209, 828, 237, 846, 466, 407, 978, 0},
{988, 636, 156, 660, 601, 365, 724, 406, 795, 737, 954, 858, 982, 405, 339, 816, 440, 768, 650, 893, 720, 233, 799, 382, 494, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }};

/*
第26列答案是:989,966,972,931,977,997,948,990,935,821,997,858,982,988,932,975,936,995,978,989,928,978,984,911,978,
第26行答案是:81,5,3,47,3,28,25,44,16,67,47,4,104,11,53,3,52,23,2,37,19,58,55,88,156,
*/

getMax(&A[0][1], &A[25][1]);
printf("Maximun value of 2nd colume is %f\n", A[25][1]);
getMin(&A[3][0], &A[3][25]);
printf("Minimun value of 4th row is %f\n", A[3][25]);
system("pause");
return 0;

}


void getMax(double *ptr, double *max)
{
int i;

*max = 0;
for (i=0;i<25;i++)
{
if (*max < *ptr)
*max = *ptr;
ptr += 26;
}
}

void getMin(double *ptr, double *min)
{
int i;

*min = 10000;
for (i=0;i<25;i++)
{
if (*min > *ptr++)
*min = *ptr;
}
}

作業八題目
回到首頁

C 程式設計作業八,使用陣列、函數與指標

作業內容:
完成指定的函數,並輸出答案。

在作業八,你必須下載作業八的問題產生程式,這是個執行檔,用ZIP壓縮以利下載,執行的視窗環境需安裝「Microsoft .net framework 1.1」以上版本。程式開啟後,你必須輸入你的學號後三碼,以獲得你個人專屬的題目(人人題目都不同),在按下執行後,你會得到一個陣列A的宣告及其初設值,如下圖所示。

這是一個26 x 26 的陣列,也就是26列、每列26行,每列的最後一個值是0,最後一列也都是0,你必須將程式產生的A陣列複製貼上到你的程式作業中,去完成以下的要求。

一、設計程式,將最後一列的第一到第二十五個值(索引數0~24),填入每一行的最大值。

二、 設計程式將第一到第二十五列(索引數0~24)的最後一個值,填入每一列的最小值。

三、必須完成兩個獲得各行最大值與各列最小值的函數,其原型如下:

void getMax(double *, double *);
void getMin(double *, double *);
單一的呼叫函數測試範例如下:

getMax(&A[0][1], &A[25][1]);
printf("Maximun value of 2nd colume is %f\n", A[25][1]);
getMin(&A[3][0], &A[3][25]);
printf("Minimun value of 4th row is %f\n", A[3][25]);

四、輸出格式在問題產生程式已經提供,答案也已經提供,輸出的內容,就是問題產生程式中的倒數2、3、4行。

作業八解答
回到作業目錄
回到首頁

2007年10月17日 星期三

Problem 583 Prime Factors,質數因數列印的問題

這題很簡單,先判斷本身是不是質數,是質數就直接列印,不是,就除i,i從2開始累進,只要能整除就列印出來,所以要設定一個判斷值,以處理列印 X (乘號)的問題。

Solved by Wellwind

p583題目連結
回ACM題庫目錄
回首頁

Problem 458 The Decoder,解碼的問題

經典的解密題目,很多書本裡面也有類似的題目,把字母往後移三個,A就會變成D,只是這題把加密規則拿掉了,要自己從加密&解密後的字串找出規則,只要試著印出'*'-'1'就知道要移動多少,所有字串套用相同的處理就好。


for(i=0;str[i] != '\0';i++){
printf("%c", str[i]-7);
}
printf("\n");

Solved by Wellwind
p458題目連結
回ACM題庫目錄
回首頁

2007年10月9日 星期二

小考八(A) 解答


/* C Programming, Quiz 8A */
/*
小考八題目:
一、使用 fopen,以開啟一個二進位的檔案進行寫入,你必須寫入幾個整數,
這些整數是經過你精密計算過的數字。完成寫入後,即關閉該檔案。
二、再度開啟步驟一所處理的檔案,但是這次是讀取二進位檔案,讀取全部的
內容存入一個字串變數中。
三、列印這個字串,字串顯示出的內容為"C Programming"。

提示一:先考慮你必須寫入的整數的個數。
提示二:想想整數是如何寫入的,求出這些整數的值。
*/

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fptr;
char str[20];
/* your program is here */

int num[4] = {1917853763, 1634887535, 1852403053, 103};
fptr = fopen("quiz3A.bin", "wb");
fwrite(num, sizeof(int), 4, fptr);
fclose(fptr);
fptr = fopen("quiz3A.bin", "rb");
fread(str, sizeof(char), 16, fptr);
fclose(fptr);

printf("\n%s\n", str);
system("pause");
return 0;
}

小考八(A)題目
返回小考目錄
回到首頁

小考八(A) 題目


/*
小考八題目:
一、使用 fopen,以開啟一個二進位的檔案進行寫入,你必須寫入幾個整數,
這些整數是經過你精密計算過的數字。完成寫入後,即關閉該檔案。
二、再度開啟步驟一所處理的檔案,但是這次是讀取二進位檔案,讀取全部的
內容存入一個字串變數中。
三、列印這個字串,字串顯示出的內容為"C Programming"。

提示一:先考慮你必須寫入的整數的個數。
提示二:想想整數是如何寫入的,求出這些整數的值。
*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *fptr;
char str[20];
/* your program is here */







printf("\n%s\n", str);
system("pause");
return 0;
}

解答下載
返回小考目錄
回到首頁

2007年10月6日 星期六

小考七(B) 解答


/* C Programming, Quiz 7B */
/*
小考七題目:
利用指標傳遞陣列到函數,完成
1. 函數 reverse,在函數中,陣列的值按反序排列。
2. 函數 display,顯示輸入的陣列。

提示一:在reverse函數中,你需要宣告一個臨時的陣列,以存放反序的陣列。
提示二:本題答案的輸出應為 5, 6, -2, -8, 0, -1, 7, 3, -9, 4,。
*/

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10

void reverse(int *);
void display(int *);

int main(void)
{
int C[SIZE] = {4,-9,3,7,-1,0,-8,-2,6,5};

reverse(C);
display(C);

system("pause");
return 0;
}

/* your program is here */
void reverse(int *ptr) {
int i=SIZE;
int temp[SIZE];
for (i=0;i<SIZE;i++)
temp[SIZE-i-1] = *(ptr+i);
for (i=0;i<SIZE;i++)
*(ptr+i) = *(temp+i);
}

void display(int *ptr) {
int i;
for (i=0;i<SIZE;i++)
printf("%d, ", *(ptr+i));
printf("\n");
}

小考七(B)題目
返回小考目錄
回到首頁

小考七(B) 題目


/*
小考七題目:
利用指標傳遞陣列到函數,完成
1. 函數 reverse,在函數中,陣列的值按反序排列。
2. 函數 display,顯示輸入的陣列。

提示一:在reverse函數中,你需要宣告一個臨時的陣列,以存放反序的陣列。
提示二:本題答案的輸出應為 5, 6, -2, -8, 0, -1, 7, 3, -9, 4,。
*/

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10

void reverse(int *);
void display(int *);

int main(void)
{
int C[SIZE] = {4,-9,3,7,-1,0,-8,-2,6,5};

reverse(C);
display(C);

system("pause");
return 0;
}

/* your program is here */


解答下載
返回小考目錄
回到首頁

2007年10月5日 星期五

Problem 374 Big Mod,大數字除法的餘數

這題是數學題,只要知道公式(a * b) mod c = ((a mod c) * (b mod c)) mod c,就可以將B^P mod M 不斷分割成小塊來避免溢位的問題,可以參考下面的方法:

unsigned long ComputeR(unsigned long B, unsigned long P, unsigned long M){
if (P==1) return B % M;
unsigned long i,res=1;
i=1;
res = B%M;
while(2*i<P){
res = (res*res)%M;
i*=2;
}
return (res * ComputeR(B,P-i,M))%M;
}

Solved by Wellwind
p274題目連結
回ACM題庫目錄
回首頁

2007年10月4日 星期四

小考七(A) 解答


/* C Programming, Quiz 7A */
/*
小考七題目:
利用指標傳遞字串到函數,完成
1. 函數 add10,在函數中,字串的每個字元會纍加10。
2. 函數 display,顯示輸入的字串。
3. 呼叫 add10 和 display,以顯示完成後輸出字串。

提示一:輸入為指定的字串指標 ptr。
提示二:結束字元為 '\0'。
*/

#include <stdio.h>
#include <stdlib.h>

void add10(char *);
void display(char *);

int main(void)
{
char school[] = "I^_^9^_[dKd_l[hi_joAWe^i_kd]9Wcfki";
char *ptr;

ptr = school;

/* your program is here */
add10(ptr);
display(ptr);

system("pause");
return 0;
}

/* your program is here */
void add10(char *ptr) {
while (*ptr != '\0') {
*ptr += 10;
ptr++;
}
}

void display(char *ptr) {
printf("%s\n", ptr);
}

小考七(A)題目
返回小考目錄
回到首頁

小考七(A) 題目


/*
小考七題目:
利用指標傳遞字串到函數,完成
1. 函數 add10,在函數中,字串的每個字元會纍加10。
2. 函數 display,顯示輸入的字串。
3. 呼叫 add10 和 display,以顯示完成後輸出字串。

提示一:輸入為指定的字串指標 ptr。
提示二:結束字元為 '\0'。

*/

#include <stdio.h>
#include <stdlib.h>

void add10(char *);
void display(char *);

int main(void)
{
char school[] = "I^_^9^_[dKd_l[hi_joAWe^i_kd]9Wcfki";
char *ptr;

ptr = school;

/* your program is here */

system("pause");
return 0;
}

/* your program is here */

解答下載
返回小考目錄
回到首頁

2007年9月30日 星期日

ACM 比賽題庫解題

ACM 程式設計題庫解答
100 The 3n + 1 problem
101 The Blocks Problem
102 Ecological Bin Packing
105 The Skyline Problem
107 The Cat in the Hat
108 Maximum Sum
113 Power of Cryptography
118 Mutant Flatworld Expolrers
119 Greedy Gift Givers
130 Roman Roulette
136 Ugly Numbers
145 Gondwanaland Telecom
146 ID Codes
147 Dollars
151 Power Crisis
160 Factors and Factorials
167 The Sultan's Successors
170 Clock Patience
190 Circle Through Three Points
193 Graph Coloring
195 Anagram
216 Getting in Line
253 Cube painting
256 Quirksome Squares
263 Number Chains
264 Count on Cantor
272 Tex Quotes
291 The House Of Santa Claus
294 Divisors
299 Train Swapping
300 Maya Calendar
311 Packets
324 Factorial Frequencies
326 Extrapolation Using a Difference Table
332 - Rational Numbers from Repeating Fractions
339 SameGame Simulation
340 Master-Mind Hints
341 Non-Stop Travel
344 Roman Digititis
350 Pseudo-Random Numbers
362 18,000 Seconds Remaining
369 Combinations
374 Big Mod
375 Inscribed Circles and Isosceles Triangles
382 Perfection
389 Basically Speaking
392 Polynomial Showdown
400 Unix ls
401 Palindromes
406 Prime Cuts
408 Uniform Generator
409 Excuses, Excuses!
412 Pi
424 Integer Inquiry
438 The Circumference of the Circle
439 Knight Moves
440 Eeny Meeny Moo
441 Lotto
442 Matrix Chain Multiplication
443 Humble Numbers
444 Encoder and Decoder
445 Marvelous Mazes
446 Kibbles `n' Bits `n' Bits `n' Bits
455 Periodic Strings
458 The Decoder
459 Graph Connectivity
465 Overflow
466 Mirror, Mirror
471 Magic Numbers
474 Head / Tails Probability
476 Points in Figures: Rectangles
477 Points in Figures: Rectangles and Circles
482 Permutation Arrays
483 Word Scramble
488 Triangle Wave
492 Pig-Latin
494 Kindergarten Counting Game
495 Fibonacci Freeze
499 What's The Frequency, Kenneth?
530 Binomial Showdown
534 Frogger
541 Error Correction
543 Goldbach's Conjecture
568 Just the Facts
573 The Snail
575 Skew Binary
579 ClockHands
583 Prime Factors
587 There's treasure everywhere!
591 Box of Bricks
617 Nonstop Travel
619 Numerically Speaking
619 Numerically Speaking
623 500!
624 CD
626 Ecosystem
639 Don't Get Rooked
640 Self Numbers
665 False coin
668 Parliament
673 Parentheses Balance
674 Coin Change
679 Dropping Balls
686 Goldbach's Conjecture (II)
706 LCD Display
725 Division
729 The Hamming Distance Problem
740 Baudot Data Communication Code
748 Exponentiation
750 8 Queens Chess Problem
755 487--3279
763 Fibinary Numbers
784 Maze Exploration
785 Grid Colouring
808 Bee Breeding
821 Page Hopping
825 Walking on the Safe Side
834 Continued Fractions
880 Cantor Fractions
913 Joana and the Odd Numbers
944 Happy Numbers
948 Fibonaccimal Base
974 Kaprekar Numbers
993 Product of digits
10004 Bicoloring
10008 What's Cryptanalysis?
10010 Where's Waldorf?
10013 Super long sums
10015 Joseph's Cousin
10018 Reverse and Add
10019 Funny Encryption Method
10026 Shoemaker's Problem
10034 Freckles
10035 Primary Arithmetic
10038 Jolly Jumpers
10041 Vito's family
10048 Audiophobia
10055 Hashmat the brave warrior
10062 Tell me the frequencies, also solved by David.K
10071 Back to High School Physics
10074 Take the Land
10079 Pizza Cutting
10082 WERTYU
10099 The Tourist Guide, see 10048 or 534
10102 The path in the colored field
10104 Euclid Problem
10105 Polynomial coefficients
10106 Product
10107 What is the Median?
10110 Light, more light
10126 Zipf's Law
10127 Ones
10137 The Trip
10147 Highways, see 10034
10161 Ant on a Chessboard
10182 Bee Maja
10189 Minesweeper
10209 Is This Intergration?
10220 I Love Big Numbers !
10254 The Priest Mathematician
10295 Hay Points
10297 Beavergnaw
10300 Ecological Premium
10302 Summation of Polynomials
10327 Flip Sort
10370 Above Average
10300 Ecological Premium
10346 Peter's Smokes
10359 Tiling
10392 Factoring Large Numbers
10393 The One-Handed Typist
10394 Twin Primes
10397 Connect the Campus, see 10034
10405 Longest Common Subsequence
10409 Die Game
10420 List of Conquests
10432 Polygon Inside A Circle
10450 World Cup Noise
10452 Marcus
10465 Homer Simpson
10473 Simple Base Conversion
10474 Where is the Marble?
10491 Cows and Cars
10494 If We Were a Child Again
10497 Sweet Child Makes Trouble
10499 The Land of Justice
10515 Powers Et Al.
10519 !!REALLY STRANGE!!
10530 Guessing Game
10533 Digit Primes
10539 Almost Prime Numbers
10550 Combination Lock
10551 Basic Remains
10573 Geometry Paradox
10579 Fibonacci Numbers
10583 Ubiquitous Religions
10589 Area
10608 Friends
10637 Coprimes
10649 Danger Point
10664 Luggage
10673 Play with Floor and Ceil
10678 The Grazing Cows
10684 The jackpot
10696 f91
10759 Dice Throwing
10763 Foreign Exchange
10783 Odd Sum
10784 Diagonal
10789 Prime Frequency
10790 How Many Points of Intersection?
10810 Ultra-QuickSort
10812 Beat the Spread!
10815 Andy's First Dictionary
10878 Decode the tape
10903 Rock-Paper-Scissors
10905 Children's Game
10911 Forming Quiz Teams
10912 Simple Minded Hashing
10916 Factstone Benchmark
10919 Prerequisities?
10921 Find the Telephone
10922 2 the 9s
10924 Prime Words
10929 You can say 11
10931 Parity
10963 The Swallowing Ground
10970 Big Chocolate
10994 Simple Addition
11000 Bee
11005 Cheapest Base
11015 05-2 Rendezvous
11038 How many 0's?
11069 A Graph Problem
11121 Base -2
11150 Cola
11172 Relational Operators
11185 Ternary
11192 - Group Reverse
11244 Counting Stars
11326 Laser Pointer
11342 Three-square
11401 Triangle Counting
11417 GCD
11428 Cubes
11437 - Triangle Fun
11455 Behold my quadrangle
11462 Age Sort
11461 Square Numbers
11470 Square Sums
11479 Is this the easiest problem?, see 11455
11483 Code Creator
11498 Division of Nlogonia
11520 Fill the Square
11522 Pyramid Number
11526 H(n)
11530 SMS Typing
11538 Chess Queen
11541 Decoding
11547 Automatic Answer
11586 Train Tracks
11597 Spanning Subtree
11608 No Problem
11609 Teams
11614 Etruscan Warriors Never Play Chess
11621 Small Factors
11636 Hello World!
11650 Mirror Clock
11661 Burger Time?
11666 - Logarithms
11677 Alarm Clock
11689 Soda Surpler
11714 Blind Sorting
11715 Car
11716 Digital Fortress
11727 Cost Cutting
11734 Big Number of Teams will Solve This
11743 Credit Check
11764 Jumping Mario
11805 Bafana Bafana