全国计算机等级考试二级语言试题分析 下载本文

【解析】C。fun函数功能是新开辟内存空间(地址s)存放a和b的值(通过&a、&b将地址复制给p1、p2),q的地址并没有变化,所以应该还是指向地址a。

36.有以下程序: #include<>

struct STU{char name[9];char sex;int score[2];}; void f(struct STU a[])

{ struct STU b={\,’m’,85,90); a[1]=b; } main()

{struct STU c[2]={{\,’f’,95,92},{\,’m’ 98,99}};

f(c);

printf(”%s,%c,%d,%d,¨,c[0].name,c[0].sex,c[0].score[0],c[o].score[1]);

printf(\,%c,%d,%d\\n\,c[1].name,c[1].sex,c[1].score[o],c[1].score[1]);

}

程序运行后的输出结果是( )。

,m,85,90,Sun,m,98,99 ,m,85,90,Qian,f,95,92 ,f,95,92,Sun,m,98,99 ,f,95,92,Zhao,m,85,90

【解析】D。f函数是为结构体数组的第二个元素(结构体类型的元素)赋值,数组的第一个元素没有变化,所以正确答案应选D。

37.以下叙述中错误的是( )。

A.可以用typedef说明的新类型名来定义变量

说明的新类型名必须使用大写字母,否则会出编译错误 C.用typedef可以为基本数据类型说明一个新名称

D.用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名

【解析】B。typedef是用来定义新类型,或定义原有类型的别名(新名称)。用typedef说明的类型不是必须用大写,而是习惯上用大写。

38.以下叙述中错误的是( )。

A.函数的返回值类型不能是结构体类型,只能是简单类型 B.函数可以返回指向结构体变量的指针

C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员

D.只要类型相同,结构体变量之间可以整体赋值

【解析】A。函数返回值类型可以是简单类型和结构体类型。 39.若有定义语句int b=2;,则表达式(b<<2)/(3‖b)的值是( )。

【解析】B。2的二进制数为010,移两位后的二进制数为01000,转成十制数为8,(3||2)为真即1,8/ 1=8,所以结果为8。

40.有以下程序: #include <> main()

{ FILE *fp; int i,a[6]={1,2,3,4,5,6}; fp=fopen(\,\

for=(i=0;i<6;i++) fpintf(fp,\,a[i]); rewind(fp);

for(i=0;i<6;i++) fscanf(fp,\,&a[5-i]); fclose(fp);

for(i=0;i%6;i++)printf(\,\,a[i]); }

程序运行后的输出结果是( )。 ,5,6,1,2,3, ,2,3,3,2,1,

,2,3,4,5,6, ,5,4,3,2,1,

【解析】D。这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1。

二、基本操作题(共18分)

str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

例如,str=\,结果为:l234567。 注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

试题程序: #include <> #define M 80 int bb[M];

int proc(char str[],int bb[],int num) {

int i,n=0;

for(i=0;i

if( 【1】 ) {

bb[n]=【2】 ; n++; } }

return 【3】 ; }

void main() {

char str[M]; int num=0,n,i;

printf(\:\\n\ gets(str);

while(str[num]) num++; n=proc(str,bb,num); printf(\

for(i=0;i