C++上机作业

  • 格式:doc
  • 大小:127.50 KB
  • 文档页数:9

面向对象程序设计小作业源程序班级:田知伟学号:41211080151.C++编程以函数调用的方式,求圆柱体的体积(半径和高由键盘输入)。

源程序:#include <iostream>using namespace std;int main(){double r, h, v;cout << "请输入圆柱的半径和高:";cin >> r >> h;if(cin.fail() || r <= 0 || h <= 0){cout << "数据输入不合理,请重新输入!";cin.clear();cin.ignore(1024, '\n');}else{ v=3.14 * r*r * h;cout << "\n圆柱的体积是:" << v<< endl;}}结果:2. 将100元钱兑换成10元,5元,1元,编程求所有的兑换法,要求每种兑法中都有这三种面值。

源程序:#include<iostream>using namespace std;int main(void){ int n=0;int a = 10;for(int i=1; i<a; i++){int b = (100 - 10 * i) / 5;for(int j=1; j<b; j++){cout << i << " 张10元," << j << " 张5元," << 100-10*i-5*j << " 张1元," << endl; ++n;} }cout<<"total="<<n<<endl;} 结果:3. 用引用实现两数的交换。

源程序:#include<iostream>using namespace std;void exchange(int&x,int &y);int main(void){int a,b;cout <<"input a,b:";cin>>a>>b;cout<<"Before exchange, a="<<a<<",b="<<b<<endl; exchange(a,b);cout<<"After exchange, a="<<a<<",b="<<b<<endl; return ;}void exchange(int&x,int&y){int z;z=x;x=y;y=z;}结果:4. 用递归的方法求x的n阶勒让德多项式的值源程序:#include <iostream>using namespace std;double lerangde(int,double);int main (){double n,x;cout <<"input n,x:";cin>>n>>x;cout <<"n="<<n<<" "<<"x="<<x<<'\n';cout<<'P'<<n<<'('<<x<<")="<<lerangde(n,x)<<'\n'; return 0;}double lerangde(int n,double x){double y;if (n==0) y=1;else if(n==1) y=x;else y=((2*n-1)*x-lerangde(n-1,x)-(n-1)*lerangde(n-2,x))/n; return y;}结果:5.创建一个名为student的类,该类包含姓名,班级学号和c++成绩等属性,display()用于显示个人信息,modifygrade()用于修改成绩; modifyname()用于修改名字; modifycode()用于修改学号。

源程序:#include <iostream>using namespace std;class student{public:student(char n[10],int c,float g){for(int i=0;i<10;i++)name[i]=n[i];code=c;grade=g;}modifycode(char* pN);modifyname(char* pN);modifygrade(char* pN);displaygrade(){cout<<name<<"同学C++成绩为"<<grade<<endl;}displaycode(){cout<<name<<"同学学号为"<<code<<endl;}disply(){ cout<<"修改请按1\n";cout<<"修改后信息请按2\n"; }private:char name[10];int code;float grade;char lcode[10];char lname[10];char lgrade[10];};student::modifycode(char* pN){if(lcode!=0)strcpy(lcode,pN);cout<<name<<"的C++成绩改为:"<<lcode<<endl; }student::modifyname(char* pN){if(lname!=0)strcpy(lname,pN);cout<<name<<"的姓名改为:"<<lname<<endl;}student::modifygrade(char* pN){if(lgrade!=0)strcpy(lgrade,pN);cout<<name<<"的学号改为:"<<lgrade<<endl;}void main(){ char in;char lcode[10];char lname[10];char lgrade[10];student a("甲",15,90);a.displaygrade();a.displaycode();a.disply();do{ cin>>in;switch(in){case'1':cout<<"成绩修改为:";cin>>lcode;cout<<"学号修改为:";cin>>lgrade;cout<<"姓名修改为:";cin>>lname;case'2': break;}}while(in!='2');cout<<"修改后信息为:"<<endl;a.modifycode (lcode);a.modifygrade (lgrade);a.modifyname (lname);}结果:6. 根据你所具备的复数知识,为复数类定义一个比较完善的操作。

使之能够完成下列运算:complex a(2,5),b(10,8),c(0,0);c=a*b;c=b+3.4;源程序:#include <iostream.h>class complex{public:complex(double r=0.0,double i=0.0){real=r,imag=i;}complex operator +(complex d);complex operator *(complex b);void display();private:double real;double imag;};complex complex::operator +(complex d){return complex(real + d.real,imag + d.imag); }complex complex::operator *(complex b){ complex c;c.real=real*b.real-imag*b.imag;c.imag=real*b.imag+imag*b.real;return c;}void complex::display(){cout <<"("<<real<<","<<imag<<")"<<endl; }void main(){complex a(2,5),b(10,8),d(3.4,0),c(0,0); cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();c=a*b;cout<<"c = a*b =";c.display();c=b+d;cout<<"c =b+3.4=";c.display();}结果:。