C++程序设计
上 海 交 通 大 学 试 卷( A 卷) ( 2011 至 2012 学年 第_2学期 期中考) 班级号_________________ 学号______________ 姓名 课程名称 C++程序设计 成绩 一. 选择填空:(每题1分,共10分)
1. 已知各变量的类型说明如下:
int a = 1; double x = 1.42; char ch;
则以下不符合C++语言语法的表达式是 C
A、a += 0x123fd B、x = 12e-8 C、ch = “x” D、ch = ?\\a?
2.下面 D 是死循环。
A、for(i=0; i<10; i++) cout << i << \ B、for(i=10; i>=1; i--) cout << i << \ C、i=10; do { cout << i-- << \D、i=0; while(i <= 10); cout << ++i << \
3. C++语言的跳转语句中,对于break和continue说法正确的是 C : A、break语句只应用于循环体中 B、continue语句用于跳出循环语句 C、continue语句用于跳出当前的循环周期 D、break语句用于跳出当前的循环周期
4. 有如下定义语句:int a[] = {1,2,3,4,5};,则对语句int *p=a;正确的描述是 B 。 A、语句 int *p = a;定义不正确
B、语句 int *p=a;初始化变量p,使其指向数组对象a的第一个元素 C、语句int *p=a; 是把数组a的值赋给变量p D、语句int *p=a; 是把a[0]的值赋给变量p
5 若有以下定义和语句,则合法的表示是 C char a[ ] = ”abcdefg”; char *p=a;
A、变量p和变量a是等价的 B、数组a的长度是7 C、p[7]的值是?\\0? D、a[7]的值是‘0’ A 卷 总8页 第 1 页
C++程序设计
6 以下所列的各函数原型中,正确的是 A
A、 int &play(int , int); B、void* play(int a, int b=1, double c); C、 void & play(int *a, int *b[]); D、int & play(int a; int b[ ]);
7 下列程序中错误的语句是 C
int main( )
{ char *pt1 = \char pt2[ ] = \char *pt3 = \
pt3 = pt2; //A strcpy(pt3, pt2); //B pt2 = pt1; //C strcpy(pt2, pt3); //D cout << pt2; return 0; }
8 下列语句正确的是 A
A char a[2] = {?a?}; B char 3a = ?\\0?; C char a[ ] = 'abc'; D char a = \
9、ch为char类型,判断ch为小写字符的表达式是 C 。 A、?a?<= ch <= ?z? B、(ch >= ?a?) & ( ch <= ?z?) C、(ch >= ?a?) && (ch <= ?z?) D、(ch >= ?a?) || (ch <= ?z?)
10.链表结点的结构类型为 struct linkRec {int data; linkRec *next;},如果指针rear指向尾结点,将节点p
链入表尾,并将p作为新的表尾可用语句 B
head rear p 我承诺,我将严格遵守考试纪律。 承诺人: 题号 得分 批阅人(流水阅 卷教师签名处) A、 rear->next=p->next; rear=p; B、rear->next=p; rear=p;
C、 rear->next= rear; p->next= p; D、 (*rear ).next= rear; (*p).next =p;
A 卷 总8页 第 2 页
C++程序设计
二.简答题(16分)
1. 写出完成下列任务的表达式(6分):
a. 取出整型变量n的个位数
b. 取出整型变量n的十位以上的数字
c. 将整型变量a和b相除后的商存于变量c,余数存于变量d d. 将字符变量ch中保存的小写字母转换成大写字符
e. 将double型的变量d中保存的数字按四舍五入的规则转换成整数 f 判断指针p是否为空指针
2. 重写代码(5分):
a.用一个switch语句重写下列代码(3分) if (ch == ?E? || ch ==?e?) ++countE;
else if (ch ==?A? || ch ==?a?) ++countA;
else if (ch ==?I? || ch ==?i?) ++countI;
else
cout << “error”;
b.用一个if语句重写下列代码(2分) if (ch ==?E?) ++c;
if (ch ==?E?) cout << c << endl;
3. 当遇到下列情况时,你将怎样编写for语句的控制行。(5分)
a.从1计数到100。
b.从2, 4, 6, 8, ?计数到100。
c.从0开始,每次计数加7,直到成为三位数。 d.从100开始,反向计数,99, 98, 97, ?直到0。 e.从?a?变到?z?。
三.程序理解:(每题3分,共30分)
1. 写出下面程序的执行结果
int main()
{ for (char ch = ?A? ; ch < ?G?; ++ch)
switch(ch) {
case ?A? : case ?B? : cout << ch;
case ?C?: cout << ?C? << endl; break;
case ?D?: case ?E?: cout << ch << endl; break; case ?F?: cout << ch;
default: cout << ch << endl; }
return 0; }
A 卷 总8页 第 3 页