首页 > 全部 > 二级C语言 > 国家二级C语言机试(函数和数组)模拟试卷10

国家二级C语言机试(函数和数组)模拟试卷10

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

国家二级C语言机试(函数和数组)模拟试卷10

选择题

1.有以下程序

#include<stdio.h>>

main()

{int a[]={10,20,30,40),*p=a,i;

for(i=0;i<=3;i++){a[i]=*p;p++;}

pfintf(\\(B)

A. 20

B. 30

C. 10

D. 40

解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。

2.若有以下程序

main(){int i,j=0;

char a[]=\\(C)

A. Howareyou

B. Hay!

C. Howareyou!

D. How are you!

解析:主函数中利用for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。因此删除字符串”How are you!”中空格以后,字符串为How are you!。

3.若有以下程序

#include<stdio.h>

main(){int i,j=0;

char a[]=\\(D)

A. Howareyou

B. Hay!

C. Howareyou!

D. ay

解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串\\

4.若有以下程序#include

char*a=\\(D)

A. #you#to#China!

B. me#you#to#China!

C. #China!

D. #to#China!

解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a,如果含有则退出,字符指针p指向该匹配子串后面的位置,利用printf函数输出则从该位置开始一直输出到字符串b的结尾。

5.以下能正确定义二维数组是

B

解析:C语言中定义二维数组,必须指定二维数组每一维的大小。选项A)没有指定数组a行的大小,错误;选项B),虽然没有指定行大小,但是可以通过大括号里面的元素个数计算出行的大小为1,因此是正确的;选项C)同样没有指定行的大小,也不能通过元素个数计算行的个数,错误;选项D)定义的是二行三列数组,但是后面数据是三行,超出范围,所以错。

6.若有以下说明和语句

int c[4][5],(*p)[5];

p=c;

能够正确引用c数组元素的是(D)

A. p+1

B. *(p+3)

C. *(p+1)+3

D. *(p[0]+2)

解析:本题考查数组和指针,在本题中c是二维数组,指针p指向二维数组c,p其实是指向c数组的第一行。因此选项A)中p+1指向c数组的第二行;选项B)中,p+3表示p指向c数组的第三行,因此*(p+3)表示取出c数组第三行首元素的地址;选项C)和选项B)类似,表示取出数组c第二行首元素地址然后加3;选项D)中p[0]+2表示数组第一行第三列元素的地址,因此*(p[0]+2)是取出该元素的值。

7.若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是(B)

A. pk=k;

B. pk[0]=k[1][2];

C. pk=k[0];

D. pk[1]=k;

解析:本题考查多维数组和数组指针。k是一个二维数组,pk是一个指针数组,该数组有3个元素,每个元素都是一个指向整型对象的指针。选项A)错误,等号的左边是一个数组地址,不是变量:选项B)是把元素k[1][2]赋值给pk[0];选项C)中等号左边不是变量;选项D)类型不匹配,pk[1]是指向一个整型对象,而k是一个二维数组首地址。

8.若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是(B)

A. a[0][4]

B. a[1][3]

C. a[0][3]

D. a[1][4]

解析:本题考查多维数组的定义和使用。a是一个二维数组,有3行6列,即每行6个元素,a的第10个元素位于第二行的第四个位置,即a[1][3]。

9.若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是(C)

A. p=a;

B. p[0]=a;

C. p[0]=a[1][2];

D. p[1]=a;

解析:本题考查多维数组和数组指针。a是一个二维数组,p是一个指针数组,该数组有3个元素,每个元素都是一个指向整型对象的指针。选项A)错误,等号的左边是一个数组地址,不是变量;选项B)数据类型不匹配,p[0]是指向一个整型对象,而a是一个二维数组首地址;选项C)正确,是把元素a[1][2]赋值给p[0];选项D)和选项B)一样属于数据类型不匹配,p[1]是指向一个整型对象,而a是一个二维数组首地址。

10.若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是(D)

A. a[2][!1]

B. a[2][3]

C. a[0][3]

D. a[1>2][!1]

解析:本题考查数组的使用,C语占中数组的下标从0开始。本题中a是一个_维数组,两个下标的范围分别是0-1和0-2。选项A)中第一个下标越界,超出了范围;选项B)中第一个和第二个下标都超出了范围;选项C)中第二个下标超出范围;选项D)中,1>2的值为0,!1的值为0,因此选项D)实际是访问a[0][0]。

11.以下数组定义中错误的是

B

解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第二维的定义。在选项A)中赋值号左边定义了一个3行2列的二维数组,而右边用2行3列的数字进行赋初值。所以出现了边界的越界溢出而出错。

12.有以下程序

#include<stdio.h>

#define N 4

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];}

void 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(\\(B)

A. -12,-3,0,0,

B. -3,-1,1,3,

C. 0,1,2,3,

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

解析:fun函数的功能是求出二维数组a中第i行第i个元素与第N一1一i元素的差,赋给b[i]。在主函数中,把实参二维数组x和一维数组y传递给形参a和b,最后输出一维数组y中元素的值。

13.有以下程序

#include

main(){int b[3][3]={0,1,2,0,1,2

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

剩余未完,查看全文
收藏
国家二级C语言机试(函数和数组)模拟试卷10

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号