电大C++语言程序设计形考册.doc
专业好文档C+语言程序设计课程作业与评价中央电大计算机教研室第一次作业练习一、填空题 1C+语言中的每条基本语句以_作为结束符,每条复合语句以_作为结束符。 2. 用于输出表达式值的标准输出流对象是_,用于从键盘上为变量输入值的标准输入流对象是_。 3. 当不需要函数返回任何值时,则应把该函数类型定义为_。 4. 执行“cout<<143<<+<<18<<=<<143+18<<endl;”语句后得到的输出结果为_。 5. 执行“cout<<“ning”<<“chen ”<<38<<endl;”语句后得到的输出结果为_。 6在每个C+程序中都必须包含有这样一个函数,该函数的函数名为_。 7C+源程序文件的缺省扩展名为_,由C+源程序文件编译而成的目标文件的缺省扩展名为_,由C+目标文件连接而成的可执行文件的缺省扩展名为_。 8. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用_或_符号作为分隔符。 9十进制数25表示成符合C+语言规则的八进制和十六进制数分别为_和_。 10. 在c+语言中,用转义字符序列_或操纵符_表示输出一个换行符。 11执行“cout<<char('b'+2)<<endl;”语句后得到的输出结果为_。 12. 执行“cout<<char('K'-3)<<endl;”语句后得到的输出结果为_。 13. 已知'A''Z'的ASCII码为6590,当执行“int x='H'+5;”语句后x的值为_。 14已知'A''Z'的ASCII码为6590,当执行“char ch=16*5+2;cout<<ch<<endl;”语句序列后,得到的输出结果为_。 15.假定一个枚举类型的定义为“enum RAxa,xb,xc,xd;”,则执行“cout<<"xc="<<xc<<endl;”语句得到的输出结果为_。 16假定一个枚举类型的定义为“enum RBab,ac=3,ad,aex=ad;”,则x的值为_。 17char、short和int类型的大小分别为_、_和_。 18float和double类型的大小分别为_和_。 19. 十进制数128和-3.26的类型分别为_和_。 20. 若需要定义一个标识符常量,并且使C+能够进行类型检查,则应在定义语句的开始使用保留字_。 21. 使用const语句定义一个标识符常量时,则必须对它同时进行_。 22. 执行“int x=45,y=16;cout<<x/y<<' '<<x%y<<endl;”语句序列后得到的输出结果为_。 23. 假定x=10,y=6,则表达式2+x+和+y*3的值分别为_和_。 24算术表达式对应的C+表达式为_。 25. 算术表达式对应的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 int DataType;”语句后,在使用int定义整型变量的地方都可以使用_来定义整型变量。 39设x和y均为bool量,则x && y为真的条件是_。 40设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(a3);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. 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) /n为大于等于1的整数 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) /n为大于等于0的整数 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) /x为大于等于2的整数 int a=int(sqrt(x); /取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; 函数功能:第二次作业练习一、填空题 1假定一个一维数组的定义为“char* a5;”,则该数组所含元素的个数为_,所占存储空间的字节数为_。 2. 假定一个二维数组的定义为“int a46;”,则该数组所含元素的个数为_,所占存储空间的字节数为_。 3. 假定一个二维数组的定义为“char a88;”,则该数组所含元素的个数为_,所占存储空间的字节数为_。 4. 执行“typedef float ABC10;”语句把ABC定义为具有10个单精度元素的_。 5. 在函数外定义的变量称为_变量,若没有被初始化则系统隐含对它赋初值_。 6函数中的形参变量的初值由_该函数时获得。 7函数调用时,实参向形参的传送分为_和_两种传送方式。 8变量分为全局和局部两种,_变量没有赋初值时,其值是不确定的。二、给出下列程序运行后的输出结果 1. #include<iostream.h> void main() int a10=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(ai%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* a5="student","worker","cadre","apple","peasant" char *p1, *p2; p1=p2=a0; for(int i=0;i<5;i+) if(strcmp(ai, p1)>0) p1=ai; if(strcmp(ai, p2)<0) p2=ai; cout<<p1<<' '<<p2<<endl; 运行结果: 3. #include<iostream.h> void main() int a8=36,73,48,14,55,40,32,66; int b1, b2; b1=b2=a0; for(int i=1;i<8;i+) if(ai>b1) if(b1>b2) b2=b1; b1=ai; cout<<b1<<' '<<b2<<endl; 运行结果: 4. #include<iostream.h> void main() char a="aabcdaabacabfgacd" int i1=0, i2=0, i=0; while(ai) if(ai='a') i1+; if(ai='b') i2+; i+; cout<<i1<<' '<<i2<<endl; 运行结果: 5. #include<iostream.h> void main() char a="abcdabcabdaeaf" int b5=0, i=0; while(ai) switch(ai) case 'a': b0+;break; case 'b': b1+;break; case 'c': b2+;break; case 'd': b3+;break; default: b4+; i+; for(i=0;i<5;i+) cout<<bi<<' ' cout<<endl; 运行结果: 6. #include<iostream.h> void main() int a10=76,83,54,62,40,75,80,92,77,84; int b4=60,70,90,101; int c4=0; for(int i=0;i<10;i+) int j=0; while(ai>=bj) j+; cj+; for(i=0;i<4;i+) cout<<ci<<' ' cout<<endl; 运行结果: 7. #include<iostream.h> void main() int a34=1,2,7,8,5,6,11,12,24,10,3,4; int m=a00; int ii=0, jj=0; for(int i=0;i<3;i+) for(int j=0;j<4;j+) if(aij>m) m=aij; ii=i; jj=j; cout<<ii<<' '<<jj<<' '<<aiijj<<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(ai>=k) c+; return c; 函数功能: 2. #include<iostream.h> 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(aj<ak) k=j; int x=ai; ai=ak; ak=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=a0; for(int i=0;i<n;i+) if(ai>m) m=ai; return m; 函数功能: 5. template<class Type> void WE(Type a, Type b, int n) for(int i=0;i<n;i+) bi=ai*2; 函数功能:第三次作业练习一、填空题 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是一个一维数组,则ai的指针访问方式为_。 7. 假定a是一个二维数组,则aij的指针访问方式为_。 8. 假定a是一个一维数组,则ai对应的存储地址(以字节为单位)为_。 9. 假定一个二维数组为aMN,则aij对应的存储地址(以字节为单位)为_。 10. 假定一个二维数组为aMN,则ai的地址值(以字节为单位)为_。 11. 假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大_字节。 12. 假定a为一个字符数组名,则元素a8的字节地址为_。 13. 假定a为一个整型数组名,则元素a4的字节地址为_。 14假定一个结构类型的定义为 “struct Aint a,b; short c; A* d;”,则该类型的大小为_字节。 15假定一个结构类型的定义为 “struct Bint a8; char* b;”,则该类型的大小为_字节。 16. 假定一个结构类型的定义为 “struct Dint a; union int b; double c;D* d3;”,则该类型的大小为_字节。 17. 假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为_。 18. 假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为_。 19. 假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为_。二、给出下列程序运行后的输出结果 1. #include<iomanip.h> void main() int a8=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 a5=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 a8=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+=ai; 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.#include<iomanip.h> void LG(int*& a, int& m) a=new intm; 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<<pi<<' ' cout<<endl; deletep; 运行结果: 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 int5; int i; for(i=0;i<5;i+) di=2*i+3; cout<<setw(5)<<di<<' ' cout<<endl; LH(d,5); for(i=0;i<5;i+) cout<<setw(5)<<di<<' ' cout<<endl; deleted; 运行结果: 10. #include<iostream.h> struct Worker char name15; /姓名 int age; /年龄 float pay; /工资 ; void main() Worker x="weirong",55,640; Worker y, *p; y=x; p=&x; cout<<y.name<<' '<<y.age<<' '<<y.pay<<endl; cout<<p->name<<' '<<p->age+5<<' '<<p->pay-10<<endl; 运行结果: 11. #include<iostream.h> #include<string.h> struct Worker char name15; /姓名 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 intn, *p=a+n; for(int i=0;i<n;i+) cin>>ai; 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+=ai; s/=n; m=0; for(i=0;i<n;i+) if(ai>=s) m+; b=new intm; int* p=b; for(i=0;i<n;i+) if(ai>=s) *p+=ai; 函数功能: 3. /