close
[C++]程式設計練習(8) 沒有上段考周學長沒來,所以無資料,所以直接跳9。
這次第一題忘記抄題目,檔案忘記帶。
1.主要為輸入5個數字並剔除最大與最小最後再除以3
//需include iostream //需include iomanip using namespace std; float average(int num1,int num2,int num3,int num4,int num5); int main() { int a1,a2,a3,a4,a5; cout<<"Enter five scores of the student: "; cin>>a1>>a2>>a3>>a4>>a5; cout<<"The average score of the student is " <<setprecision(2)<<fixed<<average(a1,a2,a3,a4,a5)<<endl; } float average(int num1,int num2,int num3,int num4,int num5) { int a[5]; a[0]=num1; a[1]=num2; a[2]=num3; a[3]=num4; a[4]=num5; int max=num1; int min=num1; int sum=0; //找最大直 for(int i=0;i<5;i++) { sum+=a[i]; } for(int i=0;i<4;i++) { if(a[i]>a[i+1]) { max = a[i]; } } //找最小值 for(int i=0;i<4;i++) { if(a[i]<a[i+1]) { min = a[i]; } } return (sum-max-min)/3.0; }
2.
寫一個函式 int sqrfloor(int n),該函式接收一正整數 n,計算並傳回小於等於 n 且最接近 n 的完全平方數 k(完全平方數:開根號為正整數之數)。如 sqrfloor(5)則傳回 4;sqrfloor(9)則傳回 9。
請以以下主函式呼叫
//需include iostream using namespace std; int sqrfloor(int n); int main() { /* 寫一個函式 int sqrfloor(int n),該函式接收一正整數 n,計算並傳回小於等於 n 且最接近 n 的完全平方數 k(完全平方數:開根號為正整數之數)。如 sqrfloor(5)則傳回 4;sqrfloor(9)則傳回 9。 請以以下主函式呼叫 */ int num; cout << "Enter a number: "; cin >> num; cout << "sqrfloor(" << num << ") = " << sqrfloor(num)<<endl; } int sqrfloor(int n) { int n1=1; while(n1*n1<=n) { n1++; } return n1-1; }
3.寫一個函式 int factor_num(int n),該函式接收一正整數 n,然後回傳此數之正因數個數。
//需include iostream using namespace std; int factor_num(int n); bool isPrime(int num); int main() { /*寫一個函式 int factor_num(int n),該函式接收一正整數 n,然後回傳此數之正因數個數。*/ int num; cout << "Enter a number: "; cin >> num; cout << "The number of factors of " << num << " is " << factor_num(num)<<endl; } int factor_num(int n) { int i,x=0; for(i=1;i<=n;i++) { if((n%i)==0) { x++; } } return x; }
4.寫一個函式 int sumOfDigits(int n),該函式接收一正整數 n,計算並傳回此整數之各位數字和。
請以以下主函式呼叫
//需include iostream using namespace std; int sumOfDigits(int num); int main() { // 寫一個函式 int sumOfDigits(int n),該函式接收一正整數 n,計算並傳回此整數之各位數字和。 //請以以下主函式呼叫 int num; cout << "Enter a number: "; cin >> num; cout << "The sum of digits of " << num << " is " << sumOfDigits(num)<< endl; } int sumOfDigits(int num) { int sum=0; while(num>0) { sum+=num%10; num=num/10; } return sum; }
5.請寫一個函式 int rand_range(int min, int max),
該函式接收兩整數 min 與 max,計算並傳回介於min 與 max 間的隨機整數(包含 min 與 max)。
//需include iostream //需include stdlib.h //需include iomanip //需include time.h using namespace std; /* 請寫一個函式 int rand_range(int min, int max), 該函式接收兩整數 min 與 max,計算並傳回介於min 與 max 間的隨機整數(包含 min 與 max)。 */ int rand_range(int min, int max); int main() { int i, upperBound, lowerBound; srand(time(NULL)); cout << "Enter the lower bound: "; cin >> lowerBound; cout << "Enter the upper bound: "; cin >> upperBound; cout << "Generating random numbers between " << lowerBound << " and " << upperBound<< endl; for(i=1;i<=10;i++) cout << setw(4) << rand_range(lowerBound, upperBound); cout <<endl; } int rand_range(int min, int max) { int num; num=rand()%(max-min)+min; return num; }
6.請寫一個函式 void print3randnums(void),該函式不接收任何引數,但會印出 3 個介於 1 與 42 間且不重複的隨機整數。
請以以下主函式呼叫*
//需include iostream //需include stdlib.h //需include iomanip //需include time.h using namespace std; void static print3randnums(); /*請寫一個函式 void print3randnums(void),該函式不接收任何引數,但會印出 3 個介於 1 與 42 間且不重複的隨機整數。 請以以下主函式呼叫*/ int main() { int i; srand(time(NULL)); for(i=1;i<=5;i++) print3randnums(); } void print3randnums() { int a=0,b=0,c=0; a=rand()%42+1; b=rand()%42+1; c=rand()%42+1; if(b==a||b==c) { while(b!=a&&b!=c) b=rand()%42+1; } if(c==a||c==b) { while(c!=a&&c!=b) c=rand()%42+1; } cout<<"No 1: " <<a<<" "; cout<<"No 2: " <<b<<" "; cout<<"No 3: " <<c<<" "; cout<<endl; }
全站熱搜
留言列表