等级考试二级C语言考前密卷(十一)

上传人:hao****an 文档编号:156246684 上传时间:2022-09-26 格式:DOC 页数:20 大小:47.51KB
返回 下载 相关 举报
等级考试二级C语言考前密卷(十一)_第1页
第1页 / 共20页
等级考试二级C语言考前密卷(十一)_第2页
第2页 / 共20页
等级考试二级C语言考前密卷(十一)_第3页
第3页 / 共20页
点击查看更多>>
资源描述
唯C动力 全国计算机等级考试二级C专业网站更多考前资料进入2005年9月等级考试二级C语言考前密卷(十一)一、选择题(1)(10)每小题2分,(11)(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)数据的存储结构是指_。A)存储在外存中的数据B)数据所占的存储空间量C)数据在计算机中的顺序存储方式D)数据的逻辑结构在计算机中的表示答案:D评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。(2)下列关于栈的描述中错误的是_。A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针答案:B评析:栈是一种特殊的线性表,又称先进后出表(FILO-First In Last Out)。(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。A)冒泡排序为n2B)冒泡排序为nC)快速排序为n D)快速排序为n(n一1)2答案:D评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n2遍的从前往后扫描和n2遍的从后往前扫描,需要比较次数为n(n-1)2。快速排序法的最坏情况比较次数也是n(n-1)2。(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为_。A)log2nB)n2C)nD)n+l答案:C评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。(5)下列对于线性链表的描述中正确的是_。A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的答案:A评析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。(6)下列对于软件测试的描述中正确的是_。A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能多地发现程序中的错误D)软件测试的目的是使程序符合结构化原则答案:C评析:关于软件测试的目的,Grenford JMyers再The Art of Software Testing一书中给出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中的错误。(7)为了使模块尽可能独立,要求_。A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强答案:B评析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。软件设计,应尽量做到高内聚,低耦合,有利于提高模块的独立性。(8)下列描述中正确的是_。A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合答案:D评析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指_。A)数据与程序独立存放B)不同的数据被存放在不同的文件中C)不同的数据只能被对应的应用程序所使用D)以上三种说法都不对答案:D评析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项A、B、C三种说法都是错误的。(10)用树形结构表示实体之间联系的模型是_。A)关系模型B)网状模型C)层次模型D)以上三个都是答案:C评析:层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。(11)算法具有五个特性,以下选项中不属于算法特性的是_。A)有穷性B)简洁性C)可行性D)确定性答案:B评析:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的基本特性。(12)以下选项中可作为c语言合法常量的是_。A)-80B)-080C)-8e10D)-800e答案:A评析:c语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表示法,是合法的。(13)以下叙述中正确的是_。A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出答案:C评析:算法的特性中包括有零个或多个输入及有一个或多个输出这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一个算法必须至少有一个输出。(14)以下不能定义为用户标识符的是_。A)MainB)_0C)_int D)sizeof答案:D评析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。注意:大写字母和小写字母被认为是两个不同的字符。A中Main与主i函数名main不同。(15)以下选项中不能作为合法常量的是_。A)1234e04B)1234e04C)1234e+4 D)1234e0答案:B评析:指数形式的实型常量要求字每e(或E)之前必需有数字,且e后面的指数必须为整数,所以本题中选项B非法。(16)数字字符0的ASCII值为48,若有以下程序main()char a=1,b=2;printf(c,b+);printf(dn,b-a);)程序运行后的输出结果是_。A)3,2B)50,2C)2,2D)2,50答案:C评析l执行语句printf(c,ll,b+);后,b的值变成字符3,执行printf(dn,b-a);,即3-1。(17)有以下程序main()int m=12, n=34;printf(dd,m+,+n);printf(ddn,n+,+m);程序运行后的输出结果是_。A)12353514B)12353513C)12343514D)12343513答案:A评析:执行printf(ddm+,+n);后,输出的是m和n+l的值1235,接着执行printf(ddn,n+,+m);输出n和m+l的值3514。(18)有定义语句:int b;char c10】;,则正确的输入语句是_。A)scanf(ds,&b,&C);B)scanf(ds,&b,C);C)scanf(ds,b,C);D)scanf(ds,b,&C);答案:B评析:scanf函数中的格式控制后面应当是地址,而不是变量名。对于变量,通过地址运算符&求出内存中的地址;对于数组c10,数组名c即为数组在内存中的地址。(19)有以下程序main()int m,n,p;scanf(m=dn=dp=d,&m,&n,&p);printf(dddn,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_。A)m。123n=456p=789B)m=123n=456p=789C)m=123,n=456,p=789D)123456789答案:A评析:根据本题的数据输入形式scanf(m=dn=dp=d&m,&n,&p);说明在输入数据时,必须输入m=、n=、p=字符,且中间不能含有空格。(20)有以下程序main() int a,b,d=25;a=d109;b=a&(-1);printf(d,dn,a,b);程序运行后的输出结果是_。A)6,lB)2,lC)6,0D)2,0答案:B评析:本题中a=d109;的值为25109=2; b=a&(-1);为2&(-1)=1(注意:-1表示真,只有O才表示假),所以a,b的值分别为2,1。(21)有以下程序main()int i=1 j=2,k=3;if(i+=1&(+j=3|k+=3)printf(dddn,i,j,k);程序运行后的输出结果是_。A)l 2 3 B)2 3 4C)2 2 3D)2 3 3答案:D评析:执行i+=1&(+j=3k+=3)时,表达式i+=1嗨值为真,其值为1,表达式+j=3的值为真,根据短路原理,右边的表达式k+=3不再进行运算。括号中表达的值为l,作与运算后整个表达式的值也为l,输出i.j,k时,由于未执行过k,所以它们的值分别为2,3,3。(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式ab?a:cd?c:d的值是_。A)lB)2C)3D)4答案:A评析:条件表达式的一般形式为:表达式17表达式2:表达式3本题先求的是ab的值,为真,所以整个表达式ab?a:cd?c:d的值为a的值1。(23)有以下程序main( )int p8=11,12,13,14,15,16,17,18,i=O,j=0;while(i+y?x:y;int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=fl(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(d,d,dn,e,f,g);)程序运行后的输出结果是_。A)4,3,7B)3,4,7C)5,2,7D)2,5,7答案:A评析:函数n的功能是返回两个数中比较大的值,f2的功能是返回两个数中比较小的值。(27)已有定义:char a=xyz,b=x,y,z;,以下叙述中正确的是_。A)数组a和b的长度相同 B)a数组长度小于b数组长度C)a数组长度大于b数组长度D)上述说法都不对答案:C评析:c语言规定0为字符串结束标志。所以char a=xyz的数组长度为4,而b=x,y,z;的数组长度为3,数组长度与strlen函数所求的长度不同,本题是指数组占内存空间的大小。(28)有以下程序Void f(int *x, int *y)int t;t= *x; *x=*y;*y=t;)main( )int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=&a7;while(pq)f(p,q); p+; q-;。for(i=0;i3;i+) printf(d,a1i);程序运行后的输出结果是_。A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,l,答案:D评析;本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。(29)有以下程序main()im a33,*p,i;p=&a0o;for(i=0;j9;i+) pi=I;for(i=0;j=n;i-)ai+1=ai;main()int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,9);for(i=O;i5;i+) printf(d,ai);程序运行后的输出结果是_。A)10234B)12344C)12334D)12234答案:C评析:本题函数fun的作用是将指定的数组元素(从下标n到下标m)向后移一位。由函数调用fun(a,2,9);可知,函数fun用于将a2到a9的各元素依次向后移一位,移完后,a数组中各元素的值分别为1,2,3,3,4,5,6,7,8,9,10,故输出的前5个数组元素为12334。(32)有以下程序main()int a32=0,(*ptr)2,i,j;for(i=0;i2;i+)ptr=a+i;scanf(d,ptr);ptr+;for(i=0;i3;i+)for(i=0;j2;j+) printf(2d,aij);printf(n);若运行时输入:1 2 3,则输出结果是_。A)产生错误信息B)l 0C)l 2D)l 02 O3 02 00 00 O3 0答案:B评析:二维数组a,通过a32=0将数组中的各个元素初始化为0,指针变量ptr,指向包含2个元素的一维数组。a00:l,a10=2,故本题的输出选B。(33)有以下程序prt(int *m, int n)int i;for(i=O;in;i+) mi+;)main()int a= 1,2,3,4,5 ,i;prt(a,5);for(i=O;i5;i+)printf(%d,ai);程序运行后的输出结果是_。A)l,2,3,4,5,B)2,3,4,5,6,C)3,4,5,6,7,D)2,3,4,5,1,答案:B评析:用数组名作函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。(34)有以下程序main()int a=1,2,3,4,5,6,7,8,9,0,*p;for(p=a;pa+10;p+)printf(d,,*p);程序运行后的输出结果是_。A)l,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,C)0,1,2,3,4,5,6,7,8,9,D)l,l,1,l,l,l,l,l,l,l,答案:A评析:c语言规定数组变量名代表数组的首地址,即第0号元素的地址。本题将a数组中的值全部输出,即为l,2,3,4,5,6,7,8,9,0,。(35)有以下程序#define P 3void F(int x)return(P*x*x);main()printf(dn,F(3+5);程序运行后的输出结果是_。A)192B)29C)25D)编译出错答案:D评析:return语句用于从被调函数带回一个函数值。void关键字表示无类型,即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。(36)有以下程序main()int c=35;printf(dn,c&C);程序运行后的输出结果是_。A)0B)70C)35D)1答案:C评析:按位与时,1&1=1,其他都等O。因为本题中相与的两个值相等,即对应位上的二进制值相等,所以与的结果也即为其值本身。(37)以下叙述中正确的是_。A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间答案:D评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。(38)若有以下说明和定义union dtint a;har b;ouble c;data;以下叙述中错误的是_。A)data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段:dataa=5;pintf(%fn,dataC);输出结果为5000000D)data可以作为函数的实参答案:C评析:union是表示共用体的关键字,成员a,b,c共占用同一个内存空间,data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量data所占的内存字节数与成员c所占字节数相等;执行dataa=5;printf(fn,dataC);printf函数只是将内存中的数据以不同的类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故C是错误的。(39)以下语句或语句组中,能正确进行字符串赋值的是_。A)char*sp;*sp=right!;B)char slO;s=right! ;C)char s10;*s=right! ; D)char*sp=right! ;答案:D评析:选项A定义了字符型的指针变量sp,则*sp存储的是第一个字符,而给它赋的是字符串,故错;选项B表示代表数组的首地址,而题中给它赋的是字符串,所以错误;选项c定义了一个字符型的数组s10,再通过+s给数组元素赋初值,这时是与选项A相同的错误。(40)设有如下说明typedef struct STlong a; int b; char c2;NEW;则下面叙述中正确的是_。A)以上的说明形式非法B)ST是一个结构体类型C)NEW是一个结构体类型D)NEW是一个结构体变量答案:C评析:typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用typedef进行定义的话,则struct ST为结构体类型,现在用typedef定义后,相当于用NEW代表了struct ST这一结构体类型,故NEW为结构体类型。(41)有以下程序main()int a=1,b;for(b=l;b=8)break;if(a2=1)a+=5;continue;a-=3;)printf(dn,b);程序运行后的输出结果是_。A) 3 B) 4 C) 5 D) 6答案:B评析:break和continue的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行的条件是否成立。(42)有以下程序main()char s=l 59,*p;p=s;printf(c,*p+);printf(c,*p+);程序运行后的输出结果是_。A)15B)16C)12D)59答案:A评析:本题通过p=s将指针变量p指向字符数组s,在第一次输出时,由于+和*为同一优先级,*p+相于+(p+)。p指向s1,输出为s1的值。(43)有以下函数fun(char*a,char*b)while(*a!=0)&(*b!=0)&(*a=b)a+;b+; return(*a-*b);该函数的功能是_。A)计算a和b所指字符串的长度之差B)将b所指字符串连接到a所指字符串中C)将b所指字符串连接到a所指字符串后面D)比较a和b所指字符串的大小答案:D评析:字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到0为止,相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。(44)有以下程序main()int num44=1,2,3,4,5,6,7,8),9,10,11,12,13,14,15,16,i,j;for(i=O;i4;i+)for(j=0;j=ij+)printf(4c,);for(j_; jnext=q-next;B)p-next=p-next-next;C)p-next=r;D)p=q-next;答案:D评析:要想将q所指结点从链表中删除,同时保持链表的连续,必需使p结点的next指向r,在四个选项中,只有选项D不能做到。(48)以下对结构体类型变量td的定义中,错误的是_。A) typedef struct aaB) struct aa int n; int n;float m;float m;AA;td;AA td;struct aa td;C) street D) struct int n; int n;float m;float m;aa; td;struct aa td;答案:C评析:选项c中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,故此种定义方法是错误的:(49)以下与函数fseek(f1),0L,SEEK_SET)有相同作用的是_。A)feof(fp) B)ftell(fp) C)fgetc(fp)D)rewind(fp)答案:D评析:fseek函数用于改变文件的位置指针。本题中fseek(fp,0L,SEEK_SET)的作用是将位置指针移到文件头。feof的作用是判断文件是否结束,已指到文件的末尾,则返回值为非零,否则为零。ftell的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。fgets的作用是指定文件读入二个字符串。(50)有以下程序#include void WriteStr(char *fn, char *str)FILE *fp;fp=fopen(fn,w);fputs(str, fp);fclose(fp);main()WriteStr(t1.dat,start);WriteStr(tl.dat,end);程序运行后,文件t1dat中的内容是_。A)startB)endC)startend D)endrt答案:B评析:两次使用写入的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的数据,故本题中t1dat的内容为end。二、填空题(每空2分,共40分)请将每空的正确答案写在【1】至【20】序号的横线上,答在试卷上不得分。(1)某二叉树中度为2的结点有18个,则该二叉树中有一_【1】_ 一个叶子结点。答案:【1】19评析:二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。(2)在面向对象方法中,类的实例称为_【2】_.答案:【2】对象评析;将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。(3)诊断和改正程序中错误的工作通常称为_【3】_.答案:【3】程序调试评析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要再开发阶段。(4)在关系数据库中,把数据表示成二维表,每一个二维表称为_【4】_。答案:【4】关系评析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。(5)问题处理方案的正确而完整的描述称为_【5】_。答案:【5】算法评析:所谓算法是指解题方案的准确而完整的描述。(6)以下程序运行时,若从键盘输入:10 20 30,输出的结果是_【6】_. #includemain()int i=0,j=0,k=0;scanf(d*dd,&i,&j,&k);printf(dddnI,j,k);答案:【6】10300评析:在scanf格式控制符中,如果在后有一个*附加说明符,表示跳过它指定的列数。本题中d*dd表示将10赋给i,+d表示读入整数但不赋给任何变量,然后再读入整数30赋给变量j,那么变量k并没有重新赋值,仍为初始值0。所以输出的结果为10300。(7)以下程序运行后的输出结果是_【7】_。#define S(x)4*x*x+lmain()inti=6,j=8;printf(d11,S(i+j);答案:【7】81评析;带参数的宏定义是按#define命令行中指定的字符串从左到右进行转换。本题中替换的式子为:4*i+j*i+j+l,代入i,j的值得81。(8)以下程序运行后的输出结果是_【8】_。main() int a=3,b=4,c=5,t=99;if(ba&aC)t=a;a=c;c=t;if(ac&bC)t=b;b=a;a=t;printf(dddn,a,b,C);答案:【8】4 5 99评析:本题需特别注意的是;的问题,不能把t=a;a=c;c=t;误认为是第一个if的语句,实际上,只有t=a;才是第一个if的语句。(9)以下程序运行后的输出结果是_【9】_。main()int a,b,c;a=10;b=20;c=(ab1);printf(dddn,a,b,C);答案:【9】10 20 0评析:本题中(ab1)的运算顺序为先算括号算术运算符关系运算符逻辑运算符。其中ab=10,ab=0,所以abl值也是0,故整个表达式的结果为0,所以输出的a,b,c的值为10 20 0。(10)以下程序运行后的输出结果是_【10】_。main()char c1,c2;for(c1=0,c2=9;c1c2;c1+,c2-)printf(cc,c1,c2);printf(n);答案:【10】0918273645评析:本题程序的作用是通过for循环将0-9这10个数字从前向后,同时也从后向前依次输出。(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33,则输出结果是_。#includemain()chara,b;a=getchar();scanf(dt,&b);a=a-a+O;b=b*2;printf(ccn,a,b);答案:【11】1 B评析:c语言使字符型数据和整型数据之间可以通用。题中执行a=getchar();后,a的值B,在内存中的表现形式为ASCII码66;执行scanf(d&b);后,b在内存中的表现形式为33,然后经过a=a-A+0;b=b*2;运算,得出a的值为字符1,b的值为ASCII码66,最后以字符型输出为l B。(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。void fun(int, int, int(*)4,int *);main() int aa4=12,41,36,28,19,33,15,27,3,27,19,1,b3,i;fun(3,4,a,b);for(i=O;i3;i+) printf(%4d,b i);printf(n);void fun(int m,int n, int ar4,int *br)int i,j,x;for(i=O;im;i+)( x=ari0;For(j=O;jn;j+) if(xarij) x=arij;_【12】_=x;答案:【12】brI或*(br+i)评析:二维数组a存放3行4列的数组元素,一维数组b用于存放每行的最大数。在函数fun中,外层for循环用于控制行数,内层for循环用于控制列数。(13)以下程序运行后的输出结果是_【13】_。void swap(int x, int y) int t;t=x;x=y;y=t;printf(%d %d ,x,y);main()int a=3,b=4;swap(a,b); printf(%d %d,a,b);答案:【13】4 3 3 4评析:用变量作为函数的实参时,属单向传递,即值传送方式,此种函数参数的传递方式只能由实参传给形参,不能由形参传回来给实参。(14)以下程序运行后的输出结果是_【14】_。#include void fun(char *s, int p, int k) int i;for(i=p;ik-1;i+) si=si+2;main()char s=abcdefg;fun(s,3,strlen(s); puts(s);答案:【14】abcfg评析:函数fun的作用是将s所指的字符串中从第p十3到第k+1个字符向前移动两个位置。本题程序是将数组s中从第6个元素开始的值分别向前移动两个位置。在执行fun函数时,p的值是3,k的值是7,所以,具体执行for(i=p;ik-1;i+)si=si+2;语句的过程如下:i=3:判断ik-1成立,执行s3=s5,此时,s3l=f;i=4:判断ik-1成立,执行s4=s6,此时,s4=g;i=5:判断ik-l成立,执行s5=s7,此时,s5=O:i=6:判断ik-1不成立,返回主函数输出s的值,即为abcfg。(15)以下程序运行后的输出结果是_【15】_。#include main()char ch=abc,x34; int i;for(i=O;i3;i+) strcpy(xi,ch);for(i=O;i3;i+) printf(%s,&xii);printf(n);答案:【15】abcbcc评析:字符数组ch的值abc分别复制到了二维数组x的每一行,使得二维数组中每一行的值均为abc,再通过第二个for循环打印出每一行上所要求输出的字符串。(16)以下程序运行后的输出结果是_【16】_。fun(int a)int b=0;static int c=3;b+;c+;return(a+b+C);main()int i,a=5;for(i=0;ik=+i; p+;q-k=i+; q-;q-k=i;for(i=0;ik=+i;,由于是前加,所以mOk=1执行p+后p=m+l;执行q-k=i+;,由于是后加,所以m4k=1,然后使得i加上1,即i=2,q-后,q=m+3:p=m+l,q=m+3,条件p!=q成立,执行p-k=+i;,由于是前加,所以i=3,m0k=3,执行p+后p=m+2;执行q-k=i+;,由于是后加,所以m4k=3,i=4,q-后,q=m+2;p=m+2,q=m+2,条件p!=q不成立,则执行q-k=i;即m2k=4;故输出的值为13431。(18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文,时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。#include char *huiwen(char *str)char *pl,*p2; int i,t=0;pl=str;p2=_【18】_;for(i=0;i=strlen(str)/2;i+)if(*pl +!=*p2-) t=l ;break;if(_【19】_) retum(yes!);else return(no!);main() char str50;printf(Input:); scanf(%s,str);printf(%sn,_【20】_ );答案:【18】pl+(strlen(str)-1)或str+(strlen(str)-1)【19】t=0或!(tl=0)或t!=l或!t【20】huiwen(str)评析:本题的要求是判断从键盘输入的字符串是否是回文,但在主函数中并没有完成此功能的代码,故第20空应该填调用函数huiwen代码,即huiwen(str)。由于回文字符串是指正向与反向拼写都一样,所以对于一个字符串,如果正向顺序与反向顺序对应位置上的字符一样,则此字符串即为回文。在函数huiwen中,已用pl=str使得pl指向字符串str的第一个字符的地址,则第18空语句的功能应该是使得p2指向字符串str的最后一个字符串的地址,故填pl+(strlen(str)-1),由于p1与str指向的是同一个地址,所以,第18空也可以填str+(strlen(str)-1)。在进行for循环时,如果pl所指向的字符与p2指向的字符不相同,则说明,字符串str不是回文,则用t=l标记,并退出循环,执行下面的if语句,由于题中要求如果是回文,则返回yes!,否则,返回no!。故当t=O的时候,说明字符串str为回文,所以第19应填t=O或!(t!=O)或t!=l或!t。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!