2011-2012-2期中试卷A(c++) 下载本文

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 页