107高考-資訊處理-程式語言 第三題、第四題參考答案

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

第三題

請撰寫一支密碼產生模組程式,此模組的密碼組成為一個五位數字,最後一碼  (個位數)  為驗證碼。合法的密碼規則是除了驗證碼之外的所有數字相乘後取除以 10 的餘數當作驗證碼。例如:13575 即為合法的密碼,因為(1*3*5*7)%10 = 5。請撰寫一支完整 程式,包含主程式和codeGen( );codeGen( )  功能為輸入參數為密碼的前四碼,輸出為產生驗證碼之後的五位數字密碼。程式讓使用者輸入密碼的前四碼後,檢查使用者所輸入的數值是否為四位數,正確的話則呼叫  codeGen( )  將傳回之

五位數字密碼從螢幕顯示出。主程式中需有迴圈功能詢問使用者是否要繼續輸入,直到使用者按下不是  ‘Y’  或  ‘y’  鍵時結束程式。


參考答案

  1. #include <stdio.h>

  2. #include <math.h>

  3.  

  4. void codeGen(int a[]) 

  5. {

  6.     int p = 1;

  7.     for(int i = 0; i < 4; i++) {

  8.         p *= a[i];   // 所有數字相乘後

  9.         printf("%d", a[i]);

  10.     }

  11.     printf("%d\n", p%10); // 除以 10 的餘數當作驗證碼

  12. }

  13.  

  14. int main() {

  15.   int n;

  16.   char ch = 'Y';

  17.  

  18.   while(ch == 'Y' || ch == 'y') {

  19.     printf("請輸入四位數字:");

  20.     scanf("%d", &n);

  21.  

  22.     int t = n;

  23.     int d = 0; // 計算數字有幾位數

  24.     int num[4];

  25.     while(t >= 1) {

  26.         num[3 - d] = t % 10;

  27.         t = t / 10;

  28.         d++;

  29.     }

  30.  

  31.     if(d < 4) {

  32.         printf("請正確輸入四位數字!\n");

  33.     } else {

  34.       codeGen(num);

  35.     }

  36.     printf("要繼續請輸入 Y 或 y:");

  37.     scanf(" %c", &ch);

  38.   }

  39.  

  40.   return 0;

  41. }

  42.  



第四題

請撰寫一支完整的 C/C++程式,此程式包含一個一維陣列,陣列元素的個數由使用者輸入,陣列元素值由時間亂數產生,數值範圍介於在 1(含)至 99(含)間。此程式需包含下列函數: 

(一) arrMean():將所傳入的一維陣列計算此陣列元素的平均值後傳回。

(二) arrBubble():將所傳入的一維陣列利用氣泡排序法將陣列元素由小至大排序。

(三) 撰寫 main()以驗證 arrMean()與 arrBubble()的正確性。


參考答案

  1. #include <iostream>

  2. using namespace std;

  3.  

  4. int n; // 陣列大小

  5.  

  6. // 將所傳入的一維陣列d計算此陣列元素的平均值後傳回。

  7. float arrMean(int *d) {

  8.   float sum = 0;

  9.   for(int i = 0; i < n; i++) {

  10.     sum = sum + d[i];

  11.   }

  12.   cout << "Total:" << sum << "\n";

  13.   return sum / n;

  14. }

  15. // 2, 8, 5, 3

  16. // i = 0 d[i] = 5 // 外層

  17. //   // 內層

  18. //   j = 0 d[j] = 5  

  19. //   j = 1 d[j] = 8 

  20. //   j = 2 d[j] = 3

  21. //   j = 3 d[j] = 2

  22.  

  23. void arrBubble(int *d) {

  24.   for(int i = 0; i < n; i++) {

  25.     for(int j = 0; j < n; j++) { 

  26.       if(d[j] > d[j+1]) { // 小排到大

  27.         int tmp = d[j];

  28.         d[j] = d[j+1];

  29.         d[j+1] = tmp;

  30.       }

  31.     }

  32.   }

  33.  

  34.   cout << "Sorted:";

  35.   for(int i = 0; i < n; i++)

  36.     cout << d[i] << ", ";

  37. }

  38.  

  39. int main(void) {

  40.   cin >> n;

  41.   int *A = new int[n]; // 一維陣列

  42.   for(int i = 0; i < n; i++) {

  43.     A[i] = rand() % 99 + 1; // 數值範圍介於在 1(含)至 99(含)間

  44.   }

  45.   cout << arrMean(A) << "\n";

  46.   arrBubble(A);

  47. }

  48.