我是2014级江科大苏理工的机制专业,大一/二的时候学校会开设C++相关的课程,这门课我们系80多个人,挂了50多个,是学校最赚钱的课程之一。
主课会附属一门实践课,实践课就是学期末上交一份按照要求的报告。
下面是我当时写的报告。这个课只挂了一个,而且是因为实验报告找不到了。
虽然现在看来很简单,但是在当时的我来说,有一题没有完成。但是这是我编程秃头之路的开始,并持续至今。

江苏科技大学
(张家港)
实验报告
专业班级: 2014级机制专业 1班
课程名称: 计算机程序设计基础实践VC++
学 号:
学生姓名:
指导教师: 孙 娜
2015年6月
一、函数编程:
1.求素数问题:定义函数判断一个整数是否为素数,求300以内的素数,每行3个数形式输出。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include<iostream> using namespace std; int judge(int a) { if(a==2) return 1; if(a==3) return 1; if(a>=3) { for(int i=2;i<a;i++) {
if(a%i==0) return 0; else continue; } } return 1; } int main() { int num=0; for(int j=2;j<=300;j++) { if(judge(j)) { cout<<j<<' '; num++; if(num%3==0) { cout<<endl; } }
} return 0; }
|
2.最大公约数和最小公倍数问题:求两分数之和并输出结果,要求:将求最小公倍数和最大公约数设计成独立的函数。(提醒:分子、分母可分别用两个整型变量表示。之和的分母就是两分数分母的最小公倍数;输出示例: cout<<3<<”/”<<7; 就完成了分数3/7的输出显示。)
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include<iostream> using namespace std; int fenzi,fenmu; int judgebei(int a,int c) { int min=a>c?c:a; for(int i=min;i<=a*c;i++) { if(i%a==0&&i%c==0) { return i; break; } } } int judgeyue(int fenmu,int fenzi) { int cou=1; int min=fenmu<fenzi?fenmu:fenzi; for(int i=1;i<=min;i++) { if(fenmu%i==0&&fenzi%i==0) { if(i>=cou) { cou=i; } } } return cou;
} int main() { int a,b,c,d; cout<<"输入第一个分数:分子、分母"<<endl; cin>>b>>a; cout<<"输入第二个分数:分子、分母"<<endl; cin>>d>>c; int bei=judgebei(a,c); fenmu=bei; fenzi=b*fenmu/a+d*fenmu/c; int yue=judgeyue(fenmu,fenzi); cout<<b<<"/"<<a<<"+"<<d<<"/"<<c<<"="<<fenzi/yue<<"/"<<fenmu/yue; return 0; }
|
3.排序与元素移动综合题:(1)定义整型数组a[10],从键盘输入10个数为数组赋值,并分别定义两个独立函数,void print(int b[])实现将一维数组元素输出,void sort(int b[],int n)实现将一维数组的元素按从小到大排序(用两种方法实现)。最后在主函数中分别调用两个函数。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include<iostream> using namespace std; int b[10]; int tem[100000000]={0,0}; void sort1(int a[],int n) { for(int i=0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(a[i]>a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } } } void sort2(int a[],int n) { int d=0; int countnum=a[0]; for(int i=0;i<n;i++) { if(a[i]>=countnum) countnum=a[i]; tem[a[i]]++; } for(int j=0;j<=countnum;j++) { while(tem[j]!=0) { b[d]=j; d++; tem[j]--; } } } void print(int a[]) { for(int i=0;i<10;i++) { cout<<a[i]<<' '; } cout<<endl; } int main() { int a[10]; for(int i=0;i<10;i++) { cin>>a[i]; } print(a); sort1(a,10); print(a); sort2(a,10); print(b); return 0; }
|
4.二维数组与元素移动:
(1)定义一个二维数组int b[2][3],从键盘输入为二维数组赋值,将二维数组中每行元素循环后移一位,并以矩阵形式输出二维数组元素。
(2)定义一个二维数组,int a[3][4],求其外围元素之和,并以矩阵形式输出二维数组元素。(求和用两种方法实现)
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include<iostream> using namespace std; int main() { int b[2][3]; int a[3][4]; cout<<"输入移动2*3数组:"<<endl; for(int i=0;i<2;i++) { for(int j=0;j<3;j++) { cin>>b[i][j]; } } for(int i=0;i<2;i++) { int temp=b[i][2]; b[i][2]=b[i][1]; b[i][1]=b[i][0]; b[i][0]=temp; } for(int i=0;i<2;i++) { for(int j=0;j<3;j++) { cout<<b[i][j]<<' '; } cout<<endl; } cout<<"输入3*4数组:"<<endl; int sum=0,sum2; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { cin>>a[i][j]; if(i==0||i==2||j==0||j==3) sum=sum+a[i][j]; } } sum2=a[0][0]+a[0][1]+a[0][2]+a[0][3]+a[1][0]+a[1][3]+a[2][0]+a[2][1]+a[2][2]+a[2][3]; cout<<sum<<' '<<sum2<<endl; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { cout<<a[i][j]<' '; } cout<<endl; } return 0; }
|
5.字符串处理:设计一个通用函数实现在字符串s1中从第m个字符开始插入字符串s2,在主程序中对该函数进行测试。
初始状态:s1:abcdefg
s2:1234
输入插入字符串的位置:3
目标状态:s1: ab1234cdefg
s2:1234
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include<iostream> #include<stdio.h> #include<string.h> using namespace std; void connect(char str1[80],char str2[80],int i) { char str3[80]; int j,k,m,h; h=strlen(str1); for(j=0;j<=i-2;j++) { str3[j]=str1[j]; } for(m=0;str2[m]!='\0';j++,m++) { str3[j]=str2[m]; } for(k=h-i-2;str1[k]!='\0';j++,k++) { str3[j]=str1[k]; } str3[j]='\0'; for(int i=0;i<strlen(str3);i++) { cout<<str3[i]; } cout<<endl; } int main() { char str1[80],str2[80]; int i; cin.getline(str1,80); cin.getline(str2,80); cin>>i; connect(str1,str2,i); return 0; }
|
6.拼数与合数问题:
(1)在主函数中定义一个一维数组a[4]用来存放4个整型数3,12,0,1,并依次输出一维数组中的元素。
(2)依次取出数组中的元素,利用合数算法将这些元素合成一个数,要求合数的过程写成独立函数的形式,编写int fun(int b[],int n)函数,其中b为一维数组,n为b数组中包含的元素个数。该函数用来实现合数过程,并在主函数中调用该函数,并在主函数中输出合成之后的数。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include<iostream> using namespace std; int sum=0; int judge(int b) { int c=0; while(b) { b=b/10; c++; } return c; } int fun(int a[],int n) { for(int i=0;i<n;i++) { int b=a[i]; if(b!=0) { int num=judge(b); while(num) { sum=sum*10; num--; } sum=sum+b; } else{ sum=sum*10; } } return sum; } int main() { int a[4]={3,12,0,1}; for(int i=0;i<4;i++) { cout<<a[i]<<' '; } cout<<endl; cout<<fun(a,4)<<endl; return 0; }
|
7.数字字符与整数转换算法:将字符串#ab78c15fk23d*中整型数据提取出来,合成一个整型数781523并输出来。再将781523整数的各个数位数字拆开存放到一维数组int b[10]中,并将一维数组中的元素转换为数字字符存放到字符数组s[100]中,并输出该数字字符串"325187".
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #include<iostream> #include<string.h> using namespace std; int main() { string str; cin>>str; int a=str.length(),sum=0; for(int i=0;i<a;i++) { if(str[i]>='0'&&str[i]<='9') { sum=sum*10+str[i]-'0'; } } cout<<sum<<endl; int b[10],j=0; while(sum) { b[j]=sum%10; sum=sum/10; j++; } for(int i=0;i<j;i++) { if(b[i]) { cout<<b[i]<<' '; } } cout<<endl; char s[100]; int num=0; for(int i=0;i<j;i++) { if((b[i])) { s[num]=b[i]+'0'; num++; } } s[num]='\0'; for(int i=0;i<num;i++) { cout<<s[i]<<' '; } cout<<endl; return 0; }
|
8.循环结构:请从键盘输入一个正整数,求这个数是几位数,并求出该正整数的各个位上的数字之和。如输入1234,该正整数是4位数,各个数位上的数字之和为10.
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include<iostream> using namespace std; int a[100],b=0; void fun(int n) { while(n) { a[b]=n%10; n=n/10; b++; } } int main() { int n; cin>>n; fun(n); cout<<"这是"<<b<<"位数"<<endl; int sum=0; for(int i=0;i<b;i++) { sum=sum+a[i]; } cout<<"和为"<<sum<<endl; return 0; }
|
9.求1-1/2+1/3-1/4+……+1/99-1/100的和。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include<iostream> using namespace std; int main() { int i; float s,t,sum; t=1; sum=0; s=1; for(i=2;i<=100;i++) { sum=sum+t; s=-s; t=s/i; } cout<<sum<<endl; return 0; }
|
10.从键盘输入一个整数n,将该整数的每一位上的数字拆开,存放到一维数组int a[10]中,该过程用独立函数形式实现。并将一维数组中的元素取出合成一个数,并输出合成的数和一维数组元素。如n:1234,存放到一维数组中的顺序为4 3 2 1,合成一个数为4321。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<iostream> using namespace std; int a[100],b=0; void fun(int n) { while(n) { a[b]=n%10; n=n/10; b++; } } int main() { int n; cin>>n; fun(n); for(int i=0;i<b;i++) { cout<<a[i]<<' '; } cout<<endl; int sum=0; for(int i=0;i<b;i++) { sum=sum*10+a[i]; } cout<<sum<<endl; return 0; }
|
二、类的问题:
1.问题描述如下:
(1)定义一个类Array, 它的数据成员和成员函数如下:
私有数据: int b[10];
公有成员函数: Array(int t[]); //功能为一维数组b初始化
void sort(); //功能为实现对一维数组从大到小排序
void move(); // 功能为将一维数组元素循环后移一位
void print(); //功能为输出一维数组元素
(2)用类定义对象arr,并用对象arr调用成员函数,实现对一维数组元素排序和数组元素循环后移一位,并输出每次操作的结果。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include<iostream> using namespace std; class Array{ private: int b[10]; public: Array(int t[]); void sort(); void move(); void print(); }; Array::Array(int t[]) { for(int i=0;i<10;i++) { b[i]=t[i]; } } void Array::sort() { for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(b[i]<b[j]) { int temp=b[i]; b[i]=b[j]; b[j]=temp; } } } } void Array::move() { int temp=b[9]; for(int i=8;i>=0;i--) { b[i+1]=b[i]; } b[0]=temp; } void Array::print() { for(int i=0;i<10;i++) { cout<<b[i]<<' '; } cout<<endl; } int main() { int t[10]={1,4,2,5,3,7,8,6,9,22}; Array arr(t); arr.print(); arr.sort(); arr.print(); arr.move(); arr.print(); return 0; }
|
2.问题描述如下:
(1)定义一个类Array, 它的数据成员和成员函数如下:
私有数据: int b[4][5];int s;
公有成员函数:Array(int t[][5]);//功能为二维数组b初始化
void sum();// 功能为求二维数组外围元素之和
void print();//功能为以矩阵形式输出二维数组元素
(2)用类定义对象array,并用对象array调用成员函数求出二维数组外围元素之和,输出二维数组元素。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include<iostream> using namespace std; class Array{ private: int b[4][5]; int s; public: Array(int t[][5]); void sum(); void print(); }; Array::Array(int t[][5]) { for(int i=0;i<4;i++) { for(int j=0;j<5;j++) { b[i][j]=t[i][j]; } } s=0; } void Array::sum() { for(int i=0;i<4;i++) { for(int j=0;j<5;j++) { if(i==0||i==3||j==0||j==4) { s=s+b[i][j]; } } } cout<<s<<endl; } void Array::print() { for(int i=0;i<4;i++) { for(int j=0;j<5;j++) { cout<<b[i][j]<<' '; } cout<<endl; } } int main() { int t[4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; Array array(t); array.print(); array.sum(); array.print(); return 0; }
|
3.问题描述如下:定义一个字符串类String,将字符串b拼接到字符串a中,(不能用拼接函数)。具体要求如下:
(1)私有数据成员
char a[100],b[100];
(2)公有成员函数
String(char c[],char d[]):构造函数,用参数初始化数据成员
void fun():功能函数,实现将b拼接到a的后面
void insert(int m);实现将字符数组b中的字符串插入到字符数组a中的第m个字符的位置。
void show():功能函数,输出数据成员
(3)用数据"123456789","abc"在主函数中对类测试。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| #include<iostream> #include<string.h> using namespace std; char str1[100],str2[100]; int i; class String { private: char a[100],b[100]; public: String(char c[],char d[]); void fun(); void insert(int m); void show(); }; String::String(char c[],char d[]) { for(int i=0;i<strlen(c)+1;i++) { a[i]=c[i]; } for(int i=0;i<strlen(d)+1;i++) { b[i]=d[i]; } } void String::fun() { char str3[10000]={0}; int j=0,i,k; for(i=0;i<strlen(a);i++,j++) { str3[j]=a[i]; } for(k=0;k<strlen(b)+1;k++,j++) { str3[j]=b[k]; } a[j]='\0'; for(int f=0;f<j;f++) { a[f]=str3[f]; } cout<<"fun done"<<endl; } void String::insert(int m) { char str3[100]={0}; int j,k,md,h; h=strlen(a); for(j=0;j<=m-2;j++) { str3[j]=a[j]; } for(md=0;b[md]!='\0';j++,md++) { str3[j]=b[md]; } for(k=h-m-2;a[k]!='\0';j++,k++) { str3[j]=a[k]; } str3[j]='\0'; for(int i=0;i<strlen(str3);i++) { a[i]=str3[i]; } cout<<"insert done and result:"<<endl; } void String::show() { for(int i=0;i<strlen(a)+1;i++) { cout<<a[i]; } cout<<endl; } int main() { cin.getline(str1,80); cin.getline(str2,80); String str(str1,str2); str.show(); str.fun(); str.show(); cin>>i; str.insert(i); str.show(); return 0; }
|
4.问题描述如下:定义一个字符串类String,为指针变量p动态申请空间,并初始化。对p所指向的字符串进行逆序操作。具体要求如下:
(1)私有数据成员
char *p;
(2)公有成员函数
String(char *t):构造函数,用参数初始化数据成员
void fun():功能函数,实现对字符串进行逆序。
void show():功能函数, 输出数据成员
~String();析构函数,撤销对象。
(3)用数据"123456789"在主函数中对类测试。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include<iostream> using namespace std; string s1; int num; class String{ private: char *p; public: String(char *t); void fun(); void show(); ~String(); }; String::String(char *t) { p=t; } void String::fun() { num=s1.length(); int temp=*(p+0); *p=*(p+num); *(p+0)=temp; } void String::show() { for(int i=num-1;i>=0;i--) { cout<<*(p+i)<<' '; } cout<<endl; } String::~String() { delete []p; } int main() { cin>>s1;输入 char *t=&s1[0];可以直接赋值char s1[10000]=”???????”那么上面一句就不要了 String s(t); s.fun(); s.show(); return 0; }
|
5.问题描述如下:定义一个类名为Array,为指针变量p动态申请空间,并初始化。对p所指向的一维数组逆序排序。具体要求如下:
(1)私有数据成员
int *p;
(2)公有成员函数
Array(int *t):构造函数,用参数初始化数据成员
void fun():功能函数,实现对一维数组进行逆序。
void show():功能函数, 输出数据成员
~Array();析构函数,撤销对象。
(3)在主函数中对类测试。例如int a[10]={1,2,3,4,5,6,7,8,9,0};
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include<iostream> using namespace std; class Array{ private: int *p; public: Array(int *t); void fun(); void show(); ~Array(); }; Array::Array(int *t) { p=t; } void Array::fun() { int temp=*(p+0); *p=*(p+9); *(p+0)=temp; } void Array::show() { for(int i=9;i>=0;i--) { cout<<*(p+i)<<' '; } cout<<endl; } Array::~Array() { delete []p; } int main() { int a[10]={1,2,3,4,5,6,7,8,9,0}; Array arr(a); arr.fun(); arr.show(); return 0; }
|
6.问题描述如下:定义一个类名为Array,为指针变量p动态申请空间,并初始化。具体要求如下:
(1)私有数据成员
char *p;int s;//s用来存放合成的数
(2)公有成员函数
Array(char *t):构造函数,用参数初始化数据成员
void fun():功能函数,实现对一个字符串中的数字字符,组合成一个整数。
void show():功能函数, 输出数据成员
~Array();析构函数,撤销对象。
(3)在主函数中对类测试。(如输入”a2bc3de4,输出234)。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include<iostream> #include<string> using namespace std; string str1; class Array { private: char *p; int s; public: Array(char *t); void fun(); void show(); ~Array(); }; Array::Array(char *t) { p=t; s=0; } void Array::fun() { int temp; int num=str1.length(); for(int i=0;i<num;i++) { if(*(p+i)>='0'&&*(p+i)<='9') { temp=*(p+i)-'0'; s=s*10+temp; } }
} void Array::show() { cout<<s<<endl; } Array::~Array() { delete []p; } int main() { cin>>str1; char *t=&str1[0]; Array arr(t); arr.fun(); arr.show(); return 0; }
|
7.试定义一个类Array,将二维数组的各行按其所有元素的和从小到大进行行排序,各行内元素之间的顺序保持不变。具体要求如下:
(1)私有数据成员
int a[4][4]; 原始数组。
(2)公有成员函数
Array(int k[][4],int n); 构造函数,用数组k的前n行元素初始化数组a。
int sum(int b[4][4],int k); 求数组b中第k行元素的和。
void exch(int b[4][4],int x,int y); 交换数组b的第x行与第y行。
void fun( ); 按题意对数组进行排序。
void print( ); 输出数组。
(3)在主函数中对该类进行测试。
输入示例:
原数组:
5 5 5 5
4 4 4 4
3 3 3 3
2 2 2 2
排序后的数组:
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| #include<iostream> using namespace std; class Array{ private: int a[4][4]; public: Array(int k[][4],int n); int sum(int b[4][4],int k); void exch(int b[4][4],int x,int y); void fun(); void print(); }; Array::Array(int k[][4],int n) { for(int i=0;i<n;i++) { for(int j=0;j<4;j++) { a[i][j]=k[i][j]; } } } int Array::sum(int b[4][4],int k) { int num=0; for(int i=0;i<4;i++) { if(i==k-1) { for(int j=0;j<4;j++) { num=num+b[i][j]; } } else continue; } return num; } void Array::exch(int b[4][4],int x,int y) { int temp[4]; int c=x-1,d=y-1; for(int i=0;i<4;i++) { if(i==c) { for(int j=0;j<4;j++) { temp[j]=b[c][j]; } } if(i==d) { for(int j=0;j<4;j++) { b[c][j]=b[d][j]; b[d][j]=temp[j]; cout<<"第"<<i<<"and"<<y<<"changed"<<endl; } } } } void Array::fun() { for(int i=1;i<=3;i++) { for(int j=i+1;j<=4;j++) { if(sum(a,i)>sum(a,j)) { exch(a,i,j); } } } } void Array::print() { for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { cout<<a[i][j]<<' '; } cout<<endl; } } int main() { int k[4][4]={5,5,5,5,4,4,4,4,3,3,3,3,2,2,2,2}; int m[5][4]={20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; Array arr1(k,4); Array arr2(m,4); arr1.print(); cout<<endl; arr2.print(); cout<<endl; arr1.fun(); cout<<endl; arr2.fun(); cout<<endl; arr1.print(); cout<<endl; arr2.print(); cout<<endl; return 0; }
|
8.继承与派生:定义一个圆类circle作为基类,公有派生出圆柱体的类colum,求出圆柱体的体积。具体要求如下:
(1)类circle
保护数据成员: float r; //圆的半径
公有构造函数: circle(float); //初始化r
公有成员函数: float getr(); //取圆的半径r
double area(); //求圆的面积
(2)类colum
保护数据成员: float h; //圆柱体的高
公有构造函数: colum(float,float); //初始化r和h
公有成员函数: float geth(); //取圆柱体的高h
double vol (); //求圆柱体的体积
(3)编写一个程序测试该类,测试数据及要求如下:
圆柱体对象:v(1.0,3.0);
本程序的执行结果如下:
圆柱体属性数据:
半径:1米
高度:3米
面积:3.14平方米
体积:9.42立方米
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #include<iostream> #define pi 3.1415926 using namespace std; class circle{ protected: float r; public: float getr(); double area(); circle(float a); }; circle::circle(float a) { r=a; } float circle::getr() { return r; } double circle::area() { return pi*r*r; } class colum:public circle { protected: float h; public: colum(float ri,float high); float geth(); double vol(); }; colum::colum(float ri,float high):circle(ri) { h=high; } float colum::geth() { return h; } double colum::vol() { return pi*r*r*h; } int main() { colum v(1.0,3.0); cout<<"半径:"<<v.getr()<<"米"<<endl; cout<<"高度:"<<v.geth()<<"米"<<endl; cout<<"面积:"<<v.area()<<"平方米"<<endl; cout<<"体积:"<<v.vol()<<"立方米"<<endl; return 0; }
|