《08级C++I试卷(A)_含答案.doc》由会员分享,可在线阅读,更多相关《08级C++I试卷(A)_含答案.doc(8页珍藏版)》请在金锄头文库上搜索。
1、姓名 学号 学院 专业 座位号( 密 封 线 内 不 答 题 )密封线线_ _ 诚信应考,考试作弊将带来严重后果! 华南理工大学期末考试2008-12 高级语言程序设计 I 试卷 ( A )注意事项:1. 考前请将密封线内填写清楚; 2. 所有答案写在答题纸上; 3试卷和答题纸同时提交; 4考试形式:闭卷; 5. 本试卷共五大题,满分100分,考试时间120分钟。题 号一二三四五总分得 分评卷人一、单项选择题。(每小题2分, 共20分) 1. 下列选项中,合法的常量表示是( )。(A) program(B) 183AF(C) -618e3(D) 1.0e-5.32. 执行下列语句后,i,j,k
2、的值为( )。int i=1,j=1,k=1; (i+,-j) & +k;(A) 2,0,1(B) 2,0,2(C) 1,1,1(D) 1,0,23. 以下有关C+的说法中,正确的陈述是( )。(A) const只能约束普通内存变量的的写操作,不能约束指针变量的写操作。(B) 静态变量和全局变量的作用域都是文件作用域。 (C)一维数组定义中数组的长度表达式可以使用赋初值的变量。 (D) inline函数没有普通函数调用的时空开销。4. 有如下代码段,不正确的函数调用形式( )。typedef int (*pType)(int,int);int max(int a,int b) return a
3、b?a,b; pType pf = max;(A) pf(1,2);(B) (*pf)(1,2);(C) max(1,2);(D) (&pf)(1,2);5. 以下程序段中,循环次数是()for(int i=10;i0&i%2;) i=i-2; (A) 0(B) 4(C) 5(D) 66. 已知int iArray22=0,1,2,3,下列表达式的值为2的是( )。(A) iArray21(B) iArray11(C) *(*(iArray+1) (D) *(*(iArray)+1)7. 假设 char *a=“fortran”,“basic”,“c+”, “java”;则语句cout(D)1
4、0. 30*(F-C)/5-2*3表达式的值是( )。(A)6(B) 12(C)48(D)1811. sizeof(char)+6*(65)/(23?2:3)表达式的值是( )。(A) 3(B) 4(C) 1(D)2二、简答题。(共20分)1写出两个表达变量x和y的值都不等于零的逻辑表达式。 x!=0&y!=0 x&y2有以下语句,循环体执行次数是多少?结束后x的值是什么?10,-1int x=10; while(x-) coutxendl; 3有说明语句:int a; double x; int *p=new int100;分析以下表达式值的类型。a+xa=a+xp+1double int
5、int*4设有函数:void fun1(int a) a+; ;void fun2(int & a) a+; ;有以下调用:int b=5;fun1(b);/b的值是什么?fun2(b);/b的值又是什么?两次调用函数后变量b的值有变化吗?为什么?传值参数,引用参数5设有函数:int function(int a) static int k=0; return a+k+; 并有调用:int t=1; t=function(t)+function(t)+function(t);有人说t的结果值等于3,对吗?为什么?6,k是静态变量6.设有语句:int *ap=new int10;请写出两个动态数
6、组最后一个元素的表示形式。7请解释以下说明语句中标识符www的含义。double * www(double);www是函数名,有一个double值参,返回值类型为double*8.设有语句:char *s=South China University of Technology;请写输出子串“University of Technology”的语句。 couts+12endl;9有说明语句:int ary100; int max;赋值语句调用函数MaxAry求数组的最大元素值:max=MaxAry(ary,10);请写出MaxAry的函数原型。int MaxAry(const int *,in
7、t); 或 int MaxAry(const int ,int);10有语句:struct link int code; link *next; ; link *head;/push(head,256);已知head为单链表的头结点,函数调用语句push在表头插入一个数据,请写出对应的函数原型。void push(link *&, int);三、阅读程序写输出结果(共20分)1./循环#include void main() int i=0,s=0; while (i+=10) if(i%2) continue; s=s+i; coutst; 261220302./数组,指针#includev
8、oid main() int num5; int *p=num, i; for(i=1;i=5;i+) numi-1=i; for(i=0; i5; i+) coutnumi+(*p+)t; coutendl;2468103. /递归#includevoid print(char ch) int i=0;if(ch=D)return;else print(ch+1); while(i+=ch-A) coutch; coutendl;void main() print(A);CCC BBA4. /函数指针参数#include void fun(int *x, int *y) cout*x=*xt
9、;cout*y=*yt;*x = 3 ;*y = 4 ;void main() int x = 1, y = 2 ;fun(&y, &x);coutx=xt;couty=ytendl;*x=2 *y=1 x=4 y=3 高级语言程序设计 I 试卷 (A) 第 8 页 共 8 页四、程序填空题(每空2分,共20分)1. 假设90分以上为A等,80分到89分为B等,70分到79分为C等,60分到69分为D等,60分以下为E等。下面是输入一个分数,输出相应的五级制成绩的程序。#includevoid main()double score; coutscore; if( score 100 | sco
10、re 0 ) cout Input Error!; else switch( (1) ) / (1) (int) score/10 case 9: case 10: coutAn; break; case 8: coutBn; break; case 7: coutCn; break; case 6: coutDn; break; default: (2) ; / (2) coutEn; 2. 下面是显示如下图案的程序。1111111111 2222222 33333 444 5#includevoid main() int i , j, k ; for( i = 1; i = 5; i+ )
11、 for( k = 1; (3) ; k+ ) / k=i-1 coutends ; for( j =1 ; (4) ; j+ ) /( 2*(5i)+1) cout (5) ; / i coutendl; 3下面的程序的输出结果是:4 3 2 1 10 9 8 7 6 5 #include void fun( (6) , int n , int m ) /int * s 或 int s int i , j , t ; i = n ; j = m ; while ( ij ) t=si; si=sj; sj=t; i+; j-; void main() int a10 = 1,2,3,4,5,6,7,8,9,10 ; fun( a , 0 , 3