试卷代号:1075 座位号■■ 中央广播电视大学2007一2008学年度第二学期“开放本科”期末考试 C十十语言程序设计 试题 2008年7月 题 尽 三 四 五 总分 分 数 得分 评卷人 一、单选题(每小题2分,共20分)】 1.下面的保留字( )不能作为函数的返回类型。 A.void B.int C.new D.long 2.C++源程序文件的默认扩展名为( )。 A.cpp B.exe C.obj D.lik 3.在下列的标识符常量的定义语句中,错误的定义语句是()。 A.const double PI=3.14159 B.const int N=20 C.const char ch D.const bool mark=true .for循环语句一定能够被改写为( )语句。 A.复合 B.if C.switch D.while 5.假定a为一个数组名,则下面的( )表达式有语法错误。 A.ai] B.++a C.¥a D.*(a+1) 542
试卷代号:1075 座位号巨一口 中央广播电视大学2007-2008学年度第二学期“开放本科”期末考试 C-I-+语言程序设计 试题 2008年 7月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单选题(每小题 2分,共 20分) 1.下面的保 留字( )不能作为函数的返回类型 。 A. void B. int C. new D. long 2. C十+源程序文件的默认扩展名为( cpp obj B. exe D. lik 3.在下列的标识符常量的定义语句中,错误的定义语句是 ( A. const double PI= 3. 14159 C. const char ch B. const int N=20 D. const bool mark=true }:. for循环语句一定能够被改写为( )语句。 复合 switch 13. i f D. while 5.假定 a为一个数组名 八.a仁i] ,则下 面的( )表达式有语法错误。 B. *+斗一a D. } Ca+ 1) 542
6.在下面的二维数组定义中,只有( )语句是正确的。 A.int a5]]; B.inta[](10); C.int a]]; D.inta[][5]={1,2,3},{4,5}: 7.下面( )的函数声明格式不正确。 A.AA(int a,int b); B.AA(int a=0,int b); C.AA(int a=0,int b=0); D.AA(int a,int b=0); 8.假定指针变量p定义为“intp=new int[30];”,要释放p所指向的动态数组空间,则 使用下面的( )语句。 A.delete p; B.delete p; C.delete &p; D.delete []p; 9.假定要对类AB定义加号运算符重载成员函数,实现两个AB类对象的加法,并返回相 加结果,则该成员函数的声明语句为()。 A.AB operator +(AB&a,AB&b);B.AB operator +(AB&a); C.operator +(AB a); D.AB&.operator+(); l0.当需要使用ifstream流类定义一个流对象并联系一个磁盘文件时,应在文件开始使 用#include命令,使之包含()头文件。 A.strstrea.h B.stdlib.h C.iostream.h D.fstream.h 得 分 评卷人 二、填空题(每小题2分,共20分)】 1.执行“cout<<"x1="<<183;”语句后得到的输出结果为 2.在c十十语言中,用转义字符序列 表示输出一个换行。 3.int类型的大小为 个字节。 4.假定y的值为5,则增量表达式十十y的值为 5.假定a的值为25,则算术表达式a%3的值为 6.结束所在循环类语句或switch语句执行的中断语句的保留字为 7.函数调用时,实参向形参的传送分为 传送和值传送两种方式。 8.假定a是一个一维数组,则a[i]的指针访问方式为 9.假定一个结构类型的定义为"struct C{double a[5];intn;}:",则该类型的大小为 个字节。 543
6.在下面的二维数组定义中,只有( )语句是正确的。 A. int a[5][]; B. int a[](10); C. int a[]仁〕; D. int a[][5]={{1,2,3},{4,5}}; 7.下面( )的函数声明格式不正确。 A. AA(int a,int b); 一 B. AA(int a = 0,int b); C. AAGnt a=0,int b=0); D. AA(int a, int b=0); 8.假定指针变量 P定义为“int } p=new int[30] },",要释放 P所指向的动态数组空间,则 使用下面的( )语句 。 A. delete p; B. delete } p; C. delete乙P; D. delete []p; 9.假定要对类 AB定义加号运算符重载成员函数,实现两个AB类对象的加法,并返回相 加结果 ,则该成员 函数的声明语句为( )。 A. AB operator+(AB& a, ABab>; B. AB operator+(AB乙a); C. operator+(AB a); D. AB& operator+(); 10.当需要使用 if stream流类定义一个流对象并联系一个磁盘文件时,应在文件开始使 用#include命令,使之包含( )头文件。 A. strstrea. h C. iostream. h B. stdlib. h D. fstream. h 得 分 评卷人 二、填空题(每小题 2分,共 20分) 1.执行“coutG<"xl="+ 18 } 3;”语句后得到的输出结果为_ 。 2.在c++语言中,用转义字符序列_ 表示输出一个换行。 3. int类型的大小为 个字节。 4.假定Y的值为5,则增量表达式++y的值为_ 。 5.假定a的值为25,则算术表达式a写3的值为_ 。 6.结束所在循环类语句或 switch语句执行的中断语句的保留字为_ 。 7.函数调用时,实参向形参的传送分为_ 传送和值传送两种方式。 8.假定a是一个一维数组,则a[i〕的指针访问方式为_ 。 9.假定一个结构类型的定义为 ”struct C{ double a[5]; int n; } ;",则该类型的大小 为 个字节 。 543
10.若要在程序中进行 的输入输出操作,则必须在开始的#inlude预处理命令 中使用fstream.h头文件。 得 分 评卷人 三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 1.include void main()( int n=5,sum=0; while(n){sum+=n;n--;) coutcl)cl=a[i]; else if(a[i]<c2)c2=a[i]; cout<<cl<<<<c2<<endl; 运行结果: 3.include<iomanip.h void main(){ inta[8]={4,8,15,16,20,30,48,62}; int米p=a; do( cout<<*p<<''; p+=3; while(p<a+8); cout<<endl; 运行结果: 544
10.若要在程序中进行 的输 人输 出操作,则必须在开始的 #inlude预处理命令 中使用 fstream. h头文件 。 得 分 评卷人 三、写出下列每个程序运行后的输出结果 (每小题 6分 ,共 30分) 1.#include const int N=6; void main()( int a[N]={76,83,54,62,40,65}; int c1,c2; c1“c2=a[0]; for(int i=1;i<N;i十+) if(a[i]}cl) c1=a[i]; else if(a[i]<c2) c2=a[i]; cout+ c1 + ' ' + c2 + endl; } 运行结果 : 3.#include<iomanip. h} void main(){ int a[8]={4,8,15,16,20,30,48,62}; mt * p=a; do{ cout+ } p+ ' '; P+=3; }while(p<a-I-8); cout+ endl; } 运行结果 : 544
4.include int LF(int x,int y) x=x十y;y=x十y; return x+y; } void main()( int x=5,y=8; cout>x;y+=x; } return y; .} 函数功能: 2.int WG(int a,int b)( if(a>b)return 1; else if(a==b)return 0; else return -1; } 函数功能: 545
4.#includeG omanip. h> int LF(int x, int y)夏 x=x十Y;Y=x+Y} return x+y; } void main(){ int x=5,y=8; cout+ F(x,y) + ' ' + LF(10,6) + endl } 运行结果 : 5.#mclude<iostream. h} class A { int a, b; public: A(){a=b=0;} A(int as,int bb){ a二aa; b= bb; cout+ a+ ' '+ + endl; void main(){A x, y(2,3); 运行结果 : 得 分 评卷人 四、写出下列每个函数的功能(每小题 8分,共 24分) 1. double FI(double n){ //n为大于等于 1的整数 double x, y= for(int i=0; cin; } 0; i< n;n-}+){ x; y+=x return y } 函数功能: 2. int WG(int a,int b) if(a}b) return I; else if(a= =b) return 0 else return 一 1: 545
3.假定结构类型StrNode带有一个字符串域name[20]和一个结点指针域next。 void QB(StrNode *&f,int n){ /川为单链表的表头指针 if(n==0){f=NULL;return;) f=new StrNode; /由「指向一个新结点 cinf->name; StrNode p=f; while(--n){ p=p->next=new StrNode; cin>p->name; p->next=NULL; 函数功能: 得 分 评卷人 五、按题目要求编写函数(6分) 假定一个函数声明为“int fun(intn);”,要求判断出n是否为一个素数,若是则返回1否 则返回0;特别地,若n小于等于1则返回一1。 提示:rand()函数返回0~32767之间的一个随机整数,sqrt(n)函数返回n的平方根。 546
3.假定结构类型StrNode带有一个字符串域 name[20〕和一个结点指针域 nexto void QB(StrNode &f , int n){ //f为单链表的表头指针 if(n==0){f=NULL; return;} f=new StrNode; //由f指向一个新结点 cin; f一>name; StrNode, p=f; while(一一n){ P=P一>next=new StrNode; cin}} p一>name; } p一>next=NULL; } 函数功能: 得 分 评卷人 I 五、按题 目要求编写函数(6分) 假定一个函数声明为“int fun(int n);",要求判断出 n是否为一个素数,若是则返回 1否 则返回叭特别地,若 n小于等于 1则返回一to 提示:rand()函数返回。-}-32767之间的一个随机整数,sgrt(n)函数返回n的平方根。 546
试卷代号:1075 中央广播电视大学2007一2008学年度第二学期“开放本科”期末考试 C十十语言程序设计试题答案及评分标准 (供参考) 2008年7月 一、单选题(每小题2分,共20分)】 1.C 2.A 3.C 4.D 5.B 6.D 7.B 8.D 9.B 10.D 二、填空题(每小题2分,共20分)】 1.x1=54 2.n 3.4 4.6 5.1 6.break 7.引用 8.¥(a+i) 9.44 10.文件 三、写出下列每个程序运行后的输出结果(每小题6分,共30分)】 1.sum=15 2.8340 /每个数据3分 3.41648 /每个数据2分 4.3438 /每个数据3分 5.23 /每个数据3分 四、写出下列每个函数的功能(每小题8分,共24分) 评分标准:每题与参考答案的叙述含义相同者得8分,否则酌情给分。 1.求出并返回从键盘上输入的n个实数之和。 2.比较两个整型参数a和b的大小,若a>b则返回1,若a==b则返回0,若a<b则返 回一1。 547
试卷代号:1075 中央广播电视大学2007-2008学年度第二学期“开放本科”期末考试 C-}+语言程序设计 试题答案及评分标准 (供参考) 2008年 7月 一、单选题(每小题 2分,共 20分) 1. C 2. A 3. C 4. D 5. B 6.D 7.13 8.D 9.B 10. D 二、填空题(每小题 2分,共 20分) 1. xl=54 2. `\n' 3. 4 4. 6 5. 1 6. break 7.引用 8. * (a-}-i) 9. 44 10.文件 三、写出下列每个程序运行后的输 出结果(每小题 6分,共 30分) 1. sum = 15 2. 83 40 /每个数据 3分 3. 4 16 48 /每个数据 2分 4. 34 38 /每个数据 3分 5. 2 3 //每个数据 3分 四、写出下列每个 函数的功能(每小题 8分 ,共 24分) 评分标准:每题与参考答案的叙述含义相同者得 8分,否则酌情给分。 1.求出并返回从键盘上输人的 n个实数之和。 2.比较两个整型参数 a和 b的大小,若 a> b则返 回 1,若 a==b则返 回 。,若 a};b则返 回一to 5 4'7
3.根据从键盘上依次输入的n个字符串建立一个具有n个结点的链表,链表的表头指针 由引用变量f带回。 五、按题目要求编写函数(6分) 评分标准:根据编程的完整程度酌情给分。 int fun(int n)( if(n<=1)return-1; //2分 for(int i=2;i<=sqrt(n);i++) if(n%i==0)break; /14分 if(i<=sqrt(n))return 0;else return 1; /16分 548
3.根据从键盘上依次输人的 n个字符串建立一个具有 n个结点的链表,链表的表头指针 由引用变量 f带回。 五、按题 目要求编写函数 (6分) 评分标准:根据编程的完整程度酌情给分。 int fun(int n){ if(n< =1)return一1; for(int i=2;i<=sgrt(n);i -}-+) 刀2分 if(n0oi==0) break; if “sgrt(n))return 0;else return 1 刀4分 ; /Is分 548