C.Primer.Plus(第六版)第七章 编程练习

来源:互联网 发布:ncpc nc.js 编辑:程序博客网 时间:2024/05/01 11:48
#include<iostream>#include<string>using namespace std;double program_7_1(double x,double y);int pro_7_2_set_arr(double [],int size);void pro_7_2_show_arr(double *,int size);double pro_7_2_average_arr(double arr[],int size);long double probability(unsigned t_numbers,unsigned t_picks,unsigned s_numbers,unsigned s_picks);struct box{    char maker[40];    float height;    float width;    float length;    float volume;};void pro_7_3_a(box stru);void pro_7_3_b(box* stru);long double factorial(int n);int pro_7_6_Fill_array(double arr[],int size);void pro_7_6_Show_array(double arr[],int size);void pro_7_6_Reverse_array(double arr[],int size);double* pro_7_7_fill_array(double *arr,int limit);void pro_7_7_show_array(const double* ps_beg,const double* ps_end);void pro_7_7_revalue(double r,double* ps_beg,double* ps_end);const char* season[4]={"Spring","Summer","Fail","Winter"};void pro_7_8_a(double arr[],int size);struct str_pro{    double str_dou[4];};void pro_7_8_b(str_pro xx,int size);const int SLEN= 30;struct student{    char fullname[SLEN];    char hobby[SLEN];    int ooplevel;};int getinfo(student pa[],int n);void display1(student st);void display2(const student* ps);void display3(const student pa[],int n);double calculate(double d1,double d2,double (*pm)(double d3,double d4));double add(double x,double y);double mul(double x,double y);double sub(double x,double y);int main(){/*  //7_1     double x,y;    int err_set=0;    cout<<"Please enter two number(enter number 0 to quit):";    while(cin>>x>>y)    {           if(x!=0&&y!=0)        {            cout<<"The harmonic average is "<<program_7_1(x,y)<<endl;            cout<<"Please input next two number:";        }        else        {               cout<<"The input data contains 0,end.\n ";            err_set++;//用于判断正常结束还是类型不匹配而结束程序。            break;        }    }    if(err_set==0)        cout<<"The input data type dismatch.\n";*//*  //7.2    double golf_score[10];    int size = pro_7_2_set_arr(golf_score,10);    pro_7_2_show_arr(golf_score,size);    double average = pro_7_2_average_arr(golf_score,size);    cout<<"\n"<<average<<endl;*//*  //7.3    box pro_box={"baseball",2.1f,3,2.3f,32};    pro_7_3_a(pro_box);    pro_7_3_b(&pro_box);*//*  //7.4    double total,t_choices,specially,s_choices;    cout<<"Enter the total number of choices on the game card and\nthe number of picks allowed:";    if((cin>>total>>t_choices>>specially>>s_choices)&&total>=t_choices&&specially>=s_choices)    {        cout<<"Your have one chance in ";        cout<<probability(total,t_choices,specially,s_choices);        cout<<" of wining.\n";          }       cout<<"bye!\n";*//* //7.5//  long double x = factorial(-1); 函数将返回-1.#IND/nan,一般它们来自于任何未定义结果(非法)的浮点数运算。这里对一个负数求阶乘即非法。    long double x=factorial(5);    cout<<x<<endl;*//*  //7.6    double pro_7_6[10];    int size=pro_7_6_Fill_array(pro_7_6,10);    pro_7_6_Show_array(pro_7_6,size);    pro_7_6_Reverse_array(pro_7_6,size);    pro_7_6_Show_array(pro_7_6,size);*//*  //7.7    double pro_7_7[10];    double* pro_end=pro_7_7_fill_array(pro_7_7,10);    pro_7_7_show_array(pro_7_7,pro_end);    pro_7_7_revalue(1.2,pro_7_7,pro_end);    pro_7_7_show_array(pro_7_7,pro_end);*//*  //7.8_a    double pro_7_8[4];    pro_7_8_a(pro_7_8,4);*//*  //7.8_b    str_pro str_test={2,3,4,5};    pro_7_8_b(str_test,4);*//*  // 7.9    cout<<"Enter class size:";    int class_size;    cin>>class_size;    while(cin.get()!='\n')        continue;    student* ptr_stu = new student[class_size];    int entered=getinfo(ptr_stu,class_size);    for(int i=0;i<entered;i++)    {        display1(ptr_stu[i]);        display2(&ptr_stu[i]);    }    display3(ptr_stu,entered);    delete [] ptr_stu;    cout<<"Done\n";*//*  //7.10_a    double q = calculate(2.3,10.2,add);    cout<<q<<endl;*//*  //7.10_b    double (*pf[3])(double ,double )={add,mul,sub};    double x,y,q;    while(cin>>x>>y)    {        for(int i=0;i<3;i++)        {            q = calculate(x,y,pf[i]);            cout<<q<<endl;          }    }*/    return 0;}/* //7.1double program_7_1(double x,double y){    return 2.0*x*y/(x+y);}*//* //7.2int pro_7_2_set_arr(double arr[],int size){    int true_size=0;    for(int i=0;i<size;i++)    {        cout<<"Please input the score of arr["<<i<<"](input dismatch data to quit):";        if(cin>>arr[i])            true_size++;        else            break;    }    return true_size;//将数组的真实长度返回以便下面的函数显示和求平均值。}void pro_7_2_show_arr(double arr[],int size){    for(int j=0;j<size;j++)    {        cout<<arr[j]<<",";    }}double pro_7_2_average_arr(double arr[],int size){    double sum=0;    for(int k=0;k<size;k++)    {        sum+=arr[k];    }    return sum/size;}*//* //7.3void pro_7_3_a(box stru){    cout<<stru.maker<<"\t"<<stru.length<<"\t"<<stru.height<<"\t"<<stru.volume<<"\t"<<stru.width<<endl;}void pro_7_3_b(box* stru){    stru->volume=stru->height*stru->length*stru->width;    cout<<"box volume:"<<stru->volume<<endl;}*//* //7.4long double probability(unsigned t_numbers,unsigned t_picks,unsigned s_numbers,unsigned s_picks){    long double result = 1.0;    long double tn,sn;    unsigned tp,sp;    for(tn=t_numbers,tp=t_picks;tp>0;tn--,tp--)        result=result*tn/tp;    for(sn=s_numbers,sp=s_picks;sp>0;sn--,sp--)        result=result*sn/sp;    return result;}   *//* //7.5 实现阶乘long double factorial(int n){    if(n>0)    {        return n*factorial(n-1);    }    else if(n==0)        return 1;    else        cout<<"Bad input data.";}*//* //7.6int pro_7_6_Fill_array(double arr[],int size){    int true_size=0;    for(int i=0;i<size;i++)    {        cout<<"Please input  double type data to arr["<<i<<"]:";        if(cin>>arr[i])            true_size++;        else            break;    }    return true_size;}void pro_7_6_Show_array(double arr[],int size){    for(int j=0;j<size;j++)        cout<<arr[j]<<"\t";    cout<<endl;}void pro_7_6_Reverse_array(double arr[],int size){    double temp=0;    for(int begin=1,end=size-2;end>begin;end--,begin++)    {        temp=arr[begin];        arr[begin]=arr[end];        arr[end]=temp;    }       }*//* //7.7double* pro_7_7_fill_array(double *arr,int limit){    double temp;    int i;    for(i=0;i<limit;i++)    {        cout<<"Enter value #"<<(i+1)<<":";        cin>>temp;        if(!cin)        {            cin.clear();            while(cin.get()!='\n')                continue;            cout<<"Bad input,input process terminated.\n";            break;        }        else if(temp<0)            break;        *(arr+i)=temp;    }    return arr+i;}void pro_7_7_show_array(const double* ps_beg,const double* ps_end){    for(;ps_beg<ps_end;ps_beg++)//不能取等号,ps_end指向数组末端下一个空间。        cout<<*ps_beg<<"\t";}void pro_7_7_revalue(double r,double* ps_beg,double* ps_end){    for(;ps_beg<ps_end;ps_beg++)        *ps_beg*=r;}*//* //7.8_avoid pro_7_8_a(double arr[],int size){       int total=0;    for(int i=0;i<size;i++)    {        cout<<"Enter "<<season[i]<<" expenses:";        cin>>arr[i];        total+=arr[i];    }    for(int j=0;j<size;j++)    {        cout<<season[j]<<": $"<<arr[j]<<endl;    }   }*//*//7.8_bvoid pro_7_8_b(str_pro xx,int size){    int total=0;    for(int i=0;i<size;i++)    {        cout<<"Enter "<<season[i]<<" expenses:";        cin>>xx.str_dou[i];        total+=xx.str_dou[i];    }    for(int j=0;j<size;j++)    {        cout<<season[j]<<": $"<<xx.str_dou[j]<<endl;    }       cout<<total<<endl;}*//* // 7.9 分别使用传值传递,传址和指向数组的指针操作结构体。int getinfo(student pa[],int n){    int count;    for(count=0;count<n;count++)    {        cout<<"Enter fullname:";        cin.getline(pa[count].fullname,SLEN);        cout<<"Enter hobby:";        cin.getline(pa[count].hobby,SLEN);        cout<<"Enter opplevel:";        cin>>pa[count].ooplevel;        cin.get();    }    return count;}void display1(student st){    cout<<"fullname: "<<st.fullname<<endl;    cout<<"hobby: "<<st.hobby<<endl;    cout<<"ooplevel: "<<st.ooplevel<<endl;}void display2(const student* ps){    cout<<"fullname: "<<ps->fullname<<endl;    cout<<"hobby: "<<ps->hobby<<endl;    cout<<"ooplevel: "<<ps->ooplevel<<endl;}void display3(const student pa[],int n){    for(int i=0;i<n;i++)    {    cout<<"fullname: "<<pa[i].fullname<<endl;    cout<<"hobby: "<<pa[i].hobby<<endl;    cout<<"ooplevel: "<<pa[i].ooplevel<<endl;    }}*//*//7.10_adouble add(double x,double y){    return x+y;}double calculate(double d1,double d2,double (*pm)(double d3,double d4)){    return (*pm)(d1,d2); }*//* //7.10_bdouble calculate(double d1,double d2,double (*pm)(double d3,double d4)){    return (*pm)(d1,d2); }double add(double x,double y){    return x+y;}double mul(double x,double y){    return x*y;}double sub(double x,double y){    return x-y;}*/
0 0
原创粉丝点击