上海市高等学校计算机等级考试试卷二级C语言程序设计( B 卷)

  • 格式:docx
  • 大小:27.69 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上海市高等学校计算机等级考试试卷

二级 C语言程序设计( B 卷)

一、单选题

1. 下列C语言的标识符中,不合法的标识符为____________

A. star

B. 1234

C. _a100

D. circuit9

2. 若已定义: int x=10;

则表达式 x=(4*5,x*5,x+25) 的值是 ______ 。

A. 20

B. 45

C. 125

D. 35

3. 若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,则执行语句: scanf(“%d, %f”,&x,&y,); 时,正确的键盘输入是 ______ 。

A. 55,55.5↙

B. x=55, y=55.5↙

C. 55↙55.5↙

D. x=55↙y=55.5↙

4. 若有说明语句:int x=25,y=20,z=30;

则执行语句:if(x>y) {y=z; z=x;} x=y; printf(“%d,%d,%d”,x,y,z); 后,输出是____________

A. 25,20,30

B. 30,30,25

C. 25,30,30

D. 25,30,25

5. 程序段:int num=2;

while(num)

printf(“%d ,”,num--);

的运行结果是_______________

A. 2,1,

B. 2,1

C. 2,1,0

D. 2,1,0,

6. 若有说明:int a[3][4],s;则对数组a的元素引用正确的是____________

A. s=0; for(i=0;i<=3;i++) for(j=0;j<4;j++) s+=a[i][j];

B. s=0; for(j=0;j<=4;j++) for(i=0;i<3;i++) s+=a[i][j];

C. s=0; for(i=0;i<4;i++) for(j=0;j<=3;j++) s+=a[j][i];

D. s=0; for(i=0;i<3;i++) for(j=0;j<4;j++) s+=a[i][j];

7. 如果形参获取实参的地址,则____________作为函数调用时的实参。

A. 数组名

B. 全局量

C. 数组中全部元素的值

D. 数组中的元素个数

8. 若有定义:int i,j,*pi=&i; 则与i==j等价的比较表达式是____________

A. i==*pi

B. *pi ==*&j

C. i==&j

D. i==**pi

9. 若有定义:struct person{

int id ;

char name[20];

} per,*s=&per;

则以下对结构体成员的引用中正确的____________

A. [0]

B. s->name[0]

C. [8]

D. per.id

10. 若有以下语句:char x=5,y=9,z; z=(y|x)<<2;

则z的二进制值是________________

A. 00011011

B. 00001010

C. 00110100

D. 00001100

二、填空题

1. 设有说明语句:int a=15, b=6;

则a/b的十进制数值为________

2. 设有说明语句:int x=3, y=2; 则计算表达式(x=0)&& (y=6*x) 后变量y的值是

_____________

3. 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1||b+c/2后,t 的值是_____________

4. 定义函数时,将其类型定义为void 则表示所定义的函数返回值为____________.

5. 下列程序的输出结果是________________

f(int a[])

{ int i=0;

while (a[i]<=10)

{ printf(“%d ”, a[i]);

i++;

}

}

main()

{ int a[]={8,4,10,11,9,20};

f(a);

}

6. 下列程序的输出结果是______________

long fib(int g)

{ switch(g){

case 0: return(0);

case 1:

case 2: return(2);

}

return ( fib(g-1) + fib(g-2) );

}

main()

{ long k;

k = fib(5);

printf("k=%ld\n", k);

}

7. 假定建立了以下链表结构:struct node{

int id ;

struct node *next;

} *head,*p;

如图6-11所示:指针p指向一个新结点,将新结点插入到链表中的两条C语言语句是【】

图6-11 新结点插入到链表

三、程序填空题 ( 本大题 3 道小题,每空 3 分,共 30 分)。

1. 下列程序的功能是:计算机给出10个不大于31的正整数让人猜,并根据猜中的情况统计总得分后输出。具体规则如下:

(1) 计算机每给出一个要猜的数最多允许中5次,第一次猜对得10分,第二次猜对得8分,第三次猜对得6分,第四次猜对得4分,最后一次猜对得2分,否则不得分。

(2) 若人猜的数太小,计算机给出提示“too small !”;若人猜的数太大,计算机给出提示“too large !”;若人猜对这个数,计算机给出提示“right !”,并给出下一个数继续让人猜;若一个数已经猜了5次都猜错,计算机给出提示“out of time !”,也给出下一个数继续让人猜。直至猜完10个数。

下面是人猜一个数的过程,有下划线的部分是人猜的数:(假设机器产生的随机数为9) 请输入你猜测的数y= 16

too large !

请输入你猜测的数y= 4

too small !

请输入你猜测的数y= 9

right ! (本题是第三次猜对,得6分)

#include

#include

void main()