第7章4-6题

来源:互联网 发布:smtp 端口 编辑:程序博客网 时间:2024/06/05 11:13
第4题

#include<iostream>
long double probability(int all , int right);
int main()
{
using namespace std;
int nu = 0;
int choose = 0;
cout<<"请输入普选号码总数以及选择的号码个数.\n";
cin>>nu>>choose;
long double commonPro = probability(nu,choose);
cout<<"请输入特选号码总数以及选择号码个数.\n";
cin>>nu>>choose;
long double specialPro = probability(nu,choose);
cout<<"中奖概率位"<<commonPro*specialPro;
return 0;
}
long double probability(int all , int right) //计算概率
{
long double pro = 1;
for(int i = right ; i > 0 ; --i)
{
pro = pro * right / all;
--right;
--all;
}
return pro;
}

第5题

#include<iostream>
long long goRound(int nu); //c++11 long long
int main()
{
using namespace std;
int ts = 0;
cout<<"请输入一个整数:";
while(cin>>ts)
{
if(ts < 0 or ts > 12) //乘积计算限定在0-12否则long long也可能吃不消。。
break;
cout<<ts<<"的乘积为:"<<goRound(ts)<<endl;
}
cout<<"Bye!";//当输入不为整数的时候推出循环
return 0;
}

long long goRound(int nu)
{
long long result = nu;
if(nu == 0)
return 1;
else
{
--nu;
result = result * goRound(nu);
}
return result;
}

第6题

#include<iostream>
int fillArray(double* arr , int lenght);
void showArray(const double* arr , int lenght);
void turnArray(double* arr , int lenght);
using namespace std;
int main()
{
double myArray[10]; //先声明一个包含10个元素的数组
int maxLenght = fillArray(myArray,10);
showArray(myArray,maxLenght);
cout<<"反转数组.\n";
turnArray(myArray,maxLenght);
showArray(myArray,maxLenght);
cout<<"除首尾元素外,反转其他元素.\n";
double* newHeader = myArray+1;
int newTail = maxLenght - 2;
turnArray(newHeader,newTail); //这里传入数组第二个元素的地址,长度为原数组元素个数-2
showArray(myArray,maxLenght);
return 0;
}
int fillArray(double* arr , int lenght)
{
double mid = 0;
int realLenght = 0;
for(int i = 0 ; i < lenght ; ++i)
{
cout<<"请输入第"<<i+1<<"个数:";
if(cin>>mid)
{
*(arr+i) = mid;
++realLenght;
}
else
break;
}
return realLenght;
}
void showArray(const double* arr , int lenght)
{
for(int i = 0 ; i < lenght ; ++i)
cout<<"第"<<i+1<<"个数为"<<*(arr+i)<<endl;
}
void turnArray(double* arr , int lenght)
{
double midArray[lenght]; //声明一个数组暂时存放数据
for(int i = 0 ; i < lenght ; ++i)
*(midArray+i) = *(arr+i);
for(int i = 0 ; i < lenght ; ++i)
*(arr+i) = *(midArray + (lenght-1) - i); //翻转
}

0 0