电大c++形考册及答案.doc
教育部人才培养模式 改革和开放教育试点 C+语言程序设计形成性考核册学校名称: 学生姓名: 学生学号: 班 级: 中央广播电视大学出版社姓 名: 学 号: 得 分: 教师签名: C+语言程序设计作业1一、填空题1C+语言中的每条基本语句以_;_作为结束符,每条复合语句以_作为结束符。2用于输出表达式值的标准输出流对象是_cout_,用于从键盘上为变量输入值的标准输入流对象是_cin_。3当不需要函数返回任何值时,则应把该函数类型定义为_void_。4执行”cout<<143<<+<<18<<=<<143+18<<endl;”语句后得到的输出结果为_143+18=161_。5执行”cout<<“nign”<<“chen”<<38<<endl;”语句后得到的输出结果为_nignchen38_。6在每个C+程序中都必须包含有这样一个函数,该函数的函数名为_main_。7C+源程序文件的缺省扩展名为_.cpp_, 由C+源程序文件编译而成的目标文件的缺省扩展名为_.obj_,由C+目标文件连接而成的可执行文件的缺省扩展名为_.exe_。8程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用_空格_或_回车_符号作为分隔符。 9十进制数25表示成符合C+语言规则的八进制和十六进制数分别为_031_ 和_ox19_。10在C+语言中,用转义字符序列_n_或操纵符_endl_表示输出一个换行符。11执行”Cout<<char(b+2)<<endl;”语句后得到的输出结果为_d_。12执行”cout<<char(K-3)<<endl; “语句后得到的输出结果为_H_。13 已知AZ的Ascll码为6590,当执行”int x=H+5;”语句后x的值为_77_。14已知AZ的Ascll码为6590,当执行”char ch=16*5+2; cout<<ch<<endl;”语句序列后,得到的输出结果为_R_。15假定一个枚举类型的定义为”enum RAxa,xb,xc,xd;”,则执行”cout<<“xc=”<<xc<<endl;”语句得到的输出结果为_xc=2_。16假定一个枚举类型的定义为”enum RBab,ac=3,ad,ae x=ad;”,则x的值为_4_。17char、short和int类型的大小分别为_1B_、_2B_和_4B_。18float和double类型的大小分别为_4B_和_8B_。19十进制数128和-3.26的类型分别为_int_和_flaot_。20若需要定义一个标识符常量,并且使C+能够进行类型检查,则应在定义语句的开始使用保留字_#define_。21使用const语句定义一个标识符常量时,则必须对它同时进行_初始化_。22执行”int x=45,y=16;cout<<x/y<< <<x%y<<endl;”语句序列后得到的输出结果为_2 13_.23假定x=10,y=6,则表达式2+x+和+y*3的值分别为_12_和_21_。24算术表达式 对应的c+表达式为_(x*x+y*y)/(2-x*y)_。25算术表达式 对应的c+表达式为_x*y*y/3*a+4*b-1_。26表达式float (25)/4和int(14.6)%5的值分别为_6.25_和_4_。27. 表达式a=a+b表示成复合赋值表达式为_a+=b_。28表达式a=a+l表示成增量表达式为_a+或+a_。29增量表达式+y表示成赋值表达式为_y=y+1或y+=1_。30关系表达式(x=0)的等价表达式为_x!=1_。31关系表达式(x!=0)的等价表达式为_x=1_。32关系表达式x+y>z的相反表达式为_x+y!>Z或_x+y<=Z_。33逻辑表达式x>5&&x<10的相反表达式为_x<=5 | x>=10_。34逻辑表达式ab| b=5的相反表达式为_a<=b &&b!=5_。35若x=15,y=40,则 xy 和 x<=y的逻辑值分别为_0_和_1_。36假定x=5,则执行”a=(x? 10: 4*2);”语句后a的值为_10_。37假定a=5,则条件表达式”a=0 ? 10:20”的值为_20_。38;执行”typedef int DataType;”语句后,在使用int定义整型变量的地方都可以使用 DataType 来定义整型变量。39设x和y均为bool量,则x&&y为真的条件是_xture,yture_。40设x和y均为bool量,则x| y为假的条件是_xfalse,yfalse_。二、写出下列程序运行后的输出结果 1# include <iostreamh> 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; good!Pass!Bad!Well! 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; 8 240 3.2 case *: x=doubel(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=l; i<6;i+) S+=i*i; cout<<“s=”<<s<<endl; s=55 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; i,s=19,63 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; 25 20 6# include <iostream.h> void main() int n=10,y=1; while(n-) y+; +y; cout<<“y*y=”<<y*y<<endl; y*y=441 三、写出下列每个函数的功能 1# include <iostream.h> int SA(int a,int b) if(a>b) return 1; else if(a=b) return 0; 返回值 1 a>b else return -1; 0 a=b -1 a<b 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; 返回值int a,b,c中最大值 3. int SE(int n) /n为大于等于1的整数 int x; cin>>x; if(n=1) return x; int m=x; 输入x当n=1返回地址x while(-n) 否则求输入x值之和放到m中并 cin>>x; m+=x; 返回m处 return m ; 4 double SF(double x,ini n) /n为大于等于0的整数 double p=1,s=1; for(int i=1;i<=n;i+) p*=X; s+=p/(i+1); return s; S=1+x/2+x*x/2+x*x*x/3+xn/n+1 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; 判断x是否为质数是返回1,否返回0 i+; if(i<=a) return 0;else return 1; 6 float FH() float x, y=0, n=0; cin>>x; while(x!=-100) 输入n个实数计算它的平均值以-100作结束 n+; y+=x; cin>>x; if(n=0) return y; else return y/n; 姓 名: 学 号: 得 分: 教师签名: C+语言程序设计作业2 一、填空题1假定一个一维数组的定义为”char *a5;”,则该数组所含元素的个数为_5_ 所占存储空间的字节数为_5_.2假定一个二维数组的定义为”int a46;”,则该数组所含元素的个数为_24_, 所占存储空间的字节数为_96_ 。3假定一个二维数组的定义为”char a88;”,则该数组所含元素的个数为_ 64_,所占存储空间的字节数为_64_。4. 执行”typdef float ABC10;”语句把ABC定义为具有10个单精度元素的_数组_。5. 在函数外定义的变量称为_全局_ _变量,若没有被初始化则系统隐含对它赋初值0_。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<<iO<< <<il<< <<i2<<endl; 4 2 4 2 . # include<iostream.h> # include<string.h> void main( ) char a5= “student”,”worker”,”cadre”,”apple”,”peasant” ; char *pl,*p2; pl=p2=a0; for(int i=0;i<5;i+) if(strcmp(ai,pl)>0) pl=ai; if(strcmp(ai,p2)<0) p2=ai; cout<<pl<< <<p2<<endl; work apple 3 . # include <iostream.h> void main( ) int a8=36,73,48,14,55,40,32,66; int bl,b2; bl=b2=a0; for(int i=l; i<8; i+) if(ai>bl ) if(bl>b2) b2=bl ; bl=ai ; cout<<bl<< <<b2<<endl; 73 36 4 . # include<iostream.h> void main( ) char a=“aabcdaabacabfgacd”; int il=0,i2=0,i=0; while (ai) if(ai=a) il+ ; if(ai=b) i2+ ; i+; 7 3 cout<<i1<< <<i2<<endl; 5 . # include <iostream.h> void nain( ) char a=“abcdabcabdaeaf”; int b5=0 , i=0; while(ai) switch(ai) case a: b0+; break; case b: bl+; break; case c: b2+; break; case d: b3+; break; default: b4+; i+; for(i=0;i<5;i+) cout<<bi<< cout<<endl ; 5 3 2 2 2 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; 2 2 0 1 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; 2 0 248 . # include<iostream.h>void main() int a=10,b=20; cout<<a<<<<b<<endl; a*=4 int b=a+35; cout<<a<<<<b<<endl; 10 20 40 75cout<<a<<<<b<<endl; 40 75三、写出下列每个函数的功能 1int WC(int a,int n,int k) int c=0; for(int i=0;i<n ;i+) if(ai>=k)c+; 统计数值a中元素大于等于k的个数 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+) 对数组a中n个元素从大到小排序 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; 用函数模板比较a和b的大小 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; 用函数模板对数组中n个元素取最大值return m; 5templatee<class Type> void WE(Type a,Type b,int n) for(int i=0;i<n ;i+) bi=ai* 2; 用函数模板把数组a中n个元素x2,再逐一传到b数组中 姓 名: 学 号: 得 分: 教师签名: C+语言程序设计作业3一、填空题1假定P所指对象的值为28,p+1所指对象的值为62,则*p+的值为_28_。2假定p所指对象的值为28,P+l所指对象的值为62,则*+p的值为_62_。3假定p所指对象值为25,p+l所指对象的值为50,则执行”(*p)+;”语句后,p所指对象的值为_25_。4假定p所指对象的值为25,p+1所指对象的值为50,则执行” *(p+);”语句后,p所指对象的值为_50_。5假定a是一个指针数组,则a+i所指对象的地址比a地址大_i*sizeof(a0)_ 字节。6假定a是一个一维数组,则ai的指针访问方式为_*(a+i)_ _。7假定a是一个二维数组,则aij的指针访问方式为_*(ai+j)_。8假定a是一个一维数组,则ai对应的存储地址(以字节为单位)为 &a0+i*sizeof(a00)_。9假定一个二维数组为aMN,则aij对应的存储地址(以字节为单位)为_&a+(i*4j)*sizeof(a00)。10假定一个二维数组为aMN,则ai的地址值(以字节为单位)为&a00+(i*aj)*sizeof(a00)。11假定p是一个指向float型数据的指针,则p+l所指数据的地址比p所指数据的地址大4_字节。12假定a为一个字符数组名,则元素a8的字节地址为_&a+8_。13假定a为一个整型数组名,则元素a4的字节地址为_&a+16_。14假定一个结构类型的定义为”struct A int a,b;short c; A * d;”,则该类型的大小为10_字节。(A * d含义:允许用A的指针类型。指针占4字节)15假定一个结构类型的定义为”struct B int a8;char *b;”,则该类型的大小为36节。16假定一个结构类型的定义为”struct D int a ; union int b;double c; D*d3;” 则该类型的大小为_12 _字节。17假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为_worker*r=new(workern_。18假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为_&a 对象。19假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为 _ p b 对象。 二、给出下列程序运行后的输出结果 1# include<iostream.h> void main() int a8=7,9,ll,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; 7 9 11 13 3 8 15 17 2# inelude<iostream.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 6 15 7 20 20 7 15 6 3 3# include<ioatream.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 28 4# include<iostream.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; 20 40 30 60 5、# include<iostream.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 ; 75 45 165 6# include<iostream.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; 36 15 15 36 7# include<iostream.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; x=5 y=8 LF(x,y) ; x=13 y=21 cout< <“x=“<<x<<“,y=“<<y<<endl; x=13 y=21 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+l; void main( ) int *p,h=5; LG(p, n) ; for(int i=0; i<n; i+) cout< <pi< < ; cout<<endl; “ delete P ; 1 3 5 7 9 9 . # include<iomanip.h> void LH(int *a,int n) int * p=a+n-l; 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; 3 5 7 9 11 delete d; 11 9 7 5 3 1O . # include<iostream.h> struct Worker char name15 ; int age; float pay; ; void main( ) Worker x= “weirong, 55 , 640 ; weirong 55 640 Worker y, *p; weirong 60 630 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 name 15 ; int age; float pay; ; void main( ) Worker x; char