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

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

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

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

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

    1、国家二级 C语言机试(函数和数组)模拟试卷 11及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.下列叙述中正确的是(分数:2.00)A.两个连续的单引号(“)是合法的字符常量B.可以对字符串进行关系运算C.两个连续的双引号(“)是合法的字符串常量D.空字符串不占用内存,其内存空间大小是 02.以下选项中,能正确进行字符串赋值的是(分数:2.00)A.char s5=A,B,C,D,E;B.char*s=“ABCDE“;C.char s45=“ABCDE“;D.char*s;gets(s);3.有以下程序 #includestdioh int

    2、fun(char s)char*p=s; while(*P!=0)p+; return(p-s); main()printf(“dn“,fun(“0ABCDEF“);程序运行后的输出结果是(分数:2.00)A.6B.7C.1D.04.若有以下程序段 char str412=“aa“,“bbb“,”ccccc“,“d“,*strp4; int i: for(i=0;i4;i+)strpi=stri;不能正确引用字符串的选项是(分数:2.00)A.strpB.str0C.strp3D.*strp5.以下叙述中正确的是(分数:2.00)A.下面的语句用赋初值方式来定义字符串,其中,“0“是必须的 c

    3、har str1=s,t,r,1,0);B.有定义语句:char str1=“str1“;,数组 str1将包含 4个元素C.字符串常量“str1”的类型是:字符串数据类型D.字符数组的每个元素可存放一个字符,并且最后一个元素必须是“0”字符6.以下叙述中正确的是(分数:2.00)A.char ca35=“A“,“BB“,“CCC“;是不合语法的B.字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组C.char ca5=“A“,“BB“,“CCC“;是不合语法的D.char*ca3=“A“,“BB“,“CCC“;是不合语法的7.以下叙述中正确的是(分数:2.00)A.函数调用“str

    4、len(s);”会返回字符串 s实际占用内存的大小(以字节为单位)B.两个字符串可以用关系运算符进行大小比较C.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和D.C语言本身没有提供对字符串进行整体操作的运算符8.以下叙述中正确的是(分数:2.00)A.不能用字符串常量对字符数组名进行整体赋值操作B.字符串常量“Hello”会被隐含处理成一个无名字符型数组,它有 5个元素C.“char str7=”string!”;”在语法上是合法的,运行也是安全的D.“char*str;str=“Hello“;”与“char str;str=“Hello“;”效果是一样的9.以下叙述中正确

    5、的是(分数:2.00)A.语句“char str10=“string!“;”和“char str10=“string!“;”并不等价B.对于一维字符数组,不能使用字符串常量来赋初值C.对于字符串常量“string!“,系统已自动在最后加入了“0”字符,表示串结尾D.在语句 char str=“string!“;中,数组 str的大小等于字符串的长度10.设有定义 char str=“Hello“;则语句 printf(“dd“,sizeof(str),strlen(str);的输出结果是(分数:2.00)A.6 6B.6 5C.5 5D.5 611.设有定义语句: char*aa2=“abcd

    6、“,“ABCD“;则以下叙述正确的是(分数:2.00)A.aa数组的两个元素只能存放含有 4个字符的一维数组的首地址B.aa数组的值分别是字符串“abcd“和“ABCD“C.aa是指针变量,它指向含有两个元素的字符型数组D.aa0存放了字符串“abcd“的首地址12.以下选项中,没有编译错误的是(分数:2.00)A.char str3=d,e,b,u,g,0;B.char strl5=“pass“,str26;str2=str1;C.char name10;name=“china“;D.char str4;str4=“hello world“;13.有以下程序 main() char a510

    7、=“one“,“two“,“three“,“four“,“five“; int i,j; char t: for(i=0;i4;i+) for(j=i+1;j5;j+) if(ai0aj0) t=ai0;ai0=aj0;aj0=t; puts(a1); 程序运行后的输出结果是(分数:2.00)A.fwoB.owoC.twoD.fix14.设有定义: char s81;int i=0;以下不能将一行(不超过 80个字符)带有空格的字符串正确读入的语句或语句组是(分数:2.00)A.while(si+=getchar()!=n);si=0;B.scanf(“s“,s);C.gets(s);D.do

    8、scanf(“c“,&si);while(si+!=n);si=0;15.设有定义: char p=1,2,3),*q=p;以下不能计算出一个 char型数据所占字节数的表达式是(分数:2.00)A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p0)16.有以下程序 #includestdioh #includestringh void main() char str20=“One*World“,“One*Dream!“,*p=str1; printf(“d,“,strlen(p); printf(“sn“,p);程序运行后的输出结果是(分数:2.0

    9、0)A.9,One*Dream!B.10,One*Dream!C.9,One*WorldD.10,One*World17.有以下程序 #includestdioh void main() char s=“012xy08s34f4w2“; int i,n=0; for(i=0;si!=0;i+) if(si=0&si=9)n+; printf(“dn“,n);程序运行后的输出结果是(分数:2.00)A.0B.7C.3D.818.以下不能将 s所指字符串正确复制到 t所指存储空间的是(分数:2.00)A.for(i=0;ti=si;i+);B.while(*t=*s)t+;s+;C.for(i=0

    10、,j=0;ti+=sj+;);D.do*t+=*s+;while(*s);19.下列语句组中,正确的是(分数:2.00)A.char*s;s=“Olympic“;B.char s7;s=“Olympic“;C.char*s;s=“Olympic“);D.char s7;s=“Olympic“;20.有以下程序 main() char ch=“uvwxyz“,*pc; pc=ch;printf(“cn“,*(pc+5); 程序运行后的输出结果是(分数:2.00)A.0B.元素 ch5的地址C.zD.字符 y的地址21.有以下程序 #includestdioh void main() char s

    11、=“012xy“;int i,n=0; for(i=0;si!=0;i+) if(si=a&si=z)n+; printf(“dn“,n);程序运行后的输出结果是(分数:2.00)A.0B.3C.5D.222.以下能正确定义字符串的语句是(分数:2.00)A.char str=“x43“;B.char str=“0“;C.char str=“;D.char str=064;23.以下关于字符串的叙述中正确的是(分数:2.00)A.两个字符串中的字符个数相同时才能进行字符串大小的比较B.可以用关系运算符对字符串的大小进行比较C.空串比空格打头的字符串小D.C语言中有字符串类型的常量和变量24.若

    12、要求从键盘读入含有空格字符的字符串,应使用函数(分数:2.00)A.getc()B.gets()C.getchar()D.scanf()25.有以下程序,执行后的结果是 #includestdioh main() char s=“abcde“; s+=2; printf(“dn“,s0); (分数:2.00)A.输出字符 C的 ASCII码B.输出字符 cC.输出字符 a的 ASCII码D.程序出错26.有下列程序,程序执行后的输出结果是 fun(char P10) int n=0,i; for(i=0;i7;i+) if(pi0=T)n+; return n; main()char str1

    13、0=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat,“Sun“; printf(“dn“,fun(str) ;(分数:2.00)A.1B.3C.0D.2国家二级 C语言机试(函数和数组)模拟试卷 11答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.下列叙述中正确的是(分数:2.00)A.两个连续的单引号(“)是合法的字符常量B.可以对字符串进行关系运算C.两个连续的双引号(“)是合法的字符串常量 D.空字符串不占用内存,其内存空间大小是 0解析:解析:两个连续的双引号:“,是一个字符串常量,称为“空串”。2.以下选项中,能

    14、正确进行字符串赋值的是(分数:2.00)A.char s5=A,B,C,D,E;B.char*s=“ABCDE“; C.char s45=“ABCDE“;D.char*s;gets(s);解析:解析:对于选项 A)字符串中无法存放字符串结束标志0,选项 C)每行仅仅存放 5个字符,同样的不能存放字符串结束标志,选项 D)中指针变量 s没有实际的内存空间,无法存放输入的字符串。因此正确的选项为 B),相当于 char*s:s=“ABCDE“,把字符串常量的首地址存放到指针变量中存储。3.有以下程序 #includestdioh int fun(char s)char*p=s; while(*P!

    15、=0)p+; return(p-s); main()printf(“dn“,fun(“0ABCDEF“);程序运行后的输出结果是(分数:2.00)A.6B.7 C.1D.0解析:解析:函数 fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用 fun得到结果为7。4.若有以下程序段 char str412=“aa“,“bbb“,”ccccc“,“d“,*strp4; int i: for(i=0;i4;i+)strpi=stri;不能正确引用字符串的选项是(分数:2.00)A.strp B.str0C.strp3D.*strp解析:解析:程序段中定义指针数组*strp,含有 4个元素

    16、,for 循环 strp分别保存了二维数组 str中的4个字符串的首地址,因此 strp为二级地址,不能保存字符串的首地址,*strp 或者 strp0中存放了字符串“aa“的首地址。所以不能正确引用字符串的为选项 A)。5.以下叙述中正确的是(分数:2.00)A.下面的语句用赋初值方式来定义字符串,其中,“0“是必须的 char str1=s,t,r,1,0);B.有定义语句:char str1=“str1“;,数组 str1将包含 4个元素 C.字符串常量“str1”的类型是:字符串数据类型D.字符数组的每个元素可存放一个字符,并且最后一个元素必须是“0”字符解析:解析:选项 B)中除了字

    17、符串中实际字符之外,还要存储字符串结束标志,应为 5个元素。在 c语言中没有字符串数据类型,因此选项 C)不正确,选项 D)字符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。6.以下叙述中正确的是(分数:2.00)A.char ca35=“A“,“BB“,“CCC“;是不合语法的B.字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 C.char ca5=“A“,“BB“,“CCC“;是不合语法的D.char*ca3=“A“,“BB“,“CCC“;是不合语法的解析:解析:字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选项 B)的说法正确。选项 A)和

    18、 C)对于 ca的定义是正确的。选项 D)定义一个指针数组,可以保存多个字符串的首地址。7.以下叙述中正确的是(分数:2.00)A.函数调用“strlen(s);”会返回字符串 s实际占用内存的大小(以字节为单位)B.两个字符串可以用关系运算符进行大小比较C.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和D.C语言本身没有提供对字符串进行整体操作的运算符 解析:解析:C 语言中没有运算符可以处理字符串,要调用“string”库中的函数来处理字符串,其中strlen函数主要测试字符串中实际字符的个数,比实际占用的内存至少要少一个。Strcat(s1,s2)函数用于连接两个字符

    19、串,是把字符串 s2连接到 s1的后面。8.以下叙述中正确的是(分数:2.00)A.不能用字符串常量对字符数组名进行整体赋值操作 B.字符串常量“Hello”会被隐含处理成一个无名字符型数组,它有 5个元素C.“char str7=”string!”;”在语法上是合法的,运行也是安全的D.“char*str;str=“Hello“;”与“char str;str=“Hello“;”效果是一样的解析:解析:字符数组仅仅可以采用定义时初始化以及输入得到数据,在程序其他部分不允许对其进行赋值。字符串常量中除了实际字符之外还有结束标志,选项 B)错误,而选项 C)中,没有空间存放字符串结束标志,因此运

    20、行是不安全的。选项 D)中第一个 str为指针,可以赋值,而后面的为数组,在程序中赋值出错。9.以下叙述中正确的是(分数:2.00)A.语句“char str10=“string!“;”和“char str10=“string!“;”并不等价B.对于一维字符数组,不能使用字符串常量来赋初值C.对于字符串常量“string!“,系统已自动在最后加入了“0”字符,表示串结尾 D.在语句 char str=“string!“;中,数组 str的大小等于字符串的长度解析:解析:在 C语言中,字符串是借助于字符型一维数组来存放的,可以借助在定义时初始化以及输入来把字符串存入数组,并规定以字符0作为“字符

    21、串结束标志”。0是一个转义字符,称为空值,它的 ASCII码值为 0。0作为标志占用存储空间,但不计入字符串的实际长度。在 C语言中,系统在每个字符串的最后自动加入一个字符(0)作为字符串的结束标志。10.设有定义 char str=“Hello“;则语句 printf(“dd“,sizeof(str),strlen(str);的输出结果是(分数:2.00)A.6 6B.6 5 C.5 5D.5 6解析:解析:sizeof 主要用于测试变量所占的实际内存,而 strlen函数主要测试字符串中实际字符的个数,字符串“Hello“占有内存 6个字节,而字符串中共有 5个字符。11.设有定义语句:

    22、char*aa2=“abcd“,“ABCD“;则以下叙述正确的是(分数:2.00)A.aa数组的两个元素只能存放含有 4个字符的一维数组的首地址B.aa数组的值分别是字符串“abcd“和“ABCD“C.aa是指针变量,它指向含有两个元素的字符型数组D.aa0存放了字符串“abcd“的首地址 解析:解析:题目中 char*aa2,定义了指针教组 aa,有两个元素,aa0存放“abcd“地址,而 aa1存放“ABCD“地址。12.以下选项中,没有编译错误的是(分数:2.00)A.char str3=d,e,b,u,g,0; B.char strl5=“pass“,str26;str2=str1;C

    23、.char name10;name=“china“;D.char str4;str4=“hello world“;解析:解析:选项 A)是定义了字符数组 str3并对其赋初值。选项 B)中语句 str2=str1非法,字符数组不能直接赋值。选项 C),D)和选项 B)一致。13.有以下程序 main() char a510=“one“,“two“,“three“,“four“,“five“; int i,j; char t: for(i=0;i4;i+) for(j=i+1;j5;j+) if(ai0aj0) t=ai0;ai0=aj0;aj0=t; puts(a1); 程序运行后的输出结果是

    24、(分数:2.00)A.fwo B.owoC.twoD.fix解析:解析:这个程序的执行过程是当 i=0时,j=1,a00=0a10=t;不置换;当 i=1时,j=2,a10=t=a20=t;不置换;当 i=2时,j=3,a20=ta30=f;置换 a20=f,a30=t;此时,a20=f,a10=t,再置换 a20=t,a10=f,;当 i=3时,j=4,a30=f=a430=f;不置换;所以 a1的结果为 fwo。14.设有定义: char s81;int i=0;以下不能将一行(不超过 80个字符)带有空格的字符串正确读入的语句或语句组是(分数:2.00)A.while(si+=getch

    25、ar()!=n);si=0;B.scanf(“s“,s); C.gets(s);D.doscanf(“c“,&si);while(si+!=n);si=0;解析:解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而 scanf()函数接收字符串时的结束标志为回车或者空格。15.设有定义: char p=1,2,3),*q=p;以下不能计算出一个 char型数据所占字节数的表达式是(分数:2.00)A.sizeof(p) B.sizeof(char)C.sizeof(*q)D.sizeof(p0)解析:解析:选项 A)计算的是 p字符数组

    26、首地址所占的内存字节数,返回值数组中所有元素占有的空间。*q和 p0分别表示数组 p中下标为 0的字符元素,选项 B)和 D)都可以计算 char型数据占有的字节数。16.有以下程序 #includestdioh #includestringh void main() char str20=“One*World“,“One*Dream!“,*p=str1; printf(“d,“,strlen(p); printf(“sn“,p);程序运行后的输出结果是(分数:2.00)A.9,One*Dream!B.10,One*Dream! C.9,One*WorldD.10,One*World解析:解析

    27、:在主函数中定义了二维字符数组 str,并对它赋初值。定义字符指针 p,并把字符串 str1的地址赋给它。所以这时字符指针 p指向字符串“One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度 10和字符串本身。17.有以下程序 #includestdioh void main() char s=“012xy08s34f4w2“; int i,n=0; for(i=0;si!=0;i+) if(si=0&si=9)n+; printf(“dn“,n);程序运行后的输出结果是(分数:2.00)A.0B.7C.3 D.8解析:解析:在主函数中的 for循环语句中,当 si的值不等于

    28、 09 之间的数字时,结束循环语句的执行。由字符数组 s的初值可以得到 for循环语句执行了三次,所以变量 n的值等于 3。18.以下不能将 s所指字符串正确复制到 t所指存储空间的是(分数:2.00)A.for(i=0;ti=si;i+);B.while(*t=*s)t+;s+;C.for(i=0,j=0;ti+=sj+;);D.do*t+=*s+;while(*s); 解析:解析:在选项 D)中,不能把 s所指字符串的结束标志符赋给字符串 t。19.下列语句组中,正确的是(分数:2.00)A.char*s;s=“Olympic“; B.char s7;s=“Olympic“;C.char*

    29、s;s=“Olympic“);D.char s7;s=“Olympic“;解析:解析:选项 A)中定义了指针变量 s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。20.有以下程序 main() char ch=“uvwxyz“,*pc; pc=ch;printf(“cn“,*(pc+5); 程序运行后的输出结果是(分数:2.00)A.0B.元素 ch5的地址C.z D.字符 y的地址解析:解析:在程序中语句 pc=ch;的功能是字符指针 pc指向字符串数组 ch的地址,而*(ps+5)表示字符串数组 ch中第 6个字符 z。21.有以下程序 #include

    30、stdioh void main() char s=“012xy“;int i,n=0; for(i=0;si!=0;i+) if(si=a&si=z)n+; printf(“dn“,n);程序运行后的输出结果是(分数:2.00)A.0B.3C.5D.2 解析:解析:这段程序的功能求出字符串 s中字符在小写字符 a到 z之间字符的个数。在程序中字符串 s的值为“012xy”,所以在字符串 s中符合要求的字符的个数等于 2。22.以下能正确定义字符串的语句是(分数:2.00)A.char str=“x43“;B.char str=“0“; C.char str=“;D.char str=064;

    31、解析:解析:字符串常量是用一对双括号括起来的一串字符。它用字符数组来存放,不用一对大括号对括起来。23.以下关于字符串的叙述中正确的是(分数:2.00)A.两个字符串中的字符个数相同时才能进行字符串大小的比较B.可以用关系运算符对字符串的大小进行比较C.空串比空格打头的字符串小 D.C语言中有字符串类型的常量和变量解析:解析:C 语言本身并没有设置一种类型来定义字符串变量,却允许使用“字符串常量”。字符串常量是由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数 strcmp(s1,s2)来进行,其比较的方法是依次对 s1和 s2中对应位置上的字符两两进行比较,当出现第一对不

    32、相同的字符时,即由这两个字符决定所在串的大小(比较字符大小的依据是其 ASCII码值)。24.若要求从键盘读入含有空格字符的字符串,应使用函数(分数:2.00)A.getc()B.gets() C.getchar()D.scanf()解析:解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格;getchar()函数用于输入字符,其调用形式为:ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的一个字符赋给变量 ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入 Enter键时,读入才开始

    33、执行。gets()函数的调用形式为:gets(str adr),其中 str adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets()函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pf)其中 pf是文件指针。函数的功能是从 pf指定的文件中读入一个字符,并把它作为函数值返回。25.有以下程序,执行后的结果是 #includestdioh main() char s=“abcde“; s+=2; printf(“dn“,s0); (分数:2.00)A.输出字符 C的 ASCII码B.输出

    34、字符 cC.输出字符 a的 ASCII码D.程序出错 解析:解析:因为字符数组 s中的数组名 s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。26.有下列程序,程序执行后的输出结果是 fun(char P10) int n=0,i; for(i=0;i7;i+) if(pi0=T)n+; return n; main()char str10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat,“Sun“; printf(“dn“,fun(str) ;(分数:2.00)A.1B.3C.0D.2 解析:解析:本题在主函数中定义了一个字符二维数组 str10,并用“Mon“,“Tue“,“Wed“,“Tbu“,“Fri“,“Sat“,“Sun“初始化。函数 fun(char p10)的功能是统计出 p10中 pi0等于字符T的个数。所以 fun(str)的功能是统计一周七天中英文名称首字母为“T”的个数。因为字符串“Tue”和“Thu”的首字符是“T”,所以 n=2。


    注意事项

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




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

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

    收起
    展开