# 程式設計實習 資訊一甲 22號 陳致翰 # 20230913上課作業 ## 第一題練習題 ### 題目 1.請撰寫一個程式,宣告變數a=10、b=101.7、c=`c` ### 程式碼 ``` c #include <iostream> using namespace std; int main() { int a; a = 10; float b; b = 101.7; char c = 'c'; } ``` ![](https://hackmd.io/_uploads/HJfLNi0C2.png) ## 第二題練習題 ### 題目 2.轉換英文字母大小寫轉換 ### 程式碼 ``` c #include <iostream> #include <cctype> using namespace std; int main() { char input; //設定input 變數 cout << "請輸入英文字母大寫:" << endl; // 輸入大寫英文字母 cin >> input; //檢測使用者輸入 char out = tolower(input); //轉換大寫字母至小寫 cout << input << "的小寫是" << out; // 輸出內容 return 0; } ``` ![](https://hackmd.io/_uploads/rktOnoAR3.png) ### 執行結果 ![](https://hackmd.io/_uploads/HJdb43RR2.png) ## 第三題練習題 ### 題目 3. 互換輸出解果 ### 程式碼 ``` c #include<iostream> using namespace std; int main() { int numA = 60; int numB = 80; int c; c = numA; numA = numB; numB = c; cout << numA << " " << numB << endl; return 0; } ``` ![](https://hackmd.io/_uploads/rkkke3C0h.png) ### 執行結果 ![](https://hackmd.io/_uploads/ryIh73CCn.png) ## 第四題練習題 ### 題目 4. 使用唯獨變數定義圓周率,並輸入半徑(公分)後,輸出園面積(平方公分)? ### 程式碼 ``` c #include <iostream> using namespace std; int main() { const double PI = 3.1415926; // 定義唯獨變數 int r; double area; cout << "請輸入半徑r(公分)" ; cin >> r; area = r * r * PI; cout << "半徑" << r << "公分的圓面積=" << area << "平方公分" << endl; return 0; } ``` ![](https://hackmd.io/_uploads/BJMNXnA02.png) ### 執行結果 ![](https://hackmd.io/_uploads/SkzuX2RAh.png) ## 心得 今天的程式設計課程真的非常充實。從宣告基本的變數到更進階的操作如英文字母大小寫轉換,還有使用唯讀變數定義圓周率,每一個範例都讓我對C語言的操作有更深一層的認識。 首先,對於基本的變數宣告與賦值,這是編程的基礎,我對這部分有了更清晰的認識。再來,英文字母大小寫轉換這部分的程式,由GPT細心的講解,我學習到了如何使用`cctype`這個函式庫來達到我們想要的效果。這個功能在日常生活中可能會經常使用,像是密碼輸入、檔名命名等等,都會涉及到大小寫的問題。 另外,互換輸出的結果這部分讓我對於變數交換的操作有了更進一步的理解,這在解決某些問題時,像是排序,會非常有用。 最後,利用唯讀變數定義圓周率這部分,我了解到在程式中,有些數值是不希望被更改的,這時候使用`const`關鍵字可以確保數值的穩定性。 總的來說,今天的課程讓我對於C語言有了更深入的認識,每一個實作都讓我更加確定自己對程式設計的熱情。我也期待未來能夠學到更多進階的技巧,並且在程式設計的道路上走得更遠。 # 20230920上課作業 ## 第一題練習題 ### 題目 1.我們可利用巨集常數在程式一開始的地方定義外國幣值(如美金、日幣),並在程式中讓使用者輸入欲兌換的金額數量,以輸出可兌換的外國幣值數量。 ### 程式碼 ``` c #include <iostream> using namespace std; int main() { cout << "請輸入要兌換的金額:" ; double amount; cin >> amount; double usd = amount /32.04; double jpy = amount /0.22; cout << "可兌換" << float(usd) << "美金" << endl << "或兌換" << float(jpy) << "日幣"; } ``` ![](https://hackmd.io/_uploads/H10gXzdk6.png) ### 執行結果 ![](https://hackmd.io/_uploads/SJHNXz_J6.png) ## 第二題練習題 ### 題目 1.換零錢程式(1120920作業2) 假設有一換幣機提供了1元、5元和10元三種硬幣,若要寫一模擬此換幣機行為的 程式,當使用者輸入要兌換的金額後,算出應支付的最少硬幣值? ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int amount; int temp; int ten,five,one; cout<<"請輸入您的換幣金額 : "; cin>>amount; temp = amount; ten = temp/10; temp= temp-(ten*10); five = temp/5; temp=temp-(five*5); one = temp/1; temp=temp-(one*1); cout<<amount<<"元共可兌換零錢:拾圓"<<ten<<"個 伍圓"<<five<<"個 壹圓"<<one<<"個"; } ``` ![](https://hackmd.io/_uploads/By5EdWWgp.png) ### 執行結果 ![](https://hackmd.io/_uploads/B1vS_bWga.png) ## 第三題練習題 ### 題目 攝氏與華氏溫度的轉換公式為C = (F - 32) * 5 / 9,其中C代表攝氏、F是華氏。我 們可以把這個公式寫成如下的C++程式。 ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ double C; double F; cout<<"請輸入華氏的溫度:"; cin>>F; C = (F-32)*5/9; cout<<"換算成攝氏溫度為"<<C<<"度"; } ``` ![](https://hackmd.io/_uploads/ByQSKbZxT.png) ### 執行結果 ![](https://hackmd.io/_uploads/SyFLtZ-e6.png) ## 第四題練習題 ### 題目 假設火車站的自動販售機能接受50元、10元、5元及1元的硬幣,請撰寫一個程式,算出購買此票價之車票時,所需投入各種幣值硬幣最少的數量,並將各種幣值所需的數量輸出。 ### 程式碼 ``` cpp #include <iostream> using namespace std; int main(){ int amount; int temp; int fifty,ten,five,one; cout<<"請輸入車票票價 = "; cin>>amount; temp = amount; fifty = temp/50; temp= temp-(fifty*50); ten = temp/10; temp= temp-(ten*10); five = temp/5; temp=temp-(five*5); one = temp/1; temp=temp-(one*1); cout<<amount<<" 元,各種幣值的最少數量為:\n"; cout<<"伍拾圓 "<<fifty<<" 個\n"; cout<<"拾圓 "<<ten<<" 個\n"; cout<<"伍圓 "<<five<<" 個\n"; cout<<"壹圓 "<<one<<" 個\n"; } ``` ![](https://hackmd.io/_uploads/BkcBjZZlp.png) ### 執行結果 ![](https://hackmd.io/_uploads/HJ9Eibbgp.png) ## 心得 今天的課程涵蓋了貨幣兌換、換零錢、以及溫度轉換的程式練習。透過這些題目,我更加熟悉了C++中的使用者輸入、輸出和基本數學運算。特別是如何使用除法和取餘數來解決問題,這使我對程式的應用有了更深入的理解。 # 20230927上課作業 ## 第一題練習題 ### 題目 發生船難,你選擇留下什麼? 選擇(1)留下老人和孕婦 選擇(2)留下老人和嬰兒 選擇(3)留下老人和金銀珠寶 選擇(4)留下孕婦和嬰兒 選擇(5)留下孕婦和金銀珠寶 選擇(6)留下嬰兒和金銀珠寶 輸入各選擇後回應如下: (1)你的情感很細膩,善於觀察細節。在感情中,相比於戀人的甜言蜜語,你更在乎對方實際的行動。 (2)在感情中,你不僅洞察力超好,第六感也很強,越是親近的人這種直覺越敏銳,所以另一半對你很難有所隱藏,因為你可以憑借著蛛絲馬跡得到你想要知道的消息。 (3)你是個典型的顏控,在擇偶時很注重另一半的外表和身高。 (4)面對感情你很承盾,一方面你很感性,渴望浪漫熱烈的愛情;另一方面你又很理性,明白現實的殘酷和金錢的重要性 (5)在感情方面你很挑剔,所以很難遇到心動的對象。不過在戀愛時你卻很專一,一旦喜歡上某個人,你就會全心全意的對他好,所以和你談戀愛是一件很幸福的事。 (6)在感情中你很缺乏安全感,有時候會忍不住通過試探或考驗的方式去確認對方是否愛你。 其他輸入: 亂輸入,活該一輩子舔狗命!!! ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int choice; cout<<"發生船難,你選擇留下什麼?\n"; cout<<"選擇(1)"<<"留下老人和孕婦\n"; cout<<"選擇(2)"<<"留下老人和嬰兒\n"; cout<<"選擇(3)"<<"留下老人和金銀珠寶\n"; cout<<"選擇(4)"<<"留下孕婦和嬰兒\n"; cout<<"選擇(5)"<<"留下孕婦和金銀珠寶\n"; cout<<"選擇(6)"<<"留下嬰兒和金銀珠寶\n"; cout<<"輸入你的選擇 : "; cin>>choice; if (choice >6 || choice<1) cout<<"亂輸入,活該一輩子舔狗命!!!\n"; else if(choice==1) cout<<"你的情感很細膩,善於觀察細節。在感情中,相比於戀人的甜言蜜語,你更在乎對方實際的行動。\n"; else if(choice==2) cout<<"在感情中,你不僅洞察力超好,第六感也很強,越是親近的人這種直覺越敏銳,所以另一半對你很難有所隱藏,因為你可以憑借著蛛絲馬跡得到你想要知道的消息。\n"; else if(choice==3) cout<<"你是個典型的顏控,在擇偶時很注重另一半的外表和身高。\n"; else if(choice==4) cout<<"面對感情你很承盾,一方面你很感性,渴望浪漫熱烈的愛情;另一方面你又很理性,明白現實的殘酷和金錢的重要性\n"; else if(choice==5) cout<<"在感情方面你很挑剔,所以很難遇到心動的對象。不過在戀愛時你卻很專一,一旦喜歡上某個人,你就會全心全意的對他好,所以和你談戀愛是一件很幸福的事。\n"; else if(choice==6) cout<<"在感情中你很缺乏安全感,有時候會忍不住通過試探或考驗的方式去確認對方是否愛你。\n"; } ``` ![](https://hackmd.io/_uploads/B1Ig6u9x6.png) ### 執行結果 ![](https://hackmd.io/_uploads/r1b2ud5la.png) ## 第二題練習題 ### 題目 下列程式將讓使用者輸入x、y值,判斷(x, y)在第幾象限。若x與y皆為正數是在第 一象限;皆為負數是在第三象限;若x為正數、y為負數,在第四象限;若x為負數、y為 正數,則在第二象限 ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int x,y; cout<<"請輸入x值(不可輸入0):"; cin>>x; cout<<"請輸入y值(不可輸入0):"; cin>>y; if (x < 0) if(y<0) cout<<"("<<x<<", "<<y<<")"<<"在第三象限"; else cout<<"("<<x<<", "<<y<<")"<<"在第二象限"; else if(y<0) cout<<"("<<x<<", "<<y<<")"<<"在第四象限"; else cout<<"("<<x<<", "<<y<<")"<<"在第一象限"; } ``` ![](https://hackmd.io/_uploads/rkN0hOcxa.png) ### 執行結果 ![](https://hackmd.io/_uploads/Byb9YO9gp.png) ## 第三題練習題 ### 題目 輸入層數n即輸出層的*三角形。 ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int layer; cout<<"請輸入層數:"; cin>>layer; for (int y = 1;y<=layer;y++){ for (int x = 1;x<=layer;x++){ if(x<=y) cout<<"*"; else cout<<" "; } cout<<endl; } cout<<endl; for (int y = layer;y>0;y--){ for (int x = 1;x<=layer;x++){ if(x<=y) cout<<"*"; else cout<<" "; } cout<<endl; } for (int y = layer;y>=0;y--){ for (int x = 1;x<=layer;x++){ if(x>y) cout<<"*"; else cout<<" "; } cout<<endl; } cout<<endl; for (int y = 1;y<=layer;y++){ for (int x = 1;x<=layer;x++){ if(x>=y) cout<<"*"; else cout<<" "; } cout<<endl; } } ``` ![](https://hackmd.io/_uploads/HyysnOqlT.png) ### 執行結果 ![](https://hackmd.io/_uploads/S17youcxp.png) ## 第四題練習題 ### 題目 十二生肖查詢 ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int year,modul; cout<<"請輸入年:"; cin>>year; modul = year%12; switch (modul) { case 1: cout<<"鼠"; break; case 2: cout<<"牛"; break; case 3: cout<<"虎"; break; case 4: cout<<"兔"; break; case 5: cout<<"龍"; break; case 6: cout<<"蛇"; break; case 7: cout<<"馬"; break; case 8: cout<<"羊"; break; case 9: cout<<"猴"; break; case 10: cout<<"雞"; break; case 11: cout<<"狗"; break; default: cout<<"豬"; break; } } ``` ![](https://hackmd.io/_uploads/ryj4ndcl6.png) ### 執行結果 ![](https://hackmd.io/_uploads/BkpFiuqea.png) ## 第五題練習題 ### 題目 閏年 ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int year; cout<<"請輸入年:"; cin>>year; if (year%400 ==0||(year%4==0&&year%100>0)) cout<<year<<"年閏年"; else if (year%4 >0) cout<<year<<"年非閏年"; } ``` ![](https://hackmd.io/_uploads/ryf0puqlp.png) ### 執行結果 ![](https://hackmd.io/_uploads/SyLa6Oqlp.png) ## 心得 在這次的課程中,我學到了一些基本的程式設計技巧和邏輯思維。透過這些練習題,我能夠更好地理解如何使用條件判斷、迴圈和switch語句來處理不同的問題。我也學到了如何讓程式根據不同的輸入產生不同的輸出,這在解決各種實際問題時非常有用。 總的來說,這次課程讓我獲益良多,不僅學到了程式設計的基礎知識,還有機會自我探索和成長。我期待著繼續學習更多的程式設計技巧和解決問題的方法。 # 20231004上課作業 ## 第一題 ### 題目 夏季電費計算 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int degree;1 float check = 0; float amount; cout <<"夏季電費,請輸入用電度數:"; cin>>degree; do{ if (degree<=120){ amount = 1.63; check += degree*amount; degree -=degree;} else if (degree<=330){ amount = 2.38; check += (degree-120)*amount; degree -=(degree-120);} else if (degree<=500){ amount = 3.52; check += (degree-330)*amount; degree -=(degree-330);} else if (degree<=700){ amount = 4.80; check += (degree-500)*amount; degree -=(degree-500);} else if (degree<=1000){ amount = 5.83; check += (degree-700)*amount; degree -=(degree-700);} else{ amount = 7.69; check += (degree-1000)*amount; degree -=(degree-1000); } }while (degree != 0); cout<<"本月電費為 : "<<check<<" 元"; } ``` ![](https://hackmd.io/_uploads/ryfeK5mbp.png) ### 執行結果 ![](https://hackmd.io/_uploads/rJ88KqmbT.png) ## 第二題 ### 題目 成績加總 將使用者輸入的成績以do…while迴圈進行加總,直到使用者輸入-1,才顯示總分。 程式碼 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int grade; int totel; do{ cin>>grade; if (grade !=-1){ totel+=grade; } }while (grade != -1); cout<<"總分"<<totel; } ``` ![](https://hackmd.io/_uploads/Skw725XZa.png) ### 執行結果 ![](https://hackmd.io/_uploads/rk4e2cXZ6.png) ## 第三題 ### 題目 判斷奇數或偶數 請撰寫一個程式,使用if比較運算式,判斷使用者輸入的數值為奇數或偶數 程式碼 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int number; cin>>number; if (number%2==0){ cout<<"偶數"; }else{ cout<<"奇數"; } } ``` ![](https://hackmd.io/_uploads/rySZ69m-6.png) ### 執行結果 ![](https://hackmd.io/_uploads/SJRepqXZp.png) ## 第四題 ### 題目 可被3整除得總和 請撰寫一個程式,可計算出1到某正整數(由使用者輸入)間,所有可被3整除的數值之總 和。並請加上可讓使用者決定是否再算一次的功能。 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int number; char choice; int totel; do{ cin>>number; for (int i=1;i<=number;i++){ if (i%3==0&&i>=3){ totel+=i; } } cout<<totel<<endl; cout<<"再算一次?(y/n)"; cin>>choice; totel = 0; }while (choice=='y'); } ``` ![](https://hackmd.io/_uploads/BJTMkiQ-p.png) ### 執行結果 ![](https://hackmd.io/_uploads/SktQysQWT.png) ## 第五題 ### 題目 某購物網網站在使用者購物時,會依據使用者的身份(會員或非會員)給予不同等級的折 扣,而會員又可分3個等級,折扣方式如下圖所示: (1) 由使用者輸入商品訂價、是否為會員(輸入1為會員、2為非會員) (2) 再判斷會員等級(輸入1為鑽石會員、2為白金會員、3為普通會員),鑽石會員可打7 折、白金會員可打8折、普通會員可打9折 (3) 非會員可選擇是否加入會員(輸入1為加入會員、2為不加入會員),加入會員後即為普 通會員,可打9折,若不加入會員則以原價購買商品 ### 程式碼 ```cpp #include <iostream> using namespace std; int main(){ int memselect; int newmem; int memlv; int price; cout << "請輸入商品定價"; cin >> price; cout << "請問您是否有會員(輸入1為會員、2為非會員)"; cin >> memselect; if( memselect == 1 ){ cout << "請選擇您的會員等級(輸入1為鑽石會員、2為白金會員、3為普通會員)"; cin >> memlv; if ( memlv == 1 ){ cout << "您目前為鑽石會員,商品將打7折,"; price= (price * 0.7); cout << "您的商品價格為:" << price; } else if (memlv == 2 ){ cout << "您目前為白金會員,商品將打8折,"; price= (price * 0.8); cout << "您的商品價格為:" << price; } else if (memlv == 3){ cout << "您目前為普通會員,商品將打9折,"; price = (price * 0.9); cout << "您的商品價格為:" << price; } else { cout << "輸入錯誤"; } } else if ( memselect == 2 ){ cout << "請問是否要加入會員呢? (輸入1為加入會員、2為不加入會員)"; cin >> newmem; if ( newmem == 1 ){ cout << "歡迎加入會員,您目前為普通會員,商品將打9折。"; price = (price * 0.9); cout << "您的商品價格為:" << price; } else if ( newmem == 2) { cout << "您的商品價格為:" << price; } else { cout << "輸入錯誤"; } } } ``` ![](https://hackmd.io/_uploads/BJ6rqcMfT.png) ### 執行結果 ![](https://hackmd.io/_uploads/HybP5qGM6.png) ## 第六題 ### 題目 計算全班平均 請設計可輸入全班成績(人數不固定)的程式,此程式可完成以下工作: (1) 請同學輸入全班人數 (2) 再輸入每位同學的成績 (3) 計算全班平均成績、及格人數、與不及格人數(60分為及格),並將其輸出 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int amount,above,below,total; float average; cin>>amount; for (int i=1;i<=amount;i++){ int grade; cin>>grade; total+=grade; if (grade<60){ below +=1; }else{ above +=1; }; } average = (total/amount); cout<<"全班平均成績: "<<average<<endl<<"及格人數: "<<above<<endl<<"與不及格人數(60分為及格): "<<below; } ``` ![image.png](https://hackmd.io/_uploads/B1d3sOump.png) ### 執行結果 ![image.png](https://hackmd.io/_uploads/BkE9juuma.png) ## 第七題 ### 題目 利用條件運算子,輸入一數值,取其絕對值。 ### 程式碼 ```cpp #include<iostream> #include <cmath> using namespace std; int main(){ int number,after; cout<<"請輸入一整數:"; cin>>number; after = sqrt((number*number)); cout<<number<<"的絕對值是"<<after; } ``` ![image](https://hackmd.io/_uploads/HyCdRR9N6.png) ### 執行結果 ![image](https://hackmd.io/_uploads/rkbFRR5Vp.png) ## 第八題 ### 題目 學生家佑最近在數學課學到了雞兔同籠問題,請建立C程式使用while迴圈幫家佑解雞兔同籠問題,目前只知道在籠子中共有40隻雞或兔,總共有100隻腳,請問雞兔各有多少隻? 程式碼 ### 程式碼 ```cpp #include<iostream> #include <cmath> using namespace std; int main(){ int total = 40; int leg = 100; int x,y; do{ x+=1; y=40-x; }while(x+y!=40||(4*x)+(2*y)!=100); cout<<"雞:"<<y<<endl<<"兔:"<<x; } ``` ![image](https://hackmd.io/_uploads/BJwlJ1j4T.png) ### 執行結果 ![image](https://hackmd.io/_uploads/SJrW1yoV6.png) # 20231101上課作業 ## 第一題練習題 ### 題目 查詢語音費率函式 下列程式為依據手機月租費方案(如下),查詢語音費率的函式。 y 月租費196:每秒0.0869元。 y 月租費396:每秒0.0782元。 y 月租費796:每秒0.0696元。 ### 程式碼 ```cpp #include<iostream> using namespace std; float getmoney(int types){ switch (types){ case 196: return 0.0869; case 396: return 0.0782; case 796: return 0.0696; default: return 0; } } int main(){ int month; float money; cout<<"請輸入要查詢的月租費方案(196、396、796):"; cin>>month; money = getmoney(month); cout<<"語音費率每秒:"<<money<<"元"; } ``` ![image](https://hackmd.io/_uploads/rkcqxJj4T.png) ### 執行結果 ![image](https://hackmd.io/_uploads/SyB3eJoVa.png) ## 第二題練習題 ### 題目 猜數字遊戲 利用亂數函式及自訂函式,使答案由電腦亂數產生,讓每一次執行遊戲的答案都不相同,並在遊戲進行時,提供提示給玩家 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> using namespace std; int check(int ans,int number){ if (ans>number){ cout<<"猜錯了,再小一點\n"; return 0; }else if (ans<number){ cout<<"猜錯了,再大一點\n"; return 0; }else{ cout<<"猜對了!YA!\n"; return 1; } } int main(){ int ans; int number; int win=1; srand(time(0)); number = rand()%10+1; while(win){ ans = 0; cout<<"猜猜看數字是多少?(1~10):"; cin>>ans; win = !check(ans,number); }; } ``` ![image](https://hackmd.io/_uploads/Sk5xGksV6.png) ### 執行結果 ![image](https://hackmd.io/_uploads/Sk7xzkiNT.png) ## 第三題練習題 ### 題目 組成三角形 以函式的方式撰寫判斷輸入的三個值是否可組成三角形之程式(判斷條件:任兩邊和須大於第三邊)。 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> using namespace std; bool check(int a,int b,int c){ if (a+b>c&&a+c>b&&b+c>a){ return true; }else{ return false; } } int main(){ int a,b,c; cout<<"請輸入三角形的三個邊長:\n"; cin>>a>>b>>c; if (check(a,b,c)){ cout<<a<<"、"<<b<<"、"<<c<<"可組成三角形\n"; }else{ cout<<a<<"、"<<b<<"、"<<c<<"不可組成三角形\n"; } } ``` ![image](https://hackmd.io/_uploads/r1G8fyjNT.png) ### 執行結果 ![image](https://hackmd.io/_uploads/Bk_BfJs4p.png) ## 第四題練習題 ### 題目 遞迴 能使用遞迴的程式技巧實作階乘運算。 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> using namespace std; int Factor(int a){ if (a!=1){ int temp = a*Factor(a-1); return temp; } } int main(){ int a,c; cout<<"請輸入一個整數n(n>0): "; cin>>a; c = Factor(a); cout<<"階乘"<<a<<"!="<<c; } ``` ![image](https://hackmd.io/_uploads/B1pszJsNa.png) ### 執行結果 ![image](https://hackmd.io/_uploads/HkIjfJsNp.png) ## 第五題練習題 將1~4題寫成一個專案型式。 ◎注意:第五題不需要寫在HackMD中,完成後請找老師評分。 ◎成績計算方式,全對且第一位完成者100分,依次遞減2分;88分後,每次遞減1分。 ### 題目 ### 程式碼 ```cpp ``` ### 執行結果 # 20231115上課作業 ## 第一題練習題 ### 題目 1.今彩539是一種樂透型遊戲,您必須從01~39的號碼中任選5個號碼進行投注。開獎時,開獎單位將隨機開出五個號碼,這一組號碼就是該期今彩539的中獎號碼,也稱為「獎號」。您的五個選號中,如有二個以上(含二個號碼)對中當期開出之五個號碼,即為中獎,並可依規定兌領獎金。 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> #include <algorithm> using namespace std; int seed[5]; void CheckAward(int UserAnswer[5]){ int count = 0; for(int i=0;i<5;i++){ if (seed[i]==UserAnswer[i]){ count +=1; } } switch(count){ case 5: cout<<"頭獎"; break; case 4: cout<<"貳獎"; break; case 3: cout<<"參獎"; break; case 2: cout<<"肆獎"; break; } } bool checkrepeated(int i){ if (i==0)return false; for (int f=0;f<i;f++){ if (seed[f]==seed[i]){ return true; break; } } return false; } void Seed(){ for(int i=0;i<5;i++){ { seed[i] = rand()%39+1; }while(checkrepeated(i)); } } int main(){ srand(time(0)); Seed(); int UserSeed[5]; cout<<"本期樂透號碼開出順序:\n"; cout<<"開出順序: "; for(int i=0;i<5;i++){ cout<<seed[i]<<" "; } cout<<endl; cout<<"號碼順序: "; int n = sizeof(seed) / sizeof(seed[0]); sort(seed, seed + n); for(int i=0;i<5;i++){ cout<<seed[i]<<" "; } cout<<endl; for(int i=0;i<5;i++){ cout<<"請輸入號碼"<<i+1<<": "; cin>>UserSeed[i]; } cout<<endl; CheckAward(UserSeed); } ``` ![image](https://hackmd.io/_uploads/ryvRXkjV6.png) ### 執行結果 ![image](https://hackmd.io/_uploads/Hyi07kjN6.png) ## 第二題練習題 ### 題目 2.在「字元陣列」中放入10個英文字母,然後將字母依小到大(a到z)順序從螢幕輸出。 程式碼 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> #include <algorithm> using namespace std; int main(){ char A[10]; for(int i=0;i<10;i++){ cout<<"請輸入A"<<"["<<i<<"]"<<"的字元: "; cin>>A[i]; } int n = sizeof(A) / sizeof(A[0]); sort(A, A + n); cout<<endl; for(int i=0;i<10;i++){ cout<<A[i]; } } ``` ![image](https://hackmd.io/_uploads/SkPCNJoV6.png) ### 執行結果 ![image](https://hackmd.io/_uploads/Hkqp4yjVp.png) ## 第三題練習題 ### 題目 奇數或偶數:使用亂數函數 rand()產生10整數,分別對奇數的數加總以及偶數的數加總。 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> #include <algorithm> using namespace std; int numbers[10]; void GiveNumber(){ for(int i=0;i<10;i++){ numbers[i] = rand()%10+1; } cout<<"The numbers:"; for(int i=0;i<10;i++){ cout<<numbers[i]<<","; } cout<<endl; } void SumEvenAndOdd(){ int sumE=0; int sumO=0; for(int i=0;i<10;i++){ if (numbers[i]%2==0){ sumE+=numbers[i]; }else{ sumO+=numbers[i]; } } cout<<"The sum of even numbers:"<<sumE<<endl; cout<<"The sum of odd numbers:"<<sumO; } int main(){ srand(time(0)); GiveNumber(); SumEvenAndOdd(); } ``` ![image](https://hackmd.io/_uploads/HyBdHJiN6.png) ### 執行結果 ![image](https://hackmd.io/_uploads/S1uIHyoVp.png) ## 第四題練習題 ### 題目 4.請使用二維陣列存取學生的多科成績,並輸出班級成績單。 ### 程式碼 ```cpp #include<iostream> #include<time.h> #include<stdlib.h> #include <algorithm> using namespace std; int Students[4][6]; void EnterStudentsGrade(){ cout<<"輸入每位學生的成績(依序為國、英、數、基電、物理,以空格區隔)"<<endl; for(int i=0;i<4;i++){ int sum=0; cout<<i+1<<" 號學生:"; for(int j=0;j<5;j++){ cin>>Students[i][j]; } //sum for(int k=0;k<5;k++){ sum += Students[i][k]; } Students[i][5] = sum; } } void ShowGrade(){ cout<<endl; cout<<"班級成績單"<<endl; cout<<"座號 國文 英文 數學 機電 物理 總分\n"; cout<<"==================================\n"; for(int i=0;i<4;i++){ cout<<i+1<<" "; for(int j=0;j<6;j++){ cout<<Students[i][j]<<" "; } cout<<endl; } } int main(){ EnterStudentsGrade(); ShowGrade(); } ``` ![image](https://hackmd.io/_uploads/BJs-LJj4a.png) ### 執行結果 ![image](https://hackmd.io/_uploads/HkebI1iV6.png) # 20231129上課作業 ## 第一題練習題 ### 題目 1.在圖一的表格中,橫排稱為列(row),直排稱為行(column),以Xij來 表示表格X中的第i列第j行的元素。如圖一中的X00=1、X12=6。 請設計一個程式可執行以下工作: (1) 根據使用者輸入的數值設定表格大小(先輸入列,再輸入行) (2) 由使用者輸入數值填滿表格 (3) 輸入完成後,將整個表格印出 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int row,column; cin >> row >> column; int list[row][column]; for(int i=0;i<row;i++){ for(int j=0;j<column;j++){ cin>>list[i][j]; } } for(int i=0;i<row;i++){ for(int j=0;j<column;j++){ cout<<"list["<<i<<"]["<<j<<"] = "<<list[i][j]<<" "; } cout<<endl; } } ``` ### 執行結果 ![image](https://hackmd.io/_uploads/SyIs4OYUT.png) ## 第二題練習體 ### 題目 2.請設計一程式可執行以下工作: (1) 輸入5個值並存入一維陣列a中 (2) 計算陣列a中5個值的總和,並印出 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int a[5]; int total=0; for(int i=0;i<5;i++){ cin>>a[i]; total+=a[i]; } cout<<total; } ``` ### 執行結果 ![image](https://hackmd.io/_uploads/BJ0wruYLp.png) ## 第三題煉習題 ### 題目 ### 程式碼 ```cpp #include<iostream> using namespace std; int main(){ int *p = new int[5]; int largist = 0; for(int i=0;i<5;i++){ cin>> p[i]; if (p[i]>p[largist]){ largist = i; } } cout<<"指標變數p所指向的記憶體起點:"<< p<<endl; cout<<"最大值為"<<p[largist]<<endl; cout <<"最大值的記憶體位址:"<<(p+largist)<<endl; } ``` ![image](https://hackmd.io/_uploads/B1pdPdFI6.png) ### 執行結果 ![image](https://hackmd.io/_uploads/SJUhvOKL6.png) # 20231206上課作業 ## 第一題練習題 ### 題目 Eva的家庭作業裏有很多數列填空練習。填空練習的要求是:已知數列的前四項,填出第五項。因 為已經知道這些數列只可能是等差或等比數列,她決定寫一個程式來完成這些練習。 ![image](https://hackmd.io/_uploads/H19AvOFL6.png) ### 程式碼 ```cpp ``` ### 執行結果 ## 第二題練習題 ### 題目 ### 程式碼 ```cpp ``` ### 執行結果