信阳师院《C++程序设计》作.docx
信阳师院C+程序设计作2-26、编写一个完整的程序,实现功能:向用户提问“现在正在下雨吗?”,提示用户输入Y和N。若输入为Y,显示“现在正在下雨。”;若输入为N,显示“现在没有下雨。”;否则继续提问“现在正在下雨吗?”。 程序为: #include <iostream> #include <cstdlib> using namespace std; void main( ) char flag; while (1) cout<<"现在正在下雨吗?(Yes or No):" cin>>flag; if(toupper(flag)='Y') if(toupper(flag)='N') cout<<"现在没有下雨。"<<endl; break; cout<<"现在正在下雨。"<<endl; break; 2-28、实现一个简单的菜单程序,运行时显示"Menu:A(dd) D(delete) S(ort) Q(uit), Select one:"提示用户输入。A表示增加,D表示删除,S表示排序,Q表示1 退出。输入为A、D、S时分别提示“数据已经增加、删除、排序。”,输入为Q时程序结束。 (1)要求使用if···else语句进行判断,用break,continue控制程序流程。 (2)要求使用switch语句。 程序1: #include <iostream> #include <cstdlib> using namespace std; void main( ) char choice,c; while (1) cout<<"Menu:A(dd) D(delete) S(ort) Q(uit),Select one:" cin>>c; choice=toupper(c); if(choice='A') cout<<"数据已经增加."<<endl; continue; else if(choice='D') cout<<"数据已经删除."<<endl; continue; else if(choice='S') 2 cout<<"数据已经排序."<<endl; continue; else if(choice='Q') break; 运行结果为: 程序2: #include <iostream> #include <cstdlib> using namespace std; void main( ) char choice,c; while (1) cout<<"Menu:A(dd) D(delete) S(ort) Q(uit),Select one:" cin>>c; switch(toupper(c) 3 case'A': cout<<"数据已经增加."<<endl; break; case'D': cout<<"数据已经删除."<<endl; break; case'S': cout<<"数据已经排序."<<endl; break; case'Q': exit(0); break; default: ; 运行结果为: 3-12、在主程序中指示输入整数n,编写函数用递归的方法求1+2+3+···+n的值。 4 程序为: #include <iostream> #include <cmath> using namespace std; int fn1(int i); void main int fn1(int i) 运行结果为: if(i=1) return 1; else return i+fn1(i-1); int i; cout<<"请输入一个正整数:" cin>>i; cout<<"从1累加到"<<i<<"的和为:"<<fn1(i)<<endl; 3-14、用递归的方法编写函数求n阶勒让德多项式的值,在主程序中实现输入输出。 5 递归公式为: 1 (n=0) Pn(x)= x (n=1) (2n-1)x·Pn-1(x)-(n-1)Pn-2(x)/n (n>1) 程序为: #include <iostream> using namespace std; float p(int n,int x); void main int n,x; cout<<"请输入正整数n:" cin>>n; cout<<"请输入正整数x:" cin>>x; cout<<"n="<<n<<endl; cout<<"x="<<x<<endl; cout<<"P"<<n<<"("<<x<<")="<<p(n,x)<<endl; float p(int n,int x) if(n=0) return 1; else if(n=1) return x; 6 else return (2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x)/n; 运行结果为: 3-15、编写递归函数getPower计算xy,在同一个程序针对整型和实型两个重载的函数: 7 int getPower (int x,int y); /整型形式,当y<0时,返回0 double getPower (double x,int y); /实型形式 在主程序中实型输入输出,分别输入一个整数a和一个实数b作为底数,再输入一个整数m作为指数,输出am和b m 。 另外请读者思考,如果在调用getPower函数计算a的m次方时希望得到一个实型结果,该如何调用? 程序为: #include <iostream> using namespace std; int getpower(int x,int y); double getpower(double x,int y); void main( ) int a,m; double b; cout<<"please input a int number: "<<"a=" cin>>a; cout<<"please input a double number: "<<"b=" cin>>b; cout<<"please input a power: "<<"m=" cin>>m; cout<<"a的m次方是: "<<getpower(a,m)<<endl; cout<<"b的m次方是: "<<getpower(b,m)<<endl; int getpower(int x,int y) 8 if(y>=0) if(y=0) return 1; else if(y=1) return x; else return x*getpower(x,y-1); else return 0; double getpower(double x,int y) static double s=1; if(y=0) return 1; if(y>0) s*=x; getpower(x,-y); if(y<0) s*=1.0/x; getpower(x,+y); return s; 9