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;
}

 

 

 

arrow
arrow
    全站熱搜

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()