欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】国家二级C语言(数组)机试模拟试卷4及答案解析.doc

    • 资源ID:1332432       资源大小:54.50KB        全文页数:9页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】国家二级C语言(数组)机试模拟试卷4及答案解析.doc

    1、国家二级 C 语言(数组)机试模拟试卷 4 及答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.若有定义:int x10,*pt=x;,则对 x 数组元素的正确引用是( )。(分数:2.00)A.pt+3B.*&x10C.*(pt+10)D.*(x+3)2.有以下程序:#includestdiohmain()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(“dn“,s);程序的运行结果是( )。(分数:2.00)A.20B.25C.45D.363.有以下程序:#incl

    2、udestdiohmain()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+)esi/+;for(i=1;i5;i+)printf(“d“,ci);printf(“n“);程序的运行结果是( )。(分数:2.00)A.2 3 4 4B.4 3 3 2C.1 2 3 4D.1 1 2 34.下列定义数组的语句中正确的是( )。(分数:2.00)A.#define N10 int xN;B.int N=10; int xN;C.int x010;D.int x;5.下列选项中能正确定义数组的语句是( )。(分数:2.00)A.int hu

    3、m02008;B.int num;C.int N=2008; int numN;D.#define N2008 int numN;6.若要求定义具有 10 个 int 型元素的一维数组 a,则以下定义语句中错误的是( )。(分数:2.00)A.#define n5 int a2*n;B.int n=10,an;C.int a5+5;D.#define N10 int aN;7.设有定义:double a10,*s=a;,以下能够代表数组元素 a3的是( )。(分数:2.00)A.(*s)3B.*(s+3)C.*s3D.*s+38.有以下程序:#includestdiohmain()int i,

    4、t3=9,8,7,6,5,4,3,2,1;for(i=0;i3;i+)printf(“d“,t2-ii);程序的运行结果是( )。(分数:2.00)A.3 5 7B.7 5 3C.3 6 9D.7 5 19.下列定义语句中错误的是( )。(分数:2.00)A.int x43=1,2,3,1,2,3,1,2,3,1,2,3;B.int x4=1,2,3,1,2,3,1,2,3,1,2,3;C.int x3=0,1,1,2,3;D.int x3=1,2,3,4;10.下列定义数组的语句中错误的是( )。(分数:2.00)A.int x23=1,2,3,4,5,6;B.int x3=0;C.int

    5、x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;11.下列定义数组的语句中错误的是( )。(分数:2.00)A.int num3=1,2,3,4,5,6;B.int num24=1,2,3,4,5,6;C.int num=1,2,3,4,5,6;D.int num4=1,2,3,4,5,6;12.若有定义语句:char s10=“123456700“;,则 strlen(s)的值是( )。(分数:2.00)A.7B.8C.9D.1013.有以下程序:#includestdioh#includestringhmain()char p20=a,b,c,d,q=“abc“,

    6、r=“abcde“;strcat(p,r);strcpy(P+strlen(q),q);pfinff(“dn“,strlen(p);程序的运行结果是( )。(分数:2.00)A.11B.9C.6D.714.有以下程序(strcat 函数用于连接两个字符串):#includestdioh#includestringhmain()char a20=“ABCD0EFG0“,b=“IJK“;strcat(a,b);printf(“sn“,a);程序的运行结果是( )。(分数:2.00)A.IJKB.ABCDE0FG0IJKC.ABCDIJKD.EFGIJK15.有以下程序:char name20;in

    7、t num;scanf(“name=s num=d“,name,&num);当执行上述程序,并从键盘输入:name=Lili hum=1001回车后,name 的值为( )。(分数:2.00)A.name=Lili Bum=1001B.name=LiliC.Lili hum=D.Lili16.有以下程序:#includestdiohmain()char ch=“uvwxyz“,*pc;pc=ch;printf(“cn“,*(pc+5);程序的运行结果是( )。(分数:2.00)A.zB.0C.元素 ch5的地址D.字符 y 的地址17.有以下程序:#includestdiohmain()cha

    8、r s=“012xy“;int i,n=0;for(i=0;si!=0;i+)if(si=a&si=z)n+;pfinff(“dn“,n);程序的运行结果是( )。(分数:2.00)A.0B.2C.3D.518.若有以下定义和语句:#includestdiohchar s110=“abcd!“,*s2=“n123“;pfinff(“ddn“,strlen(s1),strlen(s2);程序的运行结果是( )。(分数:2.00)A.10 7B.10 5C.5 5D.5 819.有以下程序:#includestdiohmain()char s=“abcde“;s+=2:printf(“dn“,s0

    9、);程序的运行结果是( )。(分数:2.00)A.输出字符 c 的 ASCII 码B.程序出错C.输出字符 cD.输出字符 a 的 ASCII 码20.有以下程序:#includestdiohvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,aa);printf(“s,sn“,ss,aa);程序的运行结果是( )。(分数:2.00)A.acc,bbxxyyB.accbbxxyy,bbxxyyC.accxxyy,bbxxyyD.accxyy,bbx

    10、xyy21.设有定义:char p=1,2,3,*q=p;,以下不能计算出一个 char 型数据所占字节数的表达式是( )。(分数:2.00)A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p0)22.设有定义:char s81;int i=0;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是( )。(分数:2.00)A.gets(s);B.while(si+=getchar()!=n);si=0;C.scanf(“s“,s);D.doscanf(“c“,&si);while(si+!=n); si=0;23.若有定义

    11、语句:char*s1=“OK“,*s2=“ok“;,以下选项中,能够输出“OK”的语句是( )。(分数:2.00)A.if(strcmp(s1,s2)!=0)puts(s2);B.if(strcmp(s1,s2)!=0)puts(s1);C.if(strcmp(s1,s2)=1)puts(s1);D.if(stremp(s1,s2)=0)puts(s1);24.若要求从键盘读入含有空格字符的字符串,应使用函数( )。(分数:2.00)A.getchar()B.getc()C.gets()D.seanf()25.下列选项中,能够满足“只要字符串 s1 等于字符串 s2,则执行 sT”要求的是(

    12、)。(分数:2.00)A.if(s1-s2=0)ST;B.if(s1=s2)ST;C.if(strcpy(s1,s2)=1)ST;D.if(stremp(s2,s1)=0)ST;国家二级 C 语言(数组)机试模拟试卷 4 答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.若有定义:int x10,*pt=x;,则对 x 数组元素的正确引用是( )。(分数:2.00)A.pt+3B.*&x10C.*(pt+10)D.*(x+3) 解析:解析:没有 A 选项的引用形式。*与&放在一起作用抵消,但 x10下标 10 超出了数组下标范围,所以 B 选项错

    13、误。最大只能引用到 x9,而*(pt+i)表示引用指针 pt 所指元素后的第 i 个元素,所以 C选项错误,最大只能为*(pt+9)。D 选项正确。2.有以下程序:#includestdiohmain()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(“dn“,s);程序的运行结果是( )。(分数:2.00)A.20B.25 C.45D.36解析:解析:统计 19 这 9 个数中的奇数和,此题考查指向数组的指针。C 语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此*(t+i)代表数组的第 i+1 个元素。

    14、程序的运行结果是1+3+5+7+9=25。3.有以下程序:#includestdiohmain()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+)esi/+;for(i=1;i5;i+)printf(“d“,ci);printf(“n“);程序的运行结果是( )。(分数:2.00)A.2 3 4 4B.4 3 3 2 C.1 2 3 4D.1 1 2 3解析:解析:在 for(i=0;i12;i+)csi/+中,数组元素 si的值作为数组 c 的下标,当退出循环时,数组 c 的 4 个元素的值分别为 4、3、3、2,因此 B 选项正确

    15、。4.下列定义数组的语句中正确的是( )。(分数:2.00)A.#define N10 int xN; B.int N=10; int xN;C.int x010;D.int x;解析:解析:数组说明的一般形式为:类型说明符数组名常量表达式。B 选项中 N 是变量,不能用变量定义数组长度。C 选项中数组长度是一串非法的数字。定义数组时必须为其指明长度,D 选项中的数组长度为空,所以非法。5.下列选项中能正确定义数组的语句是( )。(分数:2.00)A.int hum02008;B.int num;C.int N=2008; int numN;D.#define N2008 int numN;

    16、解析:解析:C 语言不允许定义动态数组,定义数组的大小必须为常量表达式。A 选项错误,C 语言中的数组没有此类型的定义方法;B 选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C 选项错误,N 为变量,不能用来定义数组大小。D 选项正确。6.若要求定义具有 10 个 int 型元素的一维数组 a,则以下定义语句中错误的是( )。(分数:2.00)A.#define n5 int a2*n;B.int n=10,an; C.int a5+5;D.#define N10 int aN;解析:解析:一维数组的定义方式为:类型说明符数组名常量表达式;注意定义数组时,元素个数不

    17、能是变量,因此应该选择 B 选项。7.设有定义:double a10,*s=a;,以下能够代表数组元素 a3的是( )。(分数:2.00)A.(*s)3B.*(s+3) C.*s3D.*s+3解析:解析:题中,首先定义了 double 型的数组 a,并将数组首地址赋给指针 s。s3能够表示 a3,故选项 A、C 不能表示 a3;选项 D 的,*s+3=a0+3。故本题答案为 B 选项。8.有以下程序:#includestdiohmain()int i,t3=9,8,7,6,5,4,3,2,1;for(i=0;i3;i+)printf(“d“,t2-ii);程序的运行结果是( )。(分数:2.0

    18、0)A.3 5 7 B.7 5 3C.3 6 9D.7 5 1解析:解析:二维数组 t3实际上指 t33=9,8,7,6,5,4,3,2,1,通过循环语句for 语句可以得到 i=0,t20=3、i=1,t11=5、i=2,t02=7、i=3 时循环结束,即 t20=3、t11=5、t02=7,因此 A 选项正确。9.下列定义语句中错误的是( )。(分数:2.00)A.int x43=1,2,3,1,2,3,1,2,3,1,2,3;B.int x4=1,2,3,1,2,3,1,2,3,1,2,3; C.int x3=0,1,1,2,3;D.int x3=1,2,3,4;解析:解析:二维数组定义

    19、的一般形式是:类型说明符数组名常量表达式 1常量表达式 2。其中常量表达式 1 表示第一维下标的长度,常量表达式 2 表示第二维下标的长度。如对二维数组的全部元素赋初值,则第一维的长度可以不给出。但如果对 x4赋值,只确定行数,而不确定列数,就无法正确赋值,因此 B 选项正确。10.下列定义数组的语句中错误的是( )。(分数:2.00)A.int x23=1,2,3,4,5,6;B.int x3=0;C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6; 解析:解析:D 选项中 x23定义的是一个 2 行 3 列的二维数组,而在给数组元素赋值时却赋成了 3 行,

    20、所以错误。11.下列定义数组的语句中错误的是( )。(分数:2.00)A.int num3=1,2,3,4,5,6;B.int num24=1,2,3,4,5,6; C.int num=1,2,3,4,5,6;D.int num4=1,2,3,4,5,6;解析:解析:B 选项中定义的数组为 2 行 4 列,而赋值时赋成了 3 行,所以出错。12.若有定义语句:char s10=“123456700“;,则 strlen(s)的值是( )。(分数:2.00)A.7 B.8C.9D.10解析:解析:stden()函数是计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中的字符串从第一个

    21、字符开始,遇到第一个结束标识0为止,注意0不占字符串长度,所以字符串长度为 7,因此 A 选项正确。13.有以下程序:#includestdioh#includestringhmain()char p20=a,b,c,d,q=“abc“,r=“abcde“;strcat(p,r);strcpy(P+strlen(q),q);pfinff(“dn“,strlen(p);程序的运行结果是( )。(分数:2.00)A.11B.9C.6 D.7解析:解析:strcpy:字符串复制函数;strlen:求字符串长度函数(注意:不包含字符串结束标记字符0);strcat:字符串连接函数。执行完语句 strc

    22、at(p,r);后,p 数组中存储的元素为a,b,c,d,a,b,c,d,e;执行语句 strcpy(p+strlen(q),q);得到的结果是将 q 所指向的字符串复制至 p+strlen(q)开始的存储位置,因为 strlen 的值为 3,即 p+3 开始存储 q 中的元素,所以执行完strcpy(P+strlen(q),q)语句后,字符数组 p20的存储元素为 a,b,c,14.有以下程序(strcat 函数用于连接两个字符串):#includestdioh#includestringhmain()char a20=“ABCD0EFG0“,b=“IJK“;strcat(a,b);prin

    23、tf(“sn“,a);程序的运行结果是( )。(分数:2.00)A.IJKB.ABCDE0FG0IJKC.ABCDIJK D.EFGIJK解析:解析:字符数组 a 中包含两个0,遇到第一个0时就表示字符串 a 结束。字符串处理函数strcat(字符数组 a,字符数组 b),功能是连接两个字符数组中的字符串,把字符串 b 连接到字符串 a 的后面,结果放在字符数组 a 中。连接时将字符串 a 后的0取消,只在新串最后保留一个0。本题相当于将“ABCD“和“UK“连接,因此 C 选项正确。15.有以下程序:char name20;int num;scanf(“name=s num=d“,name,

    24、&num);当执行上述程序,并从键盘输入:name=Lili hum=1001回车后,name 的值为( )。(分数:2.00)A.name=Lili Bum=1001B.name=LiliC.Lili hum=D.Lili 解析:解析:在输入格式控制“name=s num=d”中,普通字符“name=num=”在输入时要原样输入,而格式控制符s 和d 对应各自的输入项,将输入的数据赋给相应的输入项。本题中输入“name=Lili num=1001回车”后,将字符串 Lili 赋给字符数组 name,整数 1001 赋给变量 num,因此 D 选项正确。16.有以下程序:#includestd

    25、iohmain()char ch=“uvwxyz“,*pc;pc=ch;printf(“cn“,*(pc+5);程序的运行结果是( )。(分数:2.00)A.z B.0C.元素 ch5的地址D.字符 y 的地址解析:解析:语句 pc=ch;使得指针变量指向字符数组 ch 的首地址,即指向字符u,则 pc+5 指向的是字符向后移动 5 位,指向字符z,所以输出的*pc+5 的值即为z,因此 A 选项正确。17.有以下程序:#includestdiohmain()char s=“012xy“;int i,n=0;for(i=0;si!=0;i+)if(si=a&si=z)n+;pfinff(“dn

    26、“,n);程序的运行结果是( )。(分数:2.00)A.0B.2 C.3D.5解析:解析:程序首先给字符数组 s赋值为“012xy“,for 循环语句的功能是遍历字符串,通过 if 条件语句对字符串中的小写字母进行计数,字符串中小写字母为 2 个,即 n=2,因此 B 选项正确。18.若有以下定义和语句:#includestdiohchar s110=“abcd!“,*s2=“n123“;pfinff(“ddn“,strlen(s1),strlen(s2);程序的运行结果是( )。(分数:2.00)A.10 7B.10 5C.5 5 D.5 8解析:解析:strlen 函数返回字符串的长度,求

    27、字符串长度时,遇到结束标志0为止,但是长度不包括结束标识。字符数组 s1 的后 5 个元素没有赋值,都为0,即“abcd!“后为0,所以 strlen(s1)的值为 5。字符指针 s2 所指向的字符串中,n 为转义字符换行符,表示 1 个字符,也为转义字符,代表,也是 1 个字符,其后为字符串结束标识0,所以 strlen(s2)的值也为 5,因此 C 选项正确。19.有以下程序:#includestdiohmain()char s=“abcde“;s+=2:printf(“dn“,s0);程序的运行结果是( )。(分数:2.00)A.输出字符 c 的 ASCII 码B.程序出错 C.输出字符

    28、 cD.输出字符 a 的 ASCII 码解析:解析:本题重点考查数组名的概念。在 C 语言中,数组名类似于一个指向数组首地址的指针常量,一旦定义就不能修改其内容。所以本题中的“s+=2”;语句让数组名 s 的内容加 2 是错误的,编译无法通过,因此 B 选项正确。20.有以下程序:#includestdiohvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,aa);printf(“s,sn“,ss,aa);程序的运行结果是( )。(分数:2.00

    29、)A.acc,bbxxyyB.accbbxxyy,bbxxyy C.accxxyy,bbxxyyD.accxyy,bbxxyy解析:解析:本题重点考查 while 循环语句的简单应用。在函数 fun()中,前一个 while 循环的作用是:如果形参指针 t 所指内容不为 0,则让 t 增 1,直到它指向 0。后一个 while 循环的作用是:将 s 所指内容赋给 t 所指地址,然后两者同时增 1,直到赋给 t 的内容为 0。由此可见,函数 fun()的作用就是将形参 s 所指字符串连接到形参 t 所指字符串末尾,相当于库函数中的 strcat()。主函数中使用 fun()将数组aa 中的字符串

    30、连接到了数组 ss 中原有字符串之后,所以执行完后,ss 中的字符串为“accbbxxyy”。程序最后输出的结果是21.设有定义:char p=1,2,3,*q=p;,以下不能计算出一个 char 型数据所占字节数的表达式是( )。(分数:2.00)A.sizeof(p) B.sizeof(char)C.sizeof(*q)D.sizeof(p0)解析:解析:根据题目中的定义可知道 sizeof(p),计算的是数组 p 中所有元素所占用的字节数,而不是char 型数据所占的字节数。22.设有定义:char s81;int i=0;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入

    31、的语句或语句组是( )。(分数:2.00)A.gets(s);B.while(si+=getchar()!=n);si=0;C.scanf(“s“,s); D.doscanf(“c“,&si);while(si+!=n); si=0;解析:解析:使用 scanf()输入字符串时,空格和回车符都作为输入数据的分隔符而不能被读入,而应该使用 gets(s)。23.若有定义语句:char*s1=“OK“,*s2=“ok“;,以下选项中,能够输出“OK”的语句是( )。(分数:2.00)A.if(strcmp(s1,s2)!=0)puts(s2);B.if(strcmp(s1,s2)!=0)puts(

    32、s1); C.if(strcmp(s1,s2)=1)puts(s1);D.if(stremp(s1,s2)=0)puts(s1);解析:解析:strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCII 码值大小),以第一个不相同字符的大小作为比较结果。因为OKok,所以 strcmp(s1,s2)为负值,只有 B 选项正确。24.若要求从键盘读入含有空格字符的字符串,应使用函数( )。(分数:2.00)A.getchar()B.getc()C.gets() D.seanf()解析:解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉

    33、,所以用 scanf()函数不能输入空格;getchar()函数用于输入字符,其调用格式为:ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量 ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键时,读入才开始执行。gets()函数的调用形式为:gets(str_adr),其中 str_adr 是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets 函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pf),其中 pf 是文件指针,函数的功能是从 pf 指定的文件中读入一个字符,并把它作为函数值返回。因此 C 选项正确。25.下列选项中,能够满足“只要字符串 s1 等于字符串 s2,则执行 sT”要求的是( )。(分数:2.00)A.if(s1-s2=0)ST;B.if(s1=s2)ST;C.if(strcpy(s1,s2)=1)ST;D.if(stremp(s2,s1)=0)ST; 解析:解析:在 C 语言中,要对两个字符串的大小进行比较,就需要调用字符串比较函数 strcmp,如果这个函数的返回值等于 0,说明两个字符串相等,因此 D 选项正确。


    注意事项

    本文(【计算机类职业资格】国家二级C语言(数组)机试模拟试卷4及答案解析.doc)为本站会员(unhappyhay135)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开