[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;
}
文章標籤
全站熱搜
