若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。
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’ 鍵時結束程式。
參考答案
#include <stdio.h>
#include <math.h>
void codeGen(int a[])
{
int p = 1;
for(int i = 0; i < 4; i++) {
p *= a[i]; // 所有數字相乘後
printf("%d", a[i]);
}
printf("%d\n", p%10); // 除以 10 的餘數當作驗證碼
}
int main() {
int n;
char ch = 'Y';
while(ch == 'Y' || ch == 'y') {
printf("請輸入四位數字:");
scanf("%d", &n);
int t = n;
int d = 0; // 計算數字有幾位數
int num[4];
while(t >= 1) {
num[3 - d] = t % 10;
t = t / 10;
d++;
}
if(d < 4) {
printf("請正確輸入四位數字!\n");
} else {
codeGen(num);
}
printf("要繼續請輸入 Y 或 y:");
scanf(" %c", &ch);
}
return 0;
}
第四題
請撰寫一支完整的 C/C++程式,此程式包含一個一維陣列,陣列元素的個數由使用者輸入,陣列元素值由時間亂數產生,數值範圍介於在 1(含)至 99(含)間。此程式需包含下列函數:
(一) arrMean():將所傳入的一維陣列計算此陣列元素的平均值後傳回。
(二) arrBubble():將所傳入的一維陣列利用氣泡排序法將陣列元素由小至大排序。
(三) 撰寫 main()以驗證 arrMean()與 arrBubble()的正確性。
參考答案
#include <iostream>
using namespace std;
int n; // 陣列大小
// 將所傳入的一維陣列d計算此陣列元素的平均值後傳回。
float arrMean(int *d) {
float sum = 0;
for(int i = 0; i < n; i++) {
sum = sum + d[i];
}
cout << "Total:" << sum << "\n";
return sum / n;
}
// 2, 8, 5, 3
// i = 0 d[i] = 5 // 外層
// // 內層
// j = 0 d[j] = 5
// j = 1 d[j] = 8
// j = 2 d[j] = 3
// j = 3 d[j] = 2
void arrBubble(int *d) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(d[j] > d[j+1]) { // 小排到大
int tmp = d[j];
d[j] = d[j+1];
d[j+1] = tmp;
}
}
}
cout << "Sorted:";
for(int i = 0; i < n; i++)
cout << d[i] << ", ";
}
int main(void) {
cin >> n;
int *A = new int[n]; // 一維陣列
for(int i = 0; i < n; i++) {
A[i] = rand() % 99 + 1; // 數值範圍介於在 1(含)至 99(含)間
}
cout << arrMean(A) << "\n";
arrBubble(A);
}