2013-2014年度C++实验报告学院:机械学院专业:机械设计制造及其自动化学号:1240202414姓名:陆响明第三章:习题1.编写程序,求从键盘输入的3个数中的最大数。
#include<iostream.h>void main(){float a,b,c,d;cout<<"请输入3个整数:"<<'\n';cin>>a>>b>>c;if(a>b)d=a;else d=b;if(d>c)cout<<"最大数为:"<<d<<'\n';else cout<<"最大数为:"<<c<<'\n';}习题4.从键盘输入10个整数,求他们的平均值。
#include<iostream.h>void main(){cout<<"请输入10个数:"<<'\n';float a=0,b;for(int i=0;i<10;i++){cin>>b;a+=b;}a/=10;cout<<"它们的平均值为:"<<a<<'\n';}习题6.计算s=1+2+3+......+i,累加到s大于1000,并输出s和i的值。
#include<iostream.h>void main(){int s=0;for(int i=0;s<=1000;i++)s+=i;i--;cout<<"s="<<s<<'\t'<<"i="<<i<<'\n';}第四章:习题1.找出一维数组中值最大的元素及其下标,注意最大元素可能不止一个。
例如,{3,5,2,7,6,1,7,4,7,5}中的最大元素为7,其下标分别为3,6,8.#include<iostream.h>void main(){int a[10]={3,5,2,7,6,1,7,4,7,5};int *p,i,k,max=0;for(i=0;i<10;i++){p=&a[i];if (max<*p){max=a[i];k=i;}}cout<<"最大元素为:"<<max<<'\n'<<"下标为:"<<k<<'\t';k++;while(k<10){if(max==a[k])cout<<k<<'\t';k++;}cout<<'\n';}习题4.将杨辉三角的前N行保存第二维数组的下半三角中。
杨辉三角由正整数构成,每行除最左侧与最右侧的数为1外,其他数等于其左上方与正上方两个数的和,杨辉三角的前5行如下:11 11 2 11 3 3 11 4 6 4 1#include<iostream.h>void main(){int a[5][5];a[0][0]=1;for(int i=1;i<5;i++)a[i][0]=a[i][i]=1;for(int k=2;k<5;k++)for(int j=1;j<k;j++)a[k][j]=a[k-1][j-1]+a[k-1][j];for(int m=0;m<5;m++){for(int n=0;n<=m;n++)cout<<a[m][n]<<'\t';cout<<'\n';}}习题5.不使用字符串处理函数,通过指针变量拼接字符串。
如将“Good morning.”和“I am Tom.”拼接成“Goog morning.I am Tom.”#include<iostream.h>void main(){char a[]="Good morning.",b[]="I am Tom.",c[50],*p=a;for(int i=0;*p!=0;i++){c[i]=*p;p++;}p=b;for(;*p!=0;i++){c[i]=*p;p++;}c[i]=0;cout<<a<<'\n'<<b<<'\n'<<c<<'\n';}第五章:习题1.设计程序,求两个整数的最小公倍数。
#include<iostream.h>void fun(int a,int b){int c;if(a<b)c=b;else c=a;while(!(c%a==0&&c%b==0))c++;cout<<"这两个数的最小公倍数为:"<<c<<'\n';}void main(){cout<<"请输入两个整数:"<<'\n';int a,b;cin>>a>>b;fun(a,b);}习题2.设计程序,统计从键盘读入的一行字符中每个字符出现的次数。
#include<iostream.h>void fun(char a[]){int amount[26]={0},count=0;for(char*p=a;*p;p++)if(*p>='a'&&*p<='z')amount[*p-'a']++;else if (*p>='A'&&*p<='Z')amount[*p-'A']++;for(int i=0;i<26;i++)if(amount[i]){char c=i+'a';cout<<c<<':'<<amount[i]<<'\t';count++;if(count%5==0)cout<<'\n';}cout<<'\n';}void main(){cout<<"请输入一组字符串:"<<'\n';char a[100]={0};cin.get(a,100);fun(a);}习题6.设计函数int int _to_string(int num,char a[],int &n),对一个不为0的任意位数的十进制整数num,统计出num的位数n及个位数字之和s,并将每位数字以字符的形式存储到数组a中。
在主函数中调用int_to_string函数,对从键盘读入的整数进行调试。
调用该程序的运行结果如下:请输入一个整数:1234512345是5位数,其各位数字为1、2、3、4、5,各位数字之和为15. #include<iostream.h>int int_to_string(int num,char a[],int &n){cout<<num<<"是";int i=0,k;while(num){k=num%10;num/=10;a[i++]=k+'0';}a[i]=0;char *m=a,*h=&a[i-1];while(m<h){char t=*m;*m=*h;*h=t;m++;h--;}cout<<i<<"位数,其各位数字为";for(int j=0;a[j];j++){cout<<a[j]<<"、";n+=a[j]-'0';}return n;}void main(){int num,sum=0;char a[10];cout<<"请输入一个整数:"<<'\n';cin>>num;int s=int_to_string(num,a,sum);cout<<"各位数字之和为"<<s<<"。
"<<'\n';}第七章:习题3.定义一个Point类表示平面上的一点,再定义一个Rectangle类表示平面上的矩形,用Point类的对象作为Rectangle类的成员描述平面上矩形的顶点坐标。
要求Point中有相应的成员函数可以读取点的坐标值,类Rectangle中含有一个函数,用以计算并输出矩形的面积及顶点坐标。
在主函数中对类Rectangle 进行测试。
#include<iostream.h>#include<math.h>class Point{int x,y;public:Point(int a,int b){x=a;y=b;}int getx(){return x;}int gety(){return y;}};class Rectangle{Point p1,p2;int s;public:Rectangle(int e,int f,int g,int h):p1(e,f),p2(g,h){s=0;}void fun(){s=abs((p1.getx()-p2.getx())*(p1.gety()-p2.gety()));}void show(){cout<<"矩形面积为:"<<s<<'\n';}};void main(){cout<<"请输入两个点的坐标:"<<'\n';int a,b,c,d;cin>>a>>b>>c>>d;Rectangle r1(a,b,c,d);r1.fun();r1.show();}习题4.定义一个类,用于删除字符串中多余的字符,使其中的字符互不相同,具体要求如下:(1)类的数据成员(字符串)用指针表示,并在构造函数中根据参数的实际情况为该成员指针申请内存空间。