首页 > 全部 > 二级C语言 > 国家二级C语言机试(选择题)模拟试卷571

国家二级C语言机试(选择题)模拟试卷571

本单篇文档共11501字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 2414人下载
价格: 1.20 原价:¥8.00
收藏

国家二级C语言机试(选择题)模拟试卷571

公共基础选择题

1.设已有定义“float x;”,则下列对指针变量P进行定义且赋初值的语句中正确的是( )。(B)

A. int *P=(float)x;

B. float *P=&x;

C. float P=&x;

D. float *P=1024;

解析:指针是用来存放地址的变量,定义指针变量的形式:类型名*指针变量名。赋值时应将某个变量地址赋给指针变量,如选项B中将变量x的地址&x赋给指针变量。故本题答案为B选项。

2.有以下程序:

#inctude

main( )

{

int a=1,b=3,c=5;

int *p1=&a,*p2=&b,*P=&c;

*P=*p1*(*p2);

printf("%d\n",c);

}

程序的运行结果是( )。(C)

A. 1

B. 2

C. 3

D. 4

解析:该程序中“int * p1=&a,*p2=&b,*p=&c;”定义了3个指针变量并赋值。指针变量p1指向a,p2指向b,p指向c。执行“*p=*p1*(*p2);”语句,给p所指的存储单元c赋值。p1所指的存储单元的值与p2所指的存储单元的值相乘,也就是c=a*b,等价于c=1*3=3。故本题答案为C选项。

3.下列程序段中完全正确的是( )。(C)

A. int *P;scanf("%d",&p);

B. int *p;scanf("%d",P);

C. int k,*P=&k;scanf("%d",P);

D. int k,*p;*P=&k;scanf("%d",P);

解析:A选项中,没有对指针进行初始化,属于无效指针,并且在“scanf("%d",&p);”中无须再进行取地址操作;B选项中,没有对指针进行初始化,属于无效指针;D选项中,语句“* p=&k;”书写错误,应为“p=&k;”。故本题答案为C选项。

4.设有以下函数“void fun(int n,char*s){…}”,则下列对函数指针的定义和赋值均正确的是( )。(D)

A. void(*pf)(int,char);pf=&fun;

B. void*pf( );pf=fun;

C. void*pf( );*pf=fun;

D. void(*pf)(int,char*);pf=fun;

解析:函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为“void(*pf)( );”。如果定义为“void*pf( );”,则表示函数pf的返回值是一个基类型为void的指针。故本题答案为D选项。

5.有以下程序:

#include

#define N4

void fun(int a[][N],int b[])

{ int i;

for(i=0;i<N;i++)

b[i]=a[i][i]-a[i][N-1-i];

}

main( )

{ int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)

printf("%d,",y[i]);

printf("\n");

程序的运行结果是( )。(A)

A. -3,-1,1,3,

B. -12,-3,0,0,

C. 0,1,2,3,

D. -3,-3,-3,-3,

解析:本题由fun函数可知,执行for循环,当i=0时,b[0]=a[0][0]-a[0][3]=1-4=-3;当i=1时,b[1]=a[1][1]-a[1][2]=6-7=-1;当i=2时,b[2]=a[2][2]-a[2][1]=11-10=1;当i=3时,b[3]=a[3][3]-a[3][0]=16-13=3。主函数中输出y数组元素的值为:-3,-1,1,3。故本题答案为A选项。

6.下列语句组中正确的是( )。

A

解析:字符型指针变量可以用A选项的赋值方法“char *s;s="Olympic";”。C选项的写法“char * s;s={"Olympic"};”是错误的。字符数组可以在定义的时候初始化,如“char s[]={"Olympic"};”或者“char s[ ]="Olympic";”,但是不可以在定义字符数组后对数组名赋值(数组名是常量,代表数组首地址),所以B选项和D选项都是错误的。对于本例,B、D选项中字符数组s的大小至少为8,才能存放下字符串(字符串的末尾都有结束标识“\0”),同时,此时s为字符数组的地址,是常量,不能为其赋值。故本题答案为A选项。

7.设有定义“char *c;”,以下选项中能够使C正确指向一个字符串的是( )。(A)

A. char str[ ]="string";c=str;

B. scanf("%s",c);

C. c=getchar( );

D. *c="string";

解析:A选项为正确用法,先将字符串存于字符数组中,然后将数组名赋给字符指针(数组名代表数组首地址,定义数组时为其分配确定的地址)。C选项错误,getchar函数输入一个字符给字符变量,而不是字符指针。B选项和D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在B选项和D选项中,字符指针没有被赋值,是一个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。故本题答案为A选项。

8.下列语句组中正确的是( )。

B

解析:A选项去掉花括号后,赋值正确;C选项和D选项应在定义时赋初值,因为数组名相当于常量,不能重新赋值。故本题答案为B选项。

9.下列语句中存在语法错误的是( )。

A

解析:数组定义后,不可以对数组整体赋值。ss是二维数组,因ss[1]是一维字符数组,相当于一维数组的数组名,是常量,不能重新赋值,所以A选项错误。B选项和D选项是定义时对数组初始化。在C选项中,将字符串在内存中的首地址赋给指针数组的一个元素。故本题答案为A选项。

10.关于地址和指针,以下叙述正确的是( )。(A)

A. 可以通过强制类型转换让char型指针指向double型变量

B. 函数指针P指向一个同类型的函数f时,必须写成“P=&f;”

C. 指针P指向一个数组f时,必须写成“P=&f;”

D. 一个指针变量P可以指向自身

本文档预览:3600字符,共11501字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(选择题)模拟试卷571

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号