C++语言程序设计
形成性考核册
姓名:
学籍:
学号:
C++语言程序设计作业(1)
- 填空题
1、C++预言中的每条基本语句以__________作为结束符,每条复合语句以_________作为结束符。
2、用于输出表达式值的标准输出流对象是_________,用于从键盘上为变量输入值的标准输入流对象______。
3、当不需要函数返回值时,则应把该函数类型定义为_____。
4、执”cout<<143<<’+’<<18<<’=’<<143+18<<endl;”语句后得到的输出结果为 。
5、执行”coun<<”ning”<<”chen”<<38<<endl;”语句后得到的输出结果为 。
6、在每个C++程序中都必须包含有这样一个函数,该函数的函数名为 。
7、C++源程序文件的缺省扩展名为______,由C++源程序文件编译而成的目标文件的缺省扩展名为______由C++目标文件连接而成的可执行文件的缺省扩展名为______。
8、程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用 或 符号作为分隔符。
9、十进制数25表示成符合C++八进制和十六进制数分别为 和 。
10、在C++语言中,用转义字符序列 或操纵符 表示输出一个换行符。
11、执行”cout<<char(’b’+2)<<endl;”语句后得到的输出结果为 。
12、执行”cout<<char(’K’-3)<<endl;”语句后得到的输出结果为 。
13、已知’A’~’Z’的ASCII码为65~90,当执行”int x=’H’+5;”语句后x的值为 。
14、已知’A’~’Z’的ASCII码为65~90,当执行”char ch=16*5+2;cout<<ch<<endl;”语句序列后,得到的输出结果为 。
15、假定一个枚举型的定义为”enum RA{xa,xb,xc,xd};”,则执行”cout<<”xc=”<<xc<<endl;”语句得到的输出结果为 。
16、假定一个枚举型的定义为”enum RB{ab,ac=3,ad,ae}x=ad;”,则x的值为 。
17、char、short和int类型的大小分别为 、 和 。
18、float和double类型的大小分别为 和 。
19、十进制数128和-3.26的类型分别为 和 。
20、若需要定义一个标识符常量,并且使C++能够进行类型检查,则应在定义语句的开始使用保留字 。
21、使用const语句定义一个标识符常量时,则必须对它同时进行 。
22、执行”int x=45,y=16;cont<<x/y<<’ ‘<<x%y<<endl;”语句序列后得到的输出结果为
。
23、假定x=10,y=6,则表达式2+x++和++y*3的值分别为 和 。
24、算术表达式对应的C++表达式为 。
25、算术表达式+4b-1对应的C++表达式为 。
26、表达式float(25)/4和int(14.6)%5的值分别为 和 。
27、表达式a=a+b表示成复合赋值表达式为 。
28、表达式a=a+1表示成增量表达式为 。
29、增量表达式++y表示成赋值表达式为 。
30、关系表达式(x= =0)的等价表达式为 。
31、关系表达式(x!=0)的等价表达式为 。
32、关系表达式x+y>z的相反表达式为 。
33、逻辑表达式x>5 && x<10的相反表达式为 。
34、逻辑表达式a>b || b= =5的相反表达式为 。
35、若x=15,y=40,则x>y和x<=y的逻辑值分别为 和 。
36、假定x=5,则执行”a=(x? 10:4*2);”语句后a的值为 。
37、假定a=5,则条件表达式”a= =0?10:20”的值为 。
38、执行”typedef DataType;”语句后,在使用int定义整型变量的地方都可以使用 来定义整型变量。
39、设x和y均为bool量,则x && y 为真的条件是 。
- 设x和y均为bool量,则x || y 为假的条件是 。
二、写出下列程序运后的输出结果
1.#include<iostream.h>
void SB(char ch){
switch(ch){
case ‘A’:case ‘a’:
cout<<“well!”;break;
case ‘B’:case ‘b’:
cout<<“good!”;break;
case ‘C’:case ‘c’:
cout<<“pass!”;break;
default:
cout<<“bad!”;break;
}
}
void main(){
char a1=’b’,a2=’C’,a3=’f’;
SB(a1);SB(a2);SB(‘A’);
cout<<endl;
}
2.#include<iostream.h>
#include<stdlib.h>
double SD(int a,int b,char op){
double x;
switch(op){
case ‘+’:x=double(a)+b;break;
case ‘-‘:x=double(a)-b;break;
case ‘*’:x=double(a)*b;break;
case ‘/’: if (b) x=double(a)/b;
else exit(1);
break;
default:exit(1);
}
return x;
}
void main(){
int x=20,y=12;
cout<<SD(x,y,’-‘)<<‘ ‘;
cout<<SD(x,y,’*’)<<‘ ‘;
cout<<SD(x+y,y-2,’/’)<<endl;
}
3.#include<iostream.h>
void main(){
int s=0;
for(int i=1;i<6;i++)
s+=i*i;
cout<<“s=”<<s<<endl;
}
4. #include <iostream.h>
void main(){
int s=0;
for( int i=1;;i++){
if(s>50)break;
if(i%3==0)s+=i;
}
cout<<“i,s=”<<i<<“,”<<s<<endl;
}
5.#include <iostream.h>
void main(){
int s1=0,s2=0;
for(int i=0;i<10;i++)
if(i%2)s1+=i;
else s2+=i;
cout<<s1<<‘ ‘<<s2<<endl;
}
6.#include <iostream.h>
void main(){
int n=10,y=1;
while(n–){y++;++y;}
cout<<“y*y=”<<y*y<<endl;
}
三、写出下列每个函数的功能
1.#include <iostream.h>
int SA(int a,int b){
if(a>b)return 1;
else
if(a==b) return 0;
else return -1;
}
2.#include <iostream.h>
int SC(int a,int b,int c){
if(a>=b && a>=c) return a;
if(b>=a && b>=c) return b;
if(c>=a && c>=b) return c;
}
3.int SE(int n){
int x;cin>>x;if(n==1) return x;
int m=x;
while(–n){
cin>>x;
m+=x;
}
return m;
}
4.double SF(double x,int n){
double p=1,s=1;
for(int i=1;i<=n;i++){
p*=x;
s+=p/(i+1);
}
return s;
}
5.#include <math.h>
bool SG(int x){
int a=int(sqrt(x));
int i=2;
while(i<=a){
if(x%i==0) break;
i++;
}
if (i<=a) return 0;
else return 1;
}
6.float FH(){
float x,y=0,n=0;
cin>>x;
while(x!=-100){
n++;y+=x;
cin>>x;
}
if(n==0) return y;else return y/n;
}
C++语言程序设计作业(2)
一、填空题
- 1.一个一维数组的定义为“char * a[5];”,则该数组所含元素的个数为_____,所占存储空间的字节数为______。
- 假定一个二维数组的定义为“int a[4][6];”,则该数组所含元素的个数为_____,所占存储空间的字节数为______。
- 假定一个二维数组的定义为“char a[8][8];”,则该数组所含元素的个数为_____,所占存储空间的字节数为______。
- 执行“type float ABC[10];”语句把ABC定义为具有10个单精度元素的______。
- 在函数外定义的变量称为______变量,若没有被初始化则系统隐含对它赋初值_____。
- 函数中的形参变量的初值由_____该函数时获得。
- 函数调用时,实参向形参的传送分为____和____两种传送方式。
- 变量分为全局和局部两种,_______变量没有赋初值时,其值是不确定的。
二、给出下列程序运行后的输出结果
1.#include <iostream.h>
void main(){
int a[10]={12,39,26,41,55,63,72,40,83,95};
int i0=0,i1=0,i2=0;
for(int i=0;i<10;i++)
switch(a[i]%3){
case 0:i0++;break;
case 1:i1++;break;
case 2:i2++;
}
cout<<i0<<‘ ‘<<i1<<‘ ‘<<i2<<endl;
}
2.
#include <iostream.h>
#include<string.h>
void main(){
char * a[5]={“student”,”worker”,”cadre”,”apple”,”peasant”};
char *p1,*p2;
p1=p2=a[0];
for(int i=0;i<5;i++){
if(strcmp(a[i],p1)>0) p1=a[i];
if(strcmp(a[i],p2)<0) p2=a[i];
}
cout<<p1<<‘ ‘<<p2<<endl;
}
3.
#include <iostream.h>
void main(){
int a[8]={36,73,48,14,55,40,32,66};
int b1,b2;
b1=b2=a[0];
for(int i=1;i<8;i++)
if(a[i]>b1){
if(b1>b2)b2=b1;
b1=a[i];
}
cout<<b1<<‘ ‘<<b2<<endl;
}
4.
#include <iostream.h>
void main(){
char a[]=”aabcdaabacabfgacd”;
int i1=0,i2=0,i=0;
while(a[i]){
if(a[i]==’a’)i1++;
if(a[i]==’b’)i2++;
i++;
}
cout<<i1<<‘ ‘<<i2<<endl;
}
5.
#include <iostream.h>
void main(){
char a[]=”aabcdaabacabfgacd”;
int i1=0,i2=0,i=0;
while(a[i]){
if(a[i]==’a’)i1++;
if(a[i]==’b’)i2++;
i++;
}
cout<<i1<<‘ ‘<<i2<<endl;
}
6.
#include <iostream.h>
void main(){
int a[10]={76,83,54,62,40,75,80,92,77,84};
int b[4]={60,70,90,101};
int c[4]={0};
for(int i=0;i<10;i++){
int j=0;
while(a[i]>b[j])j++;
c[j]++;
}
for(i=0;i<4;i++) cout<<c[i]<<‘ ‘;
cout<<endl;
}
7.
#include <iostream.h>
void main(){
int a[3][4]={{1,2,7,8},{5,6,11,12},{24,10,3,4}};
int m=a[0][0];
int ii=0,jj=0;
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
if(a[i][j]>m){m=a[i][j];ii=i;jj=j;}
cout<<ii<<‘ ‘<<jj<<‘ ‘<<a[ii][jj]<<endl;
}
8.
#include <iostream.h>
void main(){
int a=10,b=20;
cout<<a<<‘ ‘<<b<<endl;
{a*=4;
int b=a+35;
cout<<a<<‘ ‘<<b<<endl;
}
cout<<a<<‘ ‘<<b<<endl;
}
三、写出下列每个函数的功能
1.
int WC(int a[],int n,int k){
int c=0;
for(int i=0;i<n;i++)
if(a[i]>=k) c++;
return c;
}
2.
void WA(int a[],int n){
for(int i=0;i<n-1;i++){
int k=i;
for(int j=i+1;j<n;j++)
if(a[j]<a[k]) k=j;
int x=a[i];a[i]=a[k];a[k]=x;
}
}
3.
#include <iostream.h>
template<class TT>
int WG(TT a,TT b){
if(a>b) return 1;
else
if(a==b) return 0;
else return -1;
}
4.
#include <iostream.h>
template<class Type>
Type WD(Type a[],int n){
Type m=a[0];
for(int i=0;i<n;i++)
if (a[i]>m) m=a[i];
return m;
}
5.
template<class Type>
void WE(Type a[],Type b[],int n){
for(int i=0;i<n;i++)
b[i]=a[i]*2;
}
C++语言程序设计作业(3)
一、填空题
1、假定p所指对象的值为28,p+1所指对象的值为62,则*p++的值为 。
2、假定p所指对象的值为28,p+1所指对象的值为62,则*++p的值为 。
3、假定p所指对象的值为25,p+1所指对象的值为50,则执行”(*p)++;”语句后,p所指对象的值为 。
4、假定p所指对象的值为25,p+1所指对象的值为50,则执行”*(p++);”语句后,p所指对象的值为 。
5、假定a是一个指针数组,则a+I所指对象的地址比a地址大 字节。
6、假定a是一个一维数组,则a [i]的指针访问方式为 。
7、假定a是一个二维数组,则a[i][j]的指针访问方式为 。
8、假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为 。
9、假定一个二维数组为a[M][N],则a[i][j]对应的存储地址(以字节为单位)为 。
10、假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 。
11、假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大 字节。
12、假定a为一个字符数组名,则元素a[8]的字节地址为 。
13、假定a为一个整型数组名,则元素a[4]的字节地址为 。
14、假定一个结构类型的定义为”struct A{int a, b;short c;A * d;};”,则该类型的大小为 字节。
15、假定一个结构类型的定义为”struct B{int a[8];char*b;};”,则该类型的大小为 字节。
16、假定一个结构类型的定义为”struct D{int a;union{int b;double c;};D*d[3];};”,则该类型的大小为 字节。
17、假定要动态分配一个类型为Worker的具有n个元素的数组,并由r 指向这个动态数组,则使用的语句为 。
18、假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为 。
19、假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为 。
二、写出下列程序运行后的输出结果
1.
# include <iomanip.h>
void main(){
int a[8]={7,9,11,13,3,8,15,17};
int *p=a;
for(int i=0;i<8;i++){
cout<<setw(5)<<*p++;
if ((i+1)%4==0) cout<<endl;
}
}
2.
# include <iomanip.h>
void main(){
int a[5]={3,6,15,7,20};
int *p=a;
for(int i=0;i<5;i++)
cout<<setw(5)<<*p++;
cout<<endl;
for(i=0;i<5;i++)
cout<<setw(5)<<*–p;
cout<<endl;
}
3.
# include <iomanip.h>
void main(){
int a[8]={4,8,12,16,20,24,28,32};
int *p=a;
do{
cout<<*p<<‘ ‘;
p+=3;
}while(p<a+8);
cout<<endl;
}
4.
# include <iomanip.h>
void main(){
int x=20,y=40,*p;
p=&x;cout<<*p<<‘ ‘;
*p=x+10;
p=&y;cout<<*p<<endl;
*p=y+20;cout<<x<<‘ ‘<<y<<endl;
}
5.
# include <iomanip.h>
int LA(int *a,int n){
int s=0;
for(int i=0;i<n;i++)
s+=a[i];
return s;
}
void main(){
int a[]={5,10,15,20,25,30};
int b=LA(a,5);
int c=LA(a+3,2);
cout<<b<<‘ ‘<<c<<‘ ‘<<b+2*c<<endl;
}
6.
# include <iomanip.h>
void LC(int a,int b){
int x=a;
a=b;b=x;
cout<<a<<‘ ‘<<b<<endl;
}
void main(){
int x=15,y=36;
LC(x,y);
cout<<x<<‘ ‘<<y<<‘ ‘<<endl;
}
7.
# include <iomanip.h>
void LF(int &x,int y){
x=x+y;
y=x+y;
cout<<“x=”<<x<<“,y=”<<y<<endl;
}
void main(){
int x=5,y=8;
cout<<“x=”<<x<<“,y=”<<y<<endl;
LF(x,y);
cout<<“x=”<<x<<“,y=”<<y<<endl;
}
8;
8.
# include <iomanip.h>
void LG(int * &a,int &m){
a=new int[m];
int *p=a;
for(int i=0;i<m;i++)
*p++=2*i+1;
}
void main(){
int *p,n=5;
LG(p,n);
for(int i=0;i<n;i++)
cout<<p[i]<<‘ ‘;
cout<<endl;
delete []p;
}
9.
# include <iomanip.h>
void LH(int * a,int n){
int *p=a+n-1;
while(a<p){
int x=*a;
*a=*p;
*p=x;
a++;p–;
}
}
void main(){
int *d=new int[5];
int i;
for(i=0;i<5;i++){
d[i]=2*i+3;
cout<<setw(5)<<d[i]<<‘ ‘;
}
cout<<endl;
LH(d,5);
for(i=0;i<5;i++){
cout<<setw(5)<<d[i]<<‘ ‘;
}
cout<<endl;
delete []d;
}
10.
# include <iomanip.h>
void LH(int * a,int n){
int *p=a+n-1;
while(a<p){
int x=*a;
*a=*p;
*p=x;
a++;p–;
}
}
void main(){
int *d=new int[5];
int i;
for(i=0;i<5;i++){
d[i]=2*i+3;
cout<<setw(5)<<d[i]<<‘ ‘;
}
cout<<endl;
LH(d,5);
for(i=0;i<5;i++){
cout<<setw(5)<<d[i]<<‘ ‘;
}
cout<<endl;
delete []d;
}
11.
# include <iostream.h>
# include <string.h>
struct Worker{
char name[15];//姓名
int age;//年龄
float pay;//工资
};
void main(){
Worker x;
char *t=”liouting”;
int d=46;float f=725;
strcpy(x.name,t);
x.age=d;x.pay=f;
cout<<x.name<<‘ ‘<<x.age<<‘ ‘<<x.pay<<endl;
}
三、写出下列每个函数的功能
1.
# include <iostream.h>
void LI(int n){
int *a=new int[n],*p=a+n;
for(int i=0;i<n;i++) cin>>a[i];
for(i=n-1;i>=0;i–) cout<<*(–p)<<‘ ‘;
cout<<‘\n’;
delete []a;
}
2.
# include <iostream.h>
void LK(int a[],int n,int *&b,int &m){
float s=0;int i;
for(i=0;i<n;i++)
s+=a[i];
s/=n;
m=0;
for(i=0;i<n;i++)
if(a[i]>=s) m++;
b=new int[m];
int *p=b;
for(i=0;i<n;i++)
if(a[i]>=s) *p++=a[i];
}
void main(){
int x[]={1,2,3,4,5,6,7,8,9,0},*y,z;
LK(x,10,y,z);
for(int i=0;i<10;i++) cout<<x[i]<<‘ ‘;
cout<<endl;
cout<<z<<‘ ‘<<endl;
for(i=0;i<z;i++) cout<<y[i]<<‘ ‘;
cout<<endl;
}
3.
# include <iostream.h>
//struct Worker{
//char name[15];//姓名
//int age;//年龄
//float pay;//工资
//};
istream &operator>>(istream &istr,Worker &x){
cout<<“请输入一个职工记录:姓名、年龄、工资”<<endl;
istr>>x.name>>x.age>>x.pay;
return istr;
}
void main(){
Worker a;
cin>>a;
cout<<a.name<<a.age<<a.pay<<endl;
}
4.
//# include <iostream.h>
//struct StrNode{
// char name[15];//字符串
// StrNode *next;//指针域
//};
void QB(StrNode *& f,int n){
if (n==0){f=NULL;return;}
f=new StrNode;
cin>>f->name;
StrNode * p=f;
while(–n){
p=p->next=new StrNode;
cin>>p->name;
}
p->next=NULL;
}
void main(){
StrNode *x;
QB(x,5);
//for(int i=0;i<5;i++){
while (x){
cout<<x->name<<‘ ‘;
x=x->next;
}
}
5.
//struct StrNode{ char name[15];StrNode *next;};
void QC(StrNode * f){
while (f){
cout<<f->name<<‘ ‘;
f=f->next;
}
}
void main(){
StrNode * f;int n=5;
f=new StrNode;
cin>>f->name;
StrNode * p=f;
while(–n){
p=p->next=new StrNode;
cin>>p->name;
}
p->next=NULL;
QC(f);
}
C++语言程序设计作业(4)
一、填空题
1、在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的 使其初始化。
2、当一个类对象被撤消时将自动调用该类的 。
3、对基类数据成员的初始化是通过执行派生类构造函数中的 来实现的。
4、对一个类中的数据成员的初始化可以通过构造函数中的 实现,也可以通过构造函数中的 实现。
5、在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先 ,后
,最后为 。
6、当撤消一个含有基类和类对象成员的派生类对象时,将首先完成 的析构函数定义体的执行,接着完成 的析构函数定义体的执行,最后完成 的析构函数定义体的执行。
7、设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的
。
8、当一个类对象离开它的作用域时,系统将自动调用该类的 。
9、假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为 。
10、假定AB为一个类,则执行”AB a[10];”语句时,系统自动调用该类构造函数的次数为
。
11、假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为 。
12、假定用户没有给一个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为 。
13、若需要把一个函数”void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: 。
14、若需要把一个类AB定义为一个类CD的友元类,则应在类CD的定义中加入一条语句:
。
15、假定一个类AB中有一个静态整型成员bb,在类外为它进行定义并初始化为0时,所使用的语句为 。
16、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 。
17、当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为 。
18、假定AB为一个类,则该类的拷贝构造函数的声明语句为 。
19、对类对象成员的初始化是通过执行构造函数中的 完成的。
20、对于类中定义的成员,其隐含访问权限为 ,对于结构中定义的成员,其隐含访问权限为 。
21、一个类的友元函数或友元类能够通过成员操作符访问该类的 。
22、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: 。
23、在C++流类库中,根基类为 。
24、在C++流类库中,输入流类和输出流类的名称分别为 和 。
25、若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用 头文件。
26、若要在程序文件中进行文件输入输出操作,则必须在开始的#include命令中使用 头文件。
27、当从字符文件中读取回车和换行两个字符时,被系统看作为一个 。
28、当使用ifsream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ,当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 。
29、当需要使用istrstream流类定义一个流对象并联系一个字符串时,应在文件开始使用#include命令,使之包含 文件。
二、写出下列程序运行后的输出结果
1.#include<iostream.h>
class A{
int a,b;
public:
A() {a=b=0;}
A(int aa, int bb){
a=aa;b=bb;
cout<<a<<”<<b<<endl;
}
};
void main(){
A x, y(6,3), z(8,10);
}
2.
#include<iostream.h>
class A{
int a,b;
public:
A(int aa=0, int bb=0):a(aa),b(bb){
cout<<“Constructor!”<<a+b<<endl;
}
};
void main(){
A x, y(2,5), z(y);
}
3.
#include<iostream.h>
class A{
int *a;
public:
A(int aa=0){
a=new int(aa);
cout<<“Constructor!”<<*a<<endl;
}
};
void main(){
A x[2];
A *p=new A(5);
delete p;
}
4.
#include<iostream.h>
class A{
int a;
public:
A(int aa=0):a(aa){}
~A(){cout<<“Destructor!”<<a<<endl;}
};
void main(){
A x(5);
A *p=new A(10);
delete p;
}
5.
#include<iostream.h>
class A{
int *a;
public:
A(int x){
a=new int(x);
cout<<“Constructor!”<<*a<<endl;
}
~A(){delete a;cout<<“Destructor!”<<endl;}
};
void main(){
A x(9),*p;
p=new A(12);
delete p;
}
6.
#include<iostream.h>
class A{
int a;
public:
A(int aa=0):a(aa){
cout<<“Constructor A!”<<a<<endl;
}
};
class B:public A{
int b;
public:
B(int aa,int bb):A(aa),b(bb){
cout<<“Constructor B!”<<b<<endl;
}
};
void main(){
B x(2,3),y(4,5);
}
7.
#include<iostream.h>
class A{
int a;
public:
A(int aa=0){a=aa;}
~A(){cout<<“Destructor A!”<<a<<endl;}
};
class B:public A{
int b;
public:
B(int aa=0,int bb=0):A(aa){b=bb;}
~B(){cout<<“Destructor B!”<<b<<endl;}
};
void main(){
B x(5),y(6,7);
}
8.
#include<iostream.h>
#include<stdlib.h>
class A{
int a,b;char op;
public:
A(int aa,int bb,char ch){a=aa;b=bb;op=ch;}
int Comp(){
switch(op){
case’+’:return a+b;
case’-‘:return a-b;
case’*’:return a*b;
case’/’:if(b!=0)return a/b;else exit(1);
case’%’:if(b!=0)return a%b;else exit(1);
default:exit(1);
}
}
void SetA(int aa,int bb,char ch){
a=aa;b=bb;op=ch;
}
};
void main(void){
A x(3,5,’*’);
int a=x.Comp();
x.SetA(4,9,’+’);
a+=x.Comp();
x.SetA(13,8,’%’);
a+=x.Comp();
cout<<“a=”<<a<<endl;
}
9.
#include<iostream.h>
class B{
int a,b;
public:
B(){a=b=0;}
B(int aa,int bb){a=aa;b=bb;}
B operator+(B&x){
B r;
r.a=a+x.a;
r.b=b+x.b;
return r;
}
B operator-(B&x){
B r;
r.a=a-x.a;
r.b=b-x.b;
return r;
}
void OutB(){
cout<<a<<‘ ‘<<b<<endl;
}
};
void main(){
B x(6,5),y(13,3),z1,z2;
z1=x+y;z2=x-y;
z1.OutB();z2.OutB();
}
10.
#include<iostream.h>
template<class TT>
class FF{
TT a1,a2,a3;
public:
FF(TT b1,TT b2,TT b3){
a1=b1;a2=b2;a3=b3;
}
TT Sum(){return a1+a2+a3;}
};
void main(){
FF<int>x(8,3,4),y(5,9,11);
cout<<x.Sum()<<‘ ‘<<y.Sum()<<endl;
}
三、写出下列每个函数的功能
1. #include <iomanip.h>
#include <fstream.h>
#include <string.h>
void JA(char *fname)
{
ofstream fout(fname);
char a[20];
cin>>a;
while(strcmp(a,”end”)!=0){
fout<<a<<endl;
cin>>a;
}
fout.close();
}
void JB(char *fname)
{
ifstream fin(fname);
char a[20];
int i=0;
while(fin>>a){
cout<<a<<endl;
i++;
}
fin.close();
cout<<“i=”<<i<<endl;
}
void main(){
JA(“c:\gm.dat”);
JB(“c:\gm.dat”);
}
2.
#include <iomanip.h>
#include <fstream.h>
void JB(char *fname)
{
ifstream fin(fname);
char a[20];
int i=0;
while(fin>>a){
cout<<a<<endl;
i++;
}
fin.close();
cout<<“i=”<<i<<endl;
}
3.
#include <iomanip.h>
#include <fstream.h>
void JC(char *fname,int n)
{
ofstream fout(fname,ios::out|ios::binary);
int x;
for(int i=0;i<n;i++){
cin>>x;
fout.write((char *)&x,sizeof(x));
}
fout.close();
}
void JD(char * fname){
ifstream fin(fname,ios::in|ios::nocreate|ios::binary);
int x,s=0,n=0;
while(fin.read((char *)&x,sizeof(x))){
s+=x;n++;
}
cout<<n<<‘ ‘<<s<<‘ ‘<<float(s)/n<<endl;
fin.close;
}
void main(){
JC(“c:\gm.bat”,5);
JD(“c:\gm.bat”);
}
4.
#include <iomanip.h>
#include <fstream.h>
void JD(char * fname){
ifstream fin(fname,ios::in|ios::nocreate|ios::binary);
int x,s=0,n=0;
while(fin.read((char *)&x,sizeof(x))){
s+=x;n++;
}
cout<<n<<‘ ‘<<s<<‘ ‘<<float(s)/n<<endl;
fin.close;
}
请先
!