山东广播电视大学开放教育《C语言程序设计》课程综合练习题.doc
山东广播电视大学开放教育C+语言程序设计课程综合练习题(4)一、填空(每空2分,共20分) 1.C+源程序文件扩展名为_。2.unsigned long 型数据占_字节存储空间。3.执行语句cout<<"d:datac+test.exe";后,输出结果是_。4.表达式8|3的结果是_。5.全局变量和_若在定义时未进行初始化,则自动初始化为0。6.将s初始化为值是"Hello!"的指针常量,初始化语句是_。7.类中的成员只能为该类的成员函数及该类的派生类中的成员函数访问,则应加上访问属性_。8.定义输出文件流f,并以追加数据方式打开相应文件"a:aaa.dat",定义f的语句是_。9.设文件f.cpp中的一个函数要访问在另一个文件中定义的int型变量x,则在f.cpp中x应定义为_。10.函数模板的说明格式是:template_函数定义。二、单项选择题(每空2分,共20分)1.类型修饰符unsigned修饰( )类型是错误的。 A char B int C long int D float2.下列变量名中,( )是合法的。 A _var B bye-bye C int D 123_cc3.设int a=3,* p=&a;,则*p的值是( )。 A 变量a的地址值 B 无意义 C 变量p的地址值 D 34.设int m=0;,下列表示引用的方法中,( )是正确的。 A int &x=m; B int &y=10; C int &z; D float &t=&m5.循环for(int i=0,x=0;!x&&i<=5;i+);的循环体执行次数是( )。 A 5 B 6 C 1 D 无限 6.磁盘文件操作时,在打开磁盘文件的访问方式中,( )是以追加数据 方式打开文件的。 A in B out C app D ate7.类X中,若没有定义构造函数,则默认的构造函数是( )。 A X ( ) B X (X & x) *this=x; C X ( ) D 不存在8.设int * p2=&x,* p1=a;*p2=*b;则变量a和b的类型分别是( )。 A int和int B int * 和int C int和int * D int * 和int *9.设p为指针变量,则以下表达式正确的是( )。 A -p+ B -+p C -(p+5) D (p-5)+ 10.设void f1(int &x,char * p);int m;char s ="c+";以下调用合法的是( )。 A f1(&m,&s); B f1(&m,s); C f1(m,s); D f1(m,&s); 三、回答问题(每题4分,共20分)1.设int a34;double b345; 请写出数组指针pa和pb的定义,使其分别与数组名a和b等价。 2.设int f1(int n,char * s);char * f2(int n,char * s); 请写出函数指针pf1和pf2的定义,使其分别指向上述两个函数。 3.请初始化一维指针数组week。其初值表初值为"Sun","Mon","Tue","Wed","Thu","Fri"和"Sat"。 4.要使语句p1=new int(10) ;p2=new double 10;能正常执行,写出p1和p2的定义。 5.设有int f1(int n)n+=2;return n*n; int f2(int &n)n+=2;return n*n; 执行 int m=5,n=3; m=f1(n);cout<<m<<' '<<n<<endl; m=f2(n);cout<<m<<' '<<n<<endl; 写出结果。 四、(每题10分,共20分)1.写出下列程序的执行结果。 # include <iostream.h> void main() int i=1,j=2,k=3,a=10; if (!i) a-; else if(j) if(k) a=5; else a=6; a+; cout<<a<<endl; if(i<j) if(i!=3) if(!k) a=1; else if(k) a=5; a+=2; cout<<a<<endl; 2.设a盘上文本文件aaa.dat中保存有0至100之间的所有奇数,下列程序将全部数据及其和输出至屏幕上,请将程序补充完全。 # include <stdlib.h> # include _ void main(void) _ f1("a:aaa.dat",ios:in|ios:nocreate); if (!f1) cerr<<"a:aaa.dat file not open!"<<endl; exit(1); int x,s=0; while (_)f1>>x;cout<<x<<' ';_; f1._; 五、(每题10分,共20分)1.用while循环编程,求自然数1至100之间各奇数平方和并输出。 2.设有函数void sum(int score 5,int row);,它将数组score每行后四个元素之和用首元素保存。试编写这个函数 编写主函数并初始化相应实参调用这个函数,并输出结果。参考答案一、填空(每空2分,共20分) 1.cpp2.43.d:datac+test.exe4.115.静态局部变6.char * const s="Hello!";7.protected8.ofstream f("a:aaa.dat",ios:app);9.extern int x;10.<模板形参表>二、单项选择题(每空2分,共20分)1D2A3D4A5B6C7A8D9B10C三、回答问题(每题4分,共20分)1int (*pa)4=a;double(*pb)45=b;2int (* pf1)(int n,char * s)=f1;char *( * pf2)(int n,char * s)=f2; 3char * week="Sun","Mon","Tue","Wed","Thu","Fri","Sat"; 4int * p1 ;double * p2;5 25 36 25 5四、(每题10分,共20分)1 6 7 2 fstream.h ifstream !f1.eof() s+=x close()五、(每题10分,共20分)1 #include<iostream.h>void main()int i=1,sum=0;while(i<=100)sum+=i*i;i+=2;cout<<"sum="<<sum<<endl; 2#include<iostream.h>void sum(int score5,int row) for(int i=0;i<row;i+) scorei0=0; for(int j=1;j<=4;j+) scorei0+=scoreij; void main() int a55=0,50,60,70,80,0,51,61,71,81, 0,52,62,72,82,0,53,63,73,83,0,54,64,74,84; sum(a,5); for(int i=0;i<5;i+) cout<<ai0<<endl;