上海交大2010 至 2011 学年 第1学期 程序设计 试卷 下载本文

内容发布更新时间 : 2024/11/15 13:41:23星期一 下面是文章的全部内容请认真阅读。

上海交通大学 上 海 交 通 大 学 试 ACM试点班 卷(A) 《C程序设计》试卷 一。选择填空(每空1分,共20分) 1. 以下可以正确表示字符型常数的是 。 A. “c” B。 ‘297’ ( 2010 至 2011 学年 第_一_学期 ) 班级号__ 学号______________ 姓名 课程名称 程序设计思想与方法 成绩 C。 ‘\\t’ D。 “\\n” 2. 下列语句应将小写字母转换为大写字母,其中正确的是_______。 A. if (ch >= ’a’ && ch <= ’z’) ch = ch – ‘A’ + ’a’; B. if (ch >= ’a’ && ch <= ’z’) ch = ch + ’A’; C. if (ch >= ’a’ && ch <= ’z’) ch = ch +‘a’;

D. if (ch >= ’a’ && ch <= ’z’) ch = ch -‘a’ + ’A’; 3. 已知枚举类型shapeT定义如下:

enum shapeT {rectangle, square, triangle, diamond=9, oval, circle}; 则triangle和circle内部编码分别是_______。

A.2, 5 B。 3, 6 C。4, 11 D。3, 11 4. 下面语句正确的有____ A. int *p=&10;

B. char *p[]={‘a’, ’b’, ’c’, ’d’}; C. char *s=”hello world”; s=”hello SJTU” D. char s[]={“hello world”}; s=”hello SJTU”; 5.假设有如下语句

int a[10], *p=a;

则下面的表达式中不正确的是___ A. a=p+6 B. p=a+3 C. *p=a[3] D. a[2]=p[5] 6. 假设有如下语句

int a[5][6]; int *p=&a[0][0];

则能够正确表示数组元素a[3][2]的表达式是___ A. p[3][2] B. *(p+20)

C. *( ( *(p + 3) ) + 2 ) D. (*(p+3))[2] 我承诺,我将严7、假定在C++程序中有如下说明: 题号 格遵守考试纪律。 double image[10]; 承诺人: 那么,下列哪个表达式会得到image数组的最后一个元素的值? 得分 A、*image+9 B、image+9 C、*(image+9) D、image[10] 批阅人(流水阅 8. 有以下语句: 卷教师签名处) int a, b, c; a = 4;

b = a++; c = ++b;

这些语句执行后,a, b, c的值分别为_______。

A、 4, 5, 6 B、 5, 6, 7 C、5, 6, 6 D、5, 5, 5 9. 已知变量的说明如下:

int a = 4, b = 2; double d;

执行语句d = 1/a + 1/b; 后, d的值为 。

A、 1 B、 0.0 C、 0.75 D、 2 10、在下述程序中,循环体执行的次数是 void main()

{ int i=0,j=10,k=2,s=0; }

A、 4 B、 7 C、 5 D、 6 11、下列表达式为真的有 A.!false B.’A’ > ’Z’ C. true && (2 > 4) D.-2 < -1 < 0 12、执行以下程序段时 ,

x = -1;

do{ x = x * x;} while( !x);

A、 循环体将执行一次 B、 循环体将执行两次 C、 循环体将执行无限次 D、 系统将提示有语法错误 13、设 int a = 12; 表达式a += a -= a *= a的值是 。 A、0 B、 12 C、132 D、 144 14、已知各变量的说明如下:

char ch = ’B’; int m = 3, n;

执行语句n = !ch && ++m; 后,m和n的值为 。 A、4, 1 B、 4, 0 C、 3, 1 D、 3, 0 15、int a = 0123, 则a的十进制值为

A、 123 B、 83 C、 291 D、 96 16、以下所列的各函数原型中,正确的是

A、 void &play(int a , b); B、 void* play(int a , int b = 1, double c); C、 int* play(int *a , int *b[]); D、 int* play(int &a ; int b[ ]); 17、下列语句正确的是

for(;;) { i += k; }

if( i>j ) break; s += i;

A、 char 3a = ’\\0’; B、char a[2] = {’a’}; C、char a[ ] = 'abc'; D、char a = \18、若有说明:char a[4]={‘0’};则下面正确的叙述是 A. 只有元素a[0]可得到初值’0’ ,其他元素是随机值 B. 数组a中每个元素均可得到初值’0’

C. 数组a中各元素都可得到初值,但其值不一定为’0’ D。 此语句不正确

19、函数f声明为void f( int &n),在主程序中定义变量m为 int m=10,则下面调用正确

的是 。 A。f(10)

B。f(&m)

C。f(m) D。 f(10+m)

20、函数f的原型:void f(int a[], int size)。当调用函数f(b, 5)时(b是整型数组的名字),

向函数传送的是 。

A。b数组的首地址 B。 b数组的第0个元素值

C。b数组每一个元素的地址 D。 b数组每个元素中的值 二。程序理解(每题5分,共40分) 1.写出下面程序的执行结果 void foo(int i); int main() { }

void foo(int i) {

int j;

static int n = 0;

for(j = 1; j <= i / 2; j++) if (i % j == 0) n = n + j; cout << n << endl; }

2.写出该函数的功能和输出结果 int main()

{ char fruit[30] = \

int count1 = 0, count2 = 0, count3 = 0;

for (int index = 0; fruit[index] != ‘\\0’; ++index) { switch (fruit[index]) { foo(6); foo(11);

return 0;

case ‘a’: ++count1; break; case ‘b’: ++count2; break; default: ++ count3;