江苏省计算机等级考试二级C语言笔试辅导题目ppt课件

上传人:人*** 文档编号:587808378 上传时间:2024-09-06 格式:PPT 页数:155 大小:1.22MB
返回 下载 相关 举报
江苏省计算机等级考试二级C语言笔试辅导题目ppt课件_第1页
第1页 / 共155页
江苏省计算机等级考试二级C语言笔试辅导题目ppt课件_第2页
第2页 / 共155页
江苏省计算机等级考试二级C语言笔试辅导题目ppt课件_第3页
第3页 / 共155页
江苏省计算机等级考试二级C语言笔试辅导题目ppt课件_第4页
第4页 / 共155页
江苏省计算机等级考试二级C语言笔试辅导题目ppt课件_第5页
第5页 / 共155页
点击查看更多>>
资源描述

《江苏省计算机等级考试二级C语言笔试辅导题目ppt课件》由会员分享,可在线阅读,更多相关《江苏省计算机等级考试二级C语言笔试辅导题目ppt课件(155页珍藏版)》请在金锄头文库上搜索。

1、江苏省计算机等级考试江苏省计算机等级考试二级二级C言语言语笔试辅导笔试辅导笔试概略笔试概略考考试时间:2小小时合格、合格、优秀成果要求秀成果要求内容内容题型及分型及分值信息技信息技术选择题20分分C言言语选择题10分分填空填空题30分:分:简单填空填空5分分阅读程序程序13分分完善程序完善程序12分分答答题战略略语法考试要求及考题解析语法考试要求及考题解析2019秋秋2019春春1.C言言语语根本概念根本概念源程序格式、源程序格式、风风格和构造。格和构造。main函数特性。函数特性。C程序保管。程序保管。注注释释位置。位置。【考【考题题解析】解析】填空填空题题在一个在一个C言言语语源程序中,必

2、不可少的是源程序中,必不可少的是。答案:答案:main函数定函数定义义单项选择题单项选择题.以下表达中正确的以下表达中正确的选项选项是是。A在在编译时编译时可以可以发现发现注注释释中的拼写中的拼写错误错误BC言言语语程序的每一行只能写一条程序的每一行只能写一条语语句句Cmain()必需位于程序的开必需位于程序的开场场DC言言语语程序可以由一个或多个函数程序可以由一个或多个函数组组成成答案:答案:D单项选择题单项选择题在一个源程序中在一个源程序中main函数的位置函数的位置。A必需在最开必需在最开场场B必需在最后必需在最后C必需在必需在预处预处置命令的后面置命令的后面D可以在其他函数之前或之后可

3、以在其他函数之前或之后答案:答案:D单项选择题单项选择题以下表达中正确的以下表达中正确的选项选项是是。A.main函数必需出如今其他函数之前函数必需出如今其他函数之前B.main函数中至少必需有一条函数中至少必需有一条语语句句C.C程序程序总总是从是从main函数的第一条函数的第一条语语句开句开场执场执行行D.C程序程序总总是在是在执执行完行完main函数的最后一条函数的最后一条语语句后句后终终了了答案:答案:C单项选择题单项选择题以下表达中正确的以下表达中正确的选项选项是是。A.C言言语语系系统统以函数以函数为单为单位位编译编译源程序源程序B.main函数必需放在程序开函数必需放在程序开场场

4、C.用用户户定定义义的函数可以被一个或多个函数的函数可以被一个或多个函数调调用恣意多次用恣意多次D.在一个函数体内可以定在一个函数体内可以定义义另外一个函数另外一个函数答案:答案:C全国全国选择题选择题以下表达中正确的以下表达中正确的选项选项是是 。A) C言言 语语 程程 序序 将将 从从 源源 程程 序序 中中 第第 一一 个个 函函 数数 开开 场场 执执 行行B)可可以以在在程程序序中中由由用用户户指指定定恣恣意意一一个个函函数数作作为为主主函函数数,程程序序将将从从此此开开场场执执行行C)C言言语语规规定定必必需需用用main作作为为主主函函数数名名,程程序序将将从从此此开开场场执执

5、行行,在在此此终终了了D)main可可作作为为用用户户标标识识符符,用用以以命命名名恣恣意意一一个个函函数数作作为为主主函数函数答案:答案:C全国全国选择题选择题以下表达中正确的以下表达中正确的选项选项是是()。A)C程序中的注程序中的注释释只能出如今程序的开只能出如今程序的开场场位置和位置和语语句的后面。句的后面。B)C程序程序书书写格式写格式严厉严厉,要求一行内只能写一个,要求一行内只能写一个语语句句C)C程序程序书书写格式自在,一个写格式自在,一个语语句可以写在多行上句可以写在多行上D)用用C言言语编语编写的程序只能放在一个程序文件中写的程序只能放在一个程序文件中答案:答案:C全国全国选

6、择题选择题以下表达中正确的以下表达中正确的选项选项是是()。A)C程序的根本程序的根本组组成成单单位是位是语语句句B)C程序中的每一行只能写一条程序中的每一行只能写一条语语句句C)简单简单C语语句必需以分号句必需以分号终终了了D)C语语句必需在一行内写完句必需在一行内写完答案:答案:C根本根本类型数据的表示及运用型数据的表示及运用系系统预定定义类型型标识符、符、类型修型修饰符的运用符的运用根本根本类型常量的表示及运用型常量的表示及运用字符串常量方式字符串常量方式关关键字。字。标识符。符。符号常量的定符号常量的定义与运用与运用根本根本类型型变量的声明、初始化量的声明、初始化,直接援用直接援用变量

7、量【考【考题解析】解析】单项选择题在在C言言语源程序中,不源程序中,不带任何修任何修饰符的浮点数直符的浮点数直接量例如:接量例如:3.14都是按都是按类型数据存型数据存储的。的。答案:答案:double单项选择题知知sizeof(int)的的值为2,为将将10!的的值存存储到到变量量f中中10!=3628800,变量量f的的类型型应声明声明为。AlongintBintCshortintDunsignedint答案:答案:A单项选择题单项选择题以下常量表示中正确的以下常量表示中正确的选项选项是是(22)。A.xff B.5L C.aEbD.3.14U答案:答案:B单项选择题单项选择题以下以下语语

8、句中有句中有语语法法错误错误的的选项选项是是。printf(%d,0e);B.printf(%f,0e2);C.printf(%d,0x2);D.printf(%s,0x2);答案:答案:A单项选择题单项选择题以下以下选项选项中不能用作中不能用作变变量名的是量名的是。A_floatBswitchCsumD_123答案:答案:B填填空空题题在在C言言语语系系统统中中,假假设设一一个个变变量量能能正正确确存存储储的的数数据据范范围围为为整整数数-32768 32767,那那么么该该变变量量在在内内存存中中占占(3)个个字字节节。答案:答案:2单项选择题单项选择题以下以下选项选项中,不能用作中,不能

9、用作标识标识符的是符的是。printB.FORC.&aD._00答案:答案:C单项选择题单项选择题以下以下选项选项中,中,是是C言言语语关关键键字。字。AprintfBincludeCfunDdefault答案:答案:D学学校校单单项项选选择择题题执执行行语语句句“printf(byebye101101“);时时输输出到屏幕的出到屏幕的结结果果为为(22)。答案:答案:byye101A学校学校单项选择题单项选择题表达式表达式“1e-8/2+1.0f值值的数据的数据类类型是型是(3)。intB.longC.floatD.double答案:答案:D学校学校单项选择题单项选择题以下部分以下部分变变量

10、声明中正确的量声明中正确的选项选项是是(2)。intchar=2;B.voida=0;C.inta=b=0;D.inta,b=a=0;答案:答案:D运算符和表达式的表示及运用运算符和表达式的表示及运用赋值表达式,表达式,赋值运算符的左运算符的左值要求要求算算术表达式。表达式。+、-运算符左运算符左值要求。溢出。要求。溢出。关系表达式与关系表达式与逻辑表达式,表达式,逻辑表达式表达式优化化处置置逗号表达式逗号表达式条件表达式条件表达式表达式运算中操作数表达式运算中操作数类型自型自动转换与与强迫迫转换【考【考题解析】解析】单项选择题假假设有声明有声明“doublex=3,c,*a=&x,*b=&c

11、;,那,那么以下么以下语句中句中错误的的选项是是。Aa=b=0;Ba=&c,b=a;C&a=&b;D*b=*a;答案:答案:C单项选择题单项选择题假假设设有声明有声明“charss8=Red“;,那么,那么sizeof(ss)的的值值是是。A8B4C3D1答案答案:A单项选择题单项选择题设设有定有定义义和声明如下:和声明如下:#defined2intx=5;floaty=3.83;charc=d;以下表达式中有以下表达式中有语语法法错误错误的的选项选项是是。x+B.y+C.c+D.d+答案:答案:D单项选择题单项选择题数学式数学式在在C程序中正确的表示方式程序中正确的表示方式为为。Asqrt(

12、a)/2*bBsqrt(a)/2/bCsqrt(a)/2bDsqrta/(2*b)答案答案:B单项选择题单项选择题知有声明知有声明“longx,y;且且x中整数的十中整数的十进进制表示有制表示有n位数字位数字 4n10 ,假,假设设要求去掉整数要求去掉整数x十十进进制表示中的制表示中的最高位,用剩下的数字最高位,用剩下的数字组组成一个新的整数并保管到成一个新的整数并保管到y中,那中,那么以下表达式中能正确么以下表达式中能正确实现这实现这一功能的是一功能的是。A.y=x/(10*(n-1)B.y=x%(10*(n-1)C.y=x%(long)pow(10,n-1)D.y=x%(10(n-1)答案

13、:答案:C填空填空题题假假设设有声明有声明“doublex=10,y=5;,那么,那么计计算算xy的的库库函函数数调调用方式是用方式是。答案:答案:pow(x,y)或或pow(10,5)填空填空题题假假设设有声明有声明“intx;且且sizeof(x)的的值为值为2,那么当,那么当x值值为为时时“x+1x为为假。假。答案:答案:32767填空填空题题假假设设有声明有声明“floaty=3.14619;intx;,那么,那么计计算表达算表达式式“x=y*100+0.5,y=x/100.0后后y的的值值是是。答案:答案:3.15单项选择题单项选择题知有声明知有声明“inta=3,b=4,c;,那么

14、,那么执执行行语语句句“c=1/2*(a+b);后,后,c的的值为值为。A.0B.3C.3.5D.4答案:答案:A填空填空题题假假设设有声明有声明“inta=5,b=2;,那么表达式,那么表达式“b+=(float)(a+b)/2运算后运算后b的的值为值为。答案:答案:5填空填空题题知有声明知有声明“charch=g;,那么表达式,那么表达式ch=ch-a+A的的值为值为字符字符的的编码编码。答案:答案:G单项选择题单项选择题已有声明已有声明“inta=3,b=3,c=2;,以下,以下选项选项中中值为值为0的的表达式是表达式是。!a&!b&cB.!a|!b|cC.a=b&b=cD.a=b&bc

15、答案答案:A单项选择题单项选择题知有声明知有声明“inta=3,b=4,c=5;,以下表达式中,以下表达式中值为值为0的是的是。a&bB.ay=2.zyx.xy=1.x=(x=0,y=1,z=2)答案:答案:A填空填空题题数学式数学式对应对应的的C言言语语表达式表达式为为。答案:答案:sqrt(fabs(x)!=4*a/(b*c)或或sqrt(fabs(x)!=4*a/b/c单项选择题单项选择题知有声明知有声明“inta=12,b=15,c;,那么,那么执执行表达式行表达式“c=(a|(b-=a)后,后,变变量量b和和c的的值值分分别为别为。A3.1B15,12C15,1D3,12答案答案:C

16、填空填空题题数学式数学式所所对应对应的的C言言语语表达式表达式为为pow(x,)。答案:答案:1.0/3填空填空题题假假设设有声明有声明“inta=15,b=20,c=25,e;,那么,那么执执行行语语句句“e=ab?-c:+c;后后变变量量e的的值值是是。答案:答案:26单单项项选选择择题题以以下下选选项项中中,不不能能表表示示函函数数功能的表达式是功能的表达式是。A.s=(x0)?1:(x0)?-1:0B.s=x0?1:0)C.s=x0?1:x=0?0:-1答案:答案:C单单项项选选择择题题假假设设有有程程序序段段“charc=256;inta=c;,那那么么执执行行该该程序段后程序段后a

17、的的值值是是。256B.65536C.0D.-1答案:答案:C填填空空题题设设有有声声明明“inta=3,b=4;floatx=4.5,y=3.5;,那那么么表表达式达式“(float)(a+b)/2+(int)x%(int)y的的值值是是。答案答案:4.5填填空空题题假假设设有有声声明明“intr=2;,那那么么执执行行语语句句“printf(%d“,sizeof(2*3.14*r);时输时输出出。答案:答案:8单单项项选选择择题题知知有有声声明明“intn;floatx,y;,那那么么执执行行语语句句“y=n=x=3.89;后,后,y的的值为值为。3B.3.0C.3.89D.4.0答案:答

18、案:B单单项项选选择择题题知知有有声声明明“inta=3,b=4;,以以下下表表达达式式中中合合法法的的是是。A.a+b=7B.a=|b|C.a=b=0D.(a+)+答案:答案:C学校学校单项选择题单项选择题知有声明知有声明“inta=1,b=2;,执执行行语语句句“while(-a0&-b0)a=b;后后变变量量a、b的的值值是是。0,2B.0,1C.1,1D.2,2答案:答案:A2.语句句实现顺序构造的序构造的语句句表达式表达式语句,空句,空语句,复合句,复合语句,函数句,函数调用用语句句规范范输入入输出出库函数函数printf(),scanf(),getchar(),putchar(),

19、gets(),puts()【考【考题解析】解析】单项选择题知知int类型数据在内存中存型数据在内存中存储长度度为2个字个字节,以,以下下语句中能正确句中能正确输出整数出整数32768的是的是。printf(%d,32768);B.printf(%ld,32768);C.printf(%f,32768);D.printf(%c,32768);答案:答案:B学校学校单项选择题单项选择题知某知某编译编译系系统统中中sizeof(int)的的值为值为2,在,在该编该编译译系系统统中中执执行以下行以下(10)语语句句时输时输出出结结果不是果不是39999。A.printf(%u,39999);B.pri

20、ntf(%d,39999);C.printf(%ld,39999);D.printf(%lu,39999);答案:答案:B单项选择题单项选择题假假设设有声明有声明“floatf=123.45678;,那么,那么执执行行语语句句“printf(%.3f“,f);后,后,输输出出结结果是果是。.1.23e+02.123.457.123.456780.1.234e+02答案:答案:B单项选择题单项选择题知有声明知有声明“chars80;,假,假设设需求将需求将键盘输键盘输入入的一个不含空格的字符串保管到的一个不含空格的字符串保管到s数数组组中,那么以下中,那么以下语语句句中正确的中正确的选项选项是是

21、。scanf(%s,s);B.scanf(%s,s0);C.s=gets();D.s=getchar();答案:答案:A填空填空题题知有声明和知有声明和语语句句“inta;scanf(a=%d“,&a);,欲从,欲从键盘键盘上上输输入数据使入数据使a中的中的值为值为3,那么正确的,那么正确的输输入入应应是是。答案:答案:a=3单项选择题单项选择题假假设设有声明有声明“longa,b;且且变变量量a和和b都需求都需求经过经过键盘输键盘输入入获获得初得初值值,那么以下,那么以下语语句中正确的句中正确的选项选项是是。scanf(%ld%ld,&a,&b);B.scanf(%d%d,a,b);C.sc

22、anf(%d%d,&a,&b);D.scanf(%ld%ld,&a,&b);答案:答案:D实现选择构造的构造的语句句:if-else,switch【考【考题解析】解析】单项选择题假假设在一个在一个C言言语源程序中源程序中“e1和和“e3是表达是表达式,式,“s;是是语句,那么以下句,那么以下选项中与中与语句句“for(e1;e3)s;功能等同的功能等同的语句是句是。A.e1;while(10)s;e3;B.e1;while(10)s;e3;C.e1;while(10)e3;s;D.while(10)e1;s;e3;答案:答案:B单项选择题知有声明知有声明“intx,y;,假,假设要求要求编写一

23、段程序写一段程序实现“当当x大于等于大于等于0时y取取值1,否那么,否那么y取取值-1,那么以下,那么以下程序段中程序段中错误的的选项是是。A.if(x=0)y=1;elsey=-1;B.y=x=0?1:-1;C.switch()D.switch(x-abs(x)casex=0:y=1;break;case0:y=1;break;default:y=-1;default:y=-1;答案:答案:C学校学校单项选择题单项选择题知有声明知有声明“inta=1,b=2,c=0;,执执行行语语句句“if(ab)c=a;a=b;b=c;后后变变量量a、b的的值值是是(21)。答案:答案:2,0阅读阅读程序

24、程序以下程序运以下程序运转转后的后的输输出出结结果第一行是果第一行是(1);第二;第二行是行是(2)。#includemain()inti,a=0,c=2;for(i=0;i2;i+)switch(+a,a*c)case1:printf(1);case2:printf(2);case3:printf(3n);break;default:printf(othern);答案答案:(1)23(2)other阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果果为为(6)#includevoidmain()inti,sum=0;for(i=0;i0;j-=2)k+;B.for(j=0;j15;j

25、+=2)k+;.for(i=0;i0;i-=2)k+;答案答案:A学校学校单项选择题以下以下语句中有句中有语法法错误的的选项是是。for(;);B.do;while(1);C.while();D.p:;gotop;答案:答案:C阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果最后一行是果最后一行是。#includevoidmain()inta=1,b=1,i;for(i=1;i=2;i+)a=a+b;printf(%d/%d,b,a);b=a+b;printf(%d/%dn,a,b);printf(n);答案答案:3/5,5/8阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结

26、果是果是。#includemain()ints=1,n=235;dos*=n%10;n/=10;while(n);printf(%dn,s);答案:答案:30跳跳转语句句:break,continue,return【考【考题解析】解析】全国全国选择题有以下程序有以下程序#include#includemain()intx=8;for(;x0;x-)if(x%3)printf(%d,x-);continue;printf(%d,-x);程序的运程序的运转结果是果是()。A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,答案:答案:D3.构造构造类类型数据型数据根本根本类

27、类型数型数组组 一一维维,二,二维维 数数组组声明及初始化声明及初始化数数组组存存储储构造构造运用数运用数组组名援用数名援用数组组元素元素【考【考题题解析】解析】单项选择题单项选择题以下声明中以下声明中错误错误的的选项选项是是。Ainta2;Binta=0,1;Cinta3=0;Dinta34=0;答案答案:C全国全国单项选择题单项选择题以下以下选项选项中,能正确定中,能正确定义义数数组组的的语语句是句是 。A intnum0.2019;B intnum;C intN=2019;D)#defineN2019intnumN;intnumN;答案:答案:D单项选择题单项选择题设设有声明有声明“in

28、tp10=1,2,i=0;,以下,以下语语句中与句中与“pi=pi+1,i+;等价的是等价的是。A.pi=pi+;B.p+i=pi;C.p+i=pi+1;D.i+,pi-1=pi;答案:答案:D全国全国单项选择题单项选择题知有声明知有声明“intm=5,4,3,2,1,i=0;,以下,以下对对m数数组组元素的援用中,正确的元素的援用中,正确的选项选项是是。m-iB)m2*2C)mm0D)mmi答案:答案:B填空填空题题假假设设有声明有声明“chars110=ABCDE,s210=A0;,那么,那么语语句句“printf(%d,strlen(strcpy(s1,s2);的的输输出出结结果是果是。

29、答案:答案:3全国全国选择题选择题有以下程序有以下程序#includemain()inta5=1,2,3,4,5,b5=0,2,1,3,0,i,s=0;for(i=0;i5;i+)s=s+abi;printf(%dn,s);程序运程序运转转后的后的输输出出结结果是果是 :A 6B 10C 11D)15答案:答案:C单项选择题单项选择题知有声明知有声明“chars20=Hello“;,在程序运,在程序运转转过过程中,假程中,假设设要想使数要想使数组组s中的内容修正中的内容修正为为“Good,那,那么以下么以下语语句中可以句中可以实现实现此功能的是此功能的是。As=Good;Bs20=Good;C

30、strcat(s,Good);Dstrcpy(s,Good);答案:答案:D单项选择题单项选择题知有声明知有声明“inta44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;,假假设设需求援用需求援用值为值为12的数的数组组元素,那么以下元素,那么以下选项选项中中错误错误的的选项选项是是。A*(a+2)+3B*(*(a+2)+3)C*(a2+3)Da23答案:答案:A阅阅读读程程序序以以下下程程序序运运转转时时输输出出结结果果中中第第一一行行是是 1 ,第第三行是三行是 2 。#include#defineN5voidmain()staticcharaNN;in

31、ti,j,t,start=0,end=N-1;charstr=123,ch;for(t=0;t=N/2;t+)ch=strt;for(i=j=start;iend;i+)aij=ch;for(j=start;jstart;i-)aij=ch;for(j=end;jstart;j-)aij=ch;if(start=end)astartend=ch;start+,end-;生成矩生成矩阵:1111112221123211222111111for(i=0;iN;i+)for(j=0;jN;j+)printf(%c,aij);printf(n);答案:答案:(1)11111(2)12321阅读程程序序

32、以以下下程程序序运运转时输出出结果果的的第第一一行行是是(1),第三行是第三行是(2)。#includevoidmain()inti,j,a33;for(i=0;i3;i+)for(j=0;j3;j+)if(ij)aij=1;elseaij=i-j+1;for(i=0;i3;i+)for(j=0;j3;j+)printf(%4d,aij);printf(n);生成矩生成矩阵:111211321答案答案:(1)111(2)321构造构造类型型变量与数量与数组定定义构造构造类型型构造构造类型型变量、数量、数组声明及初始化声明及初始化用用变量名援用构造量名援用构造变量构造数量构造数组元素的全体元素的

33、全体成成员用用变量名援用构造量名援用构造变量构造数量构造数组元素的根本元素的根本类型成型成员【考【考题解析】解析】单项选择题假假设有构造有构造类型定型定义“typedefstructtestintx,y2;TEST;,那么以,那么以下声明中正确的下声明中正确的选项是是27。Astructtestx;Bstructx;Ctestx;DstructTESTx;答案:答案:A单项选择题单项选择题以下构造以下构造变变量量stu1的声明方式中,的声明方式中,错误错误的的选项选项是是。typedefstructstucharname10;floatscore;STU;STUstu1;#defineSTUs

34、tructstuSTUcharname10;floatscore;stu1;structstucharname10;floatscore;stu1;structstucharname10;floatscore;STU;STUstu1;答案:答案:D学校学校单项选择题单项选择题假假设设有定有定义义“structcdoublex,y;c1=1.2,1.3,c2=1.2,1.3,c3;structddoublex,y;d1=1.2,1.3,d2=1.2,1.3,d3;,那么以下表达式中正确的那么以下表达式中正确的选项选项是是。c3=0B.c1=c2C.c3=c1D.d3=c1答案:答案:C阅读阅读程

35、序程序以下程序运以下程序运转转后的后的输输出出结结果第一行是果第一行是(1);第二;第二行是行是(2)。#includestructnumintx,y;st=1,10,2,20,3,30,4,40,-1,-1,s12,s22;main()inti=0,j=0,k;for(k=0;stk.x!=-1;k+)if(stk.x%2)s1i+=stk;elses2j+=stk;printf(%dn%dn,s10.y,s20.y);答案:答案:(1)10(2)204.指指针类针类型数据型数据根本根本类类型型变变量的指量的指针针操作操作根本根本类类型型变变量地址的量地址的获获取与保管。取与保管。指向根本指

36、向根本类类型型变变量的指量的指针变针变量声明、初始化与量声明、初始化与赋值赋值。援用指援用指针变针变量指向的根本量指向的根本类类型型变变量量 运用运算符运用运算符* 【考【考题题解析】解析】填空填空题题假假设设有声明有声明char*p=%d,%dn;inta=1,b=2;那么那么执执行行语语句句“printf(p,a,b);时输时输出出(4)。答案:答案:1,2全国全国选择题选择题假假设设有定有定义语义语句:句:doublex,y,*px,*py,执执行了行了px=&x,py=&y;之后,正确的之后,正确的输输入入语语句是句是 。A scanf %f%f,x,y ;B scanf %f%f,&

37、x,&y ;C scanf %lf%le,px,py ;D scanf %lf%lf,x,y ;答案:答案:C全国全国选择题选择题有以下程序有以下程序#includemain()intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%dn,m,n,*p,*q);程序运程序运转转后的后的输输出出结结果是果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2答案:答案:B全国全国选择题选择题有以下程序有以下程序#include#includeintfun(intn)int*p;p=(int*)malloc(sizeof(

38、int);*p=n;return*p;main()inta;a=fun(10);printf(“%dn,a+fun(10);程序的运程序的运转结转结果是果是 。0B)10C)20D)出出错错答案:答案:C(2)根本根本类类型数型数组组的指的指针针操作操作根本根本类类型数型数组组元素地址的元素地址的获获取、保管与算取、保管与算术术运算。运算。援用指援用指针变针变量指向的根本量指向的根本类类型数型数组组元素元素二二维维数数组组行地址的行地址的获获取、保管及算取、保管及算术术运算。运算。行指行指针变针变量的声明、初始化。量的声明、初始化。援用行指援用行指针变针变量指向的根本量指向的根本类类型数型数组

39、组元素元素【考【考题题解析】解析】单项选择题单项选择题设设指指针变针变量占量占2个字个字节节的内存空的内存空间间,假,假设设有声明有声明“char*p=123“;intc;,那么,那么执执行行语语句句“c=sizeof(p);后,后,c的的值为值为。A.1B.2C.3D.4答案答案:B全国全国选择题选择题假假设设有定有定义语义语句:句:doublex5=1.0,2.0,3.0,4.0,5.0,*p=x;那么那么错误错误援用援用x数数组组元素的是元素的是 。*pB)x5C)*(p+1)D)*x答案:答案:B单项选择题单项选择题假假设设有声明有声明“intx10=0,1,2,3,4,5,6,7,8

40、,9,*p;,那么那么值值不不为为4的表达式是的表达式是。Ap=x,*(p+4)Bp=x+4,*p+Cp=x+3,*(p+)Dp=x+3,*+p答案答案:C单项选择题单项选择题知有程序段知有程序段“charstr10=Aoyun,Beijing,*p=&str00;printf(%sn,p+10);,那么那么执执行行printf语语句后句后输输出出为为。ABeijingBAoyunCingDng答案答案:A单项选择题单项选择题知有声明知有声明“inti,a10,*p=a;,现现需求将需求将1 10保管保管到到a0 a9中,以下程序段中不能中,以下程序段中不能实现这实现这一功能的是一功能的是。f

41、or(i=0;i10;i+)ai=i+1;B.for(i=0;i10;i+)pi=i+1;C.i=1;while(pa+10)*p+=i+;D.i=1;while(pa+10)*a+=i+;答案:答案:D填空填空题题知有声明知有声明“inta32=1,2,3,4,5,6,*p=a0;,那么,那么执执行行语语句句“printf(%dn“,*(p+4);后的后的输输出出结结果果为为。答案:答案:5单项选择题单项选择题假假设设有声明有声明“inta34,*p=a0,(*q)4=a;,那,那么以下表达中么以下表达中错误错误的的选项选项是是。.a23与与q23等价等价.a23与与p23等价等价.a23与

42、与*(p+11)等价等价.a23与与p=p+11,*p等价等价答案:答案:B单项选择题知有声明知有声明“int a33=0,*p1=a1,(*p2)3=a;,以以下下表表达达式式中中与与“a11=1不等价的表达式是不等价的表达式是。A.*(p1+1)=1B.p111=1C.*(*(p2+1)+1)=1D.p211=1答案:答案:B填填空空题 假假设有有声声明明“char s10=remind“;,执行行“puts(s+2);后的后的输出出结果是果是。答案答案:mind单项选择题知有声明:知有声明:“chara=Itismine,*p=Itismine;,以下表达中以下表达中错误的的选项是是。A

43、.strcpy(a,“yes)和和strcpy(p,“yes)都是正确的都是正确的B.a=“yes和和p=“yes都是正确的都是正确的C.*a等于等于*pD.sizeof(a)不等于不等于sizeof(p)答案:答案:B全国完善程序全国完善程序以下程序的功能是:借助指以下程序的功能是:借助指针变针变量找出数量找出数组组元素中的最大元素中的最大值值所在数所在数组组元素的下元素的下标值标值。#includemain()inta10,*p,*s;for(p=a;p-a10;p+)scanf(“%d,p);for(p=a,s=a;p-a*s)s=_;printf(“index=%dn,s-a);答案:

44、答案:p(3)构造构造类类型型变变量、数量、数组组的指的指针针操作操作构造构造变变量地址、构造数量地址、构造数组组元素地址的元素地址的获获取与保管。取与保管。指向构造指向构造变变量指量指针变针变量的声明、初始化与量的声明、初始化与赋值赋值。援用指援用指针针指向的构造指向的构造类类型型变变量量 构造构造类类型数型数组组元素元素 的根本的根本类类型成型成员员构造构造变变量成量成员员的地址、构造数的地址、构造数组组元素成元素成员员的地址的地址获获取与保管。取与保管。指向构造指向构造变变量成量成员员的指的指针变针变量声明、初始化与量声明、初始化与赋值赋值。【考【考题题解析】解析】单项选择题单项选择题知

45、有构造定知有构造定义义和和变变量声明如下:量声明如下:structstudentcharname20;intscore;structstudent*h;stu,*p;int*q;以下以下选项选项中中错误错误的的选项选项是是。Ap=&stu;Bq=&stu.score;Cscanf(%s%d,&stu);Dstu.h=p;答案答案:C阅阅读读程程序序以以下下程程序序运运转转时时输输出出结结果果的的第第一一行行是是 1 ,第第二二行行是是 2 #includestructsintx,*y;*p;intd5=10,20,30,40,50;structsa5=100,&d0,200,&d1,300,&

46、d2,400,&d3,500,&d4;voidmain()p=a;printf(%5d,p-x+);printf(%5dn,p-x);printf(%5d,*p-y);printf(%5dn,*+p-y);答案答案:(1)100101(2)1020单项选择题单项选择题设设有构造定有构造定义义及及变变量声明如下:量声明如下:structproductcharcode5;floatprice;y4=100,100;以下表达式中以下表达式中错误错误的的选项选项是是。A.(*y).code0=2;B.y0.code0=2;C.y-price=10;D.(*y)-price=10;答案:答案:D(4)指

47、指针类型数型数组的声明和运用的声明和运用【考【考题解析】解析】全国全国单项选择题有以下程序有以下程序#includemain()char*a=abcd,ef,gh,ijk;inti;for(i=0;i4;i+)printf(%c,*ai);程序运程序运转后后输出的出的结果是果是AaegiBdfhkCabcdDabcdefghijk答案:答案:A全国全国单项选择题假假设有定有定义语句:句:inta410,*p,*q4;且且0=i4,那么那么错误的的赋值是。是。A)p=aB)q=ac)q0=aD)p=&a21答案:答案:B全国填空全国填空题题有以下程序有以下程序#includemain()inta

48、=1,2,3,4,5,6,*k3,i=0;while(i3)ki=&a2*i;printf(%d,*ki);i+;程序运程序运转转后的后的输输出的出的结结果是果是_答案:答案:5.函数函数函数定函数定义、函数声明、函数、函数声明、函数调用用(2)函数函数调用用时根本根本类型型实参的参的传送与运用。送与运用。实参参与形参的与形参的类型兼容性要求。型兼容性要求。实参参类型的自型的自动转换【考【考题解析】解析】单项选择题以下函数定以下函数定义中正确的中正确的选项是是25。A.doublefun(doublex,doubley)B.doublefun(doublex;doubley)C.doublef

49、un(doublex,doubley);D.doublefun(doublex,y)答案:答案:A单项选择题单项选择题以下以下选项选项均均为为fun函数定函数定义义的的头头部,其中部,其中错误错误的的选选项项是是。A.intfun(intx,inty)B.intfun(intx,intyx)C.intfun(intx,inty3)D.intfun(intx,int*y)答案:答案:B学校学校单项选择题单项选择题知函数知函数fun定定义义的的头头部部为为“voidfun(intx,inty),以下,以下fun函数声明中正确的函数声明中正确的选项选项是是。voidfun(intx,inty);B.

50、voidfun(intx,int*y);voidfun(int,int);D.voidfun(int,int*);答案:答案:C单项选择题单项选择题假假设设有声明有声明“longfun(int*x,intn,long*s);inta4=1,2,3,4;longb,c;,那,那么以下函数么以下函数调调用方式中正确的用方式中正确的选项选项是是。A.c=fun(a,4,b);B.c=fun(a,4,&b);C.c=fun(a4,4,b);D.c=fun(a,4,&b);答案:答案:D单项选择题单项选择题假假设设函数函数调调用用时时的的实实参参为变为变量,那么以下关于量,那么以下关于函数形参和函数形参

51、和实实参的表达中正确的参的表达中正确的选项选项是是。A.实实参和其参和其对应对应的形参占用同一存的形参占用同一存储单储单元元B.形参不占用存形参不占用存储单储单元元C.同名的同名的实实参和形参占用同一存参和形参占用同一存储单储单元元D.形参和形参和实实参占用不同的存参占用不同的存储单储单元元答案:答案:D全国全国选择题选择题函数函数调调用用语语句句func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);中中func函数的函数的实实参个数是参个数是 。A)3B)4C)5D)8答案:答案:A阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果是果是。#include

52、voidfunc(intb)inta;a=b;b=10;voidmain()inta=10,b=20;func(b);printf(%d,%d,a,b);答案答案:10,20阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏幕的出到屏幕的结结果是果是。#includevoidswap(inta,intb)intt;if(ab)t=a,a=b,b=t;voidmain()intx=13,y=11,z=12;if(xy)swap(x,y);if(xz)swap(x,z);if(yz)swap(y,z);printf(%dt%dt%dn,x,y,z);答案:答案:8131112阅读阅读程序程序以

53、下程序运以下程序运转时输转时输出出结结果是果是。#includeintf(intx,inty)returnx+y;voidmain()doublea=5.5,b=2.5;printf(%d,f(a,b);答案:答案:7阅读阅读程序程序以下程序运以下程序运转转后的后的输输出出结结果是果是。#includeintfun(intw1,intw2)returnw2-w1;main()intw=1,k;k=fun(fun(w+1,w),w);printf(%dn,k);答案:答案:2全国全国选择题选择题有以下程序有以下程序#includevoidfun(inta,intb)intt;t=a;a=b;b=

54、t;main()intc10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2)fun(ci,ci+1);for(i=0;i10;i+)printf(“%d,ci);printf(“n);程序的运程序的运转结转结果是果是 A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,答案:答案:A(3)函数函数调调用用时时构造构造类类型型实实参的参的传传送与运用送与运用阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏幕的出到屏幕的结结果第一行是果第

55、一行是(1),第二行是,第二行是(2)。#includetypedefstructintx,y;direction;intvisible(directions,directionA,directionB,directionC)directionp1,p2;intd;p1.x=B.x-A.x;p1.y=B.y-A.y;p2.x=C.x-A.x;p2.y=C.y-A.y;d=s.x*p1.x*p2.x+s.y*p1.y*p2.y;printf(%4dn,d);returnd0;voidmain()char*ss=invisible,visible;directions=1,1,T=1,1,A=0,

56、0,B=2,1;puts(ssvisible(s,T,A,B);答案:答案:(1)-1(2)invisible(4)函数函数调调用用时时指指针类针类型型实实参的参的传传送与运用送与运用【考【考题题解析】解析】单项选择题单项选择题假假设设需求需求经过调经过调用用f函数得到一个数的平方函数得到一个数的平方值值,以下以下f函数定函数定义义中不能中不能实现该实现该功能的是功能的是。A.voidf(double*a)*a=(*a)*(*a);B.voidf(doublea,double*b)*b=a*a;C.voidf(doublea,doubleb)b=a*a;D.doublef(doublea)re

57、turna*a;答案:答案:C全国全国选择题选择题有以下程序有以下程序#includevoidfun int*a,int*b int*c;c=a;a=b;b=c;main intx=3,y=5,*P=&x,*q=&y;fun p,q ;printf %d,%d,*p,*q ;fun &x,&y ;printf %d,%dn,*p,*q ;程序运程序运转转后的后的输输出出结结果是果是A 3,5,5,3B 3,5,3,5C 5,3,3,5D 5,3,5,3、答案:答案:B阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果是果是。#includevoidchange(intx,inty,in

58、t*z)intt;t=x;x=y;y=*z;*z=t;voidmain()intx=18,y=27,z=63;change(x,y,&z);printf(x=%d,y=%d,z=%dn,x,y,z);答案:答案:x=18,y=27,z=18全国全国选择题选择题有以下程序有以下程序#includevoidfun(inta,intn)inti,t;for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;main()intk10=1,2,3,4,5,6,7,8,9,10,i;fun(k,5);for(i=2;i8;i+)printf(“%d,ki);printf(“n);程序

59、的运程序的运转结转结果是果是A)345678B)876543C)1098765D)321678答案:答案:D阅阅读读程程序序以以下下程程序序运运转转时时输输出出结结果果中中第第一一行行是是 1 ,第第二二行是行是 2 #includevoidfun(intx,intp,int*n)inti,j=0;for(i=1;i=x/2;i+)if(x%i=0)pj+=i;*n=j;voidmain()intx,a10,n,i;fun(27,a,&n);/*调调用用fun函函数数将将27的的一一切切因因子子保保管管到到a数数组组,因因子子个个数数保保管到管到n*/for(i=0;in;i+)printf(

60、%5d,ai);printf(n%5d,n);答案答案:(1)139(2)3阅阅读读程程序序以以下下程程序序运运转转时时输输出出结结果果中中第第一一行行是是 1 ,第第二行是二行是 2 #includeintfun(char*a,char*b)intm=0,n=0;while(*(a+m)!=0)m+;while(bn)*(a+m)=bn;m+;n+;*(a+m)=0;returnm;voidmain()chars120=yes,s25=no;printf(%dn,fun(s1,s2);puts(s1);答案:答案:(1)5(2)yesno阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏

61、幕的出到屏幕的结结果第一行是果第一行是(1),第二行是,第二行是(2)。#includevoidfun(char*p1,char*p2);voidmain()inti;chara=54321;puts(a+2);fun(a,a+4);puts(a);voidfun(char*p1,char*p2)chart;while(p1p2)t=*p1;*p1=*p2;*p2=t;p1+=2,p2-=2;答案:答案:(1)321(2)14325完完善善程程序序以以下下程程序序的的功功能能是是:求求a数数组组中中前前4个个元元素素之之和和及及后后6个元素之和。个元素之和。#includeintfsum(in

62、t*array,intn)inti,s=0;for(i=0; 1 ;i+)s+=arrayi;return(s);voidmain(void)inta15=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;intsumh,sumt;sumh=fsum(a,4);sumt= 2 ;printf(“%d%dn,sumh,sumt);答案答案:(1)in(2)fsum(&a9,6)或或fsum(a+9,6)(5)函数前往函数前往值值的的产产生生【考【考题题解析】解析】填空填空题题知有函数定知有函数定义义“intfun()return(3,4);,那么,那么调调用用fun后的函数

63、前往后的函数前往值值是是 1 。答案答案:4全国全国选择题选择题以下表达中以下表达中错误错误的的选项选项是是 。A)用用户户定定义义的函数中可以没有的函数中可以没有return语语句句B)用用户户定定义义的函数中可以有多个的函数中可以有多个return语语句,以便可以句,以便可以调调用一用一次前往多个函数次前往多个函数值值C)用用户户定定义义的函数中假的函数中假设设没有没有return语语句,那么句,那么该该当定当定义义函数函数为为void类类型型D)函数的函数的return语语句中可以没有表达式句中可以没有表达式答案:答案:B全国全国选择题选择题以下关于以下关于return语语句的表达中正确

64、的句的表达中正确的选项选项是是 。A 一个自定一个自定义义函数中必需有一条函数中必需有一条return语语句句B 一个自定一个自定义义函数中可以根据不同的情况函数中可以根据不同的情况设设置多条置多条return语语句句C 定定义义成成void类类型的函数中可以有型的函数中可以有带带前往前往值值的的return语语句句D)没有没有return语语句的自定句的自定义义函数在函数在执执行行终终了了语语句句时时不能前不能前往到往到调调用途用途答案:答案:B(6)全局全局变变量、部分量、部分变变量与方式参数的作用域量与方式参数的作用域【考【考题题解析】解析】阅读阅读程序程序以下程序运以下程序运转时输转时

65、输出出结结果是果是。#includeintt;intsub(int*s)*s+=1;t+=*s;returnt;main()inti;for(i=1;i4;i+)printf(%4d,sub(&i);答案:答案:26(7)部分部分变变量、方式参数的存量、方式参数的存储类储类型和生存期型和生存期【考【考题题解析】解析】单项选择题单项选择题知在函数知在函数f中声明了部分中声明了部分变变量量x,假,假设设希望希望f函数函数第一次被第一次被调调用前往后用前往后变变量量x中存中存储储的数据的数据坚坚持到下次持到下次f函数函数被被调调用用时时仍可以运用,那么在声明仍可以运用,那么在声明x时时必需指定其存必

66、需指定其存储类储类型型为为 30 。A.autoB.registerC.staticD.extern答案:答案:C填空填空题题声明部分声明部分变变量量时时假假设设缺省存缺省存储类别储类别,该变该变量的存量的存储储类别类别是是。答案:答案:auto填空填空题题可以改可以改动动部分部分变变量的生存期、但不能改量的生存期、但不能改动动它的作用它的作用域的存域的存储类别储类别是是。答案:答案:static阅阅读读程程序序以以下下程程序序运运转转时时输输出出结结果果的的第第一一行行是是(1),第第二二行是行是(2)。#includeintf1()staticinti=0,f=1;returnf*=+i;

67、intf2()inti=0,f=1;returnf*=+i;voidmain()printf(%dn,f1()+f1();printf(%dn,f2()+f2();答案答案:(1)3(2)2阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏幕的出到屏幕的结结果第一行是果第一行是(1),第二行是,第二行是(2),第三行是,第三行是(3)。#includeintg(intx,inty)returnx+y;intf(intx,inty)staticintx=2;if(y2)x=x*x;y=xelsey=x+1;returnx+y;voidmain()inta=3;printf(%dn,g(a,2

68、);printf(%dn,f(a,3);printf(%dn,f(a,2);答案:答案:(1)5(2)7(3)86.函数高函数高级运用运用(1)递归函数函数执行行过程程【考【考题解析】解析】阅读程序程序以下程序运以下程序运转时输出出结果是果是8。#includevoidf(longx)if(x100)printf(%d,x/10);elsef(x/100);printf(%d,x%100/10);main()f(123456);答案:答案:阅读阅读程序程序以下程序运以下程序运转转后的后的输输出出结结果第一行是果第一行是(13)。#includevoidprint(intn);voidprint

69、_n(intn);main()print(4);voidprint(intn)if(n=0)return;print_n(n);if(n0)print(n-1);voidprint_n(intn)if(n=0)return;printf(%d,n);if(n1)print_n(n-1);else printf(n);答案:答案:4321阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果是果是.#include#includevoidsf(char*s1,char*s2)if(*s1=*s2)sf(s1+1,s2+1);voidmain()chara20=ABC,b20=xyz;sf(a

70、+strlen(a),b);puts(a);答案答案:ABCxyz阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果是果是.#include#includeintcount(chars)inti=0;if(si=0)return0;while(isalpha(si)i+;while(!isalpha(si)&si!=0)i+;return1+count(&si);/*递归调递归调用用*/voidmain()charline=oneworld,onedream.;printf(%d,count(line);答案:答案:4阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏幕的出到屏幕的

71、结结果是果是。#includevoidfun(intm,intn)if(m=n)printf(%d,m);elsefun(m+1,n);printf(%d,m);voidmain()fun(1,2);答案:答案:221(2)函数的指函数的指针操作操作函数地址的函数地址的获得及保管。指向函数的指得及保管。指向函数的指针变量声明、初量声明、初始化、始化、赋值调用指用指针变量指向的函数量指向的函数【考【考题解析】解析】全国填空全国填空题请将以下程序中的函数声明将以下程序中的函数声明语句句补充完好充完好#includeint_;main()intx,y,(*p)();p=max;printf(“&dn

72、,(*p)(x,y);intmax(inta,intb)return(ab/a:b);答案答案:max(inta,intb)或或max(int,int)全国全国选择题选择题设设有以下函数:有以下函数:voidfun(intn,char*s).那么下面那么下面对对函数指函数指针针的定的定义义和和赋值赋值均正确的均正确的选项选项是是A)void(*pf)();pf=fun;B)void*pf();pf=fun;C)void*pf();*pf=fun;D)void(*pf)(int,char*);pf=fun;答案答案:D学校学校单项选择题单项选择题假假设设已有如下程序:已有如下程序:#includ

73、edoubleg(doublea,double(*p)(double)returnp(a)*p(a);main()doublex=2,y;/*g函数函数调调用用语语句位置句位置*/现现需求在需求在main函数中函数中调调用用g函数,以下函数,以下选项选项中正确的中正确的g函数函数调调用用语语句是句是。Ay=g(x,exp);By=g(x,exp(x);Cy=g(x,exp();Dy=g(doublex,doubleexp);答案:答案:A3前往指前往指针类型型值的函数的函数以下程序运以下程序运转结果是。果是。#include#includeint*fun(intn)int*p;p=(int*)

74、malloc(sizeof(int);*p=n+10;returnp;main()int*p;p=fun(10);printf(“%dn,*p);答案:答案:207.单单向向链链表表结结点数据点数据类类型定型定义义运用运用malloc()函数函数,free()函数函数动态恳动态恳求、求、释释放放结结点存点存储储区区根本操作:建立根本操作:建立链链表、遍表、遍历链历链表、表、查查找找结结点、插入新点、插入新结结点、点、删删除除结结点、数据点、数据统计统计、链链表倒序表倒序建立建立链表关表关键操作操作需声明指需声明指针变量:量:head指向指向链表首表首结点,点,p1指向指向新新恳求求结点,点,p

75、2指向指向链表末表末结点点while(仍有数据需保管到仍有数据需保管到链表表)p1=(structnode*)malloc(sizeof(structnode);p1-成成员名名=数据数据;if(head=0)head=p2=p1;elsep2-next=p1;p2=p1;p2-next=NULL;returnhead;遍遍历链表表(输出出结点数据,点数据,统计结点数据点数据)关关键操作操作需声明指需声明指针变量量p或直接用形参或直接用形参p=head;指向指向链表首表首结点点while(p!=NULL)查找找结点数据、点数据、输出出结点数据、点数据、统计结点数据点数据p=p-next;插入插

76、入结点到点到链表关表关键操作操作需声明指需声明指针变量:量:p指向待插入新指向待插入新结点,点,head指指向向链表首表首结点点,p1指向插入位置之前指向插入位置之前结点,点,p2指向指向插入位置之后插入位置之后结点点恳求新求新结点并保管数据到点并保管数据到结点点p=(structnode*)malloc(sizeof(structnode);p-成成员=数据数据;p-next=NULL;假假设要求将新要求将新结点插入点插入链表第一个表第一个结点前点前if(head=NULL)head=pelsep-next=head;head=p;returnhead; 假假设要求将新要求将新结点插入有序点

77、插入有序链表中表中 if if新新结点点应插入到插入到链表首表首结点之前点之前 p-next=head; head=p; return head; p-next=head; head=p; return head; else else p1=head; p1 p1=head; p1指向指向链表第一个表第一个结点点 p2=head-next; p2 p2=head-next; p2指向指向链表第二个表第二个结点点 while whilep2!=NULLp2!=NULL if ( if ( 新新结点点应插入到插入到p2p2指向指向结点之前点之前) ) 立刻立刻终止循止循环 else p1=p2;p

78、2=p2-next; else p1=p2;p2=p2-next; if(p2=NULL)p1-next=p; if(p2=NULL)p1-next=p; 新新结点添加到末点添加到末结点之后点之后 else p-next=p2; p1-next=p; else p-next=p2; p1-next=p; 新新结点插入点插入p2p2指向指向结点之前点之前 return head; return head;从从链表中表中删除除结点关点关键操作操作需声明指需声明指针变量:量:head指向指向链表首表首结点,点,p1指向指向需需删除除结点之前点之前结点,点,p2指向需指向需删除除结点点if(首首结点需

79、求点需求删除,即除,即head-成成员=给定定值)p=head;head=head-next;或或head=p-next;free(p);elsep1=head;p1指向指向链表第一个表第一个结点点p2=head-next;p2指向指向链表第二个表第二个结点点while(p2!=NULLif(p2指向指向结点需点需删除除)立刻立刻终止循止循环elsep1=p2;p2=p2-next;ifp2=NULL)puts(“notfound);未找到未找到结点点elsep1-next=p2-next;free(p2);删除除p2指向指向结点点returnhead;【考【考题题解析】解析】 插入新插入新结

80、结点点 完完善善程程序序 以以下下程程序序的的功功能能是是:函函数数struct struct node node * * insert(struct insert(struct node node *head, *head, struct struct node node *p)*p)将将p p指指向向的的结结点点作作为为首首结结点点插插入入headhead指指向向的的链链表表中中。mainmain函函数数接接纳纳从从键键盘盘输输入入的的一一行行字字符符,每每接接纳纳一一个个字字符符后后,恳恳求求一一个个新新结结点点保保管管该该字字符符,并并调调用用insertinsert函函数数将将新新结

81、结点点插插入入链链表表中中。最最后后从从表表头头开开场场依依次次输输出出该该链链表表各各结结点点成成员员c c的的值值。试试完完善善程序以到达要求的功能。程序以到达要求的功能。 #include #include #include #include struct nodestruct node char c; char c; struct node *next; struct node *next; ; voidmain()structnode*insert(structnode*head,structnode*p);charch;structnode*head,*p;head=NULL;wh

82、ile(ch=getchar()!=n)p=(structnode*)malloc(sizeof(structnode); 1 =ch;p-next=NULL; 2 ;p=head;while(p!=NULL)printf(%c,p-c); 3 ;structnode*insert(structnode*head,structnode*p)if(head=NULL)head=p;else 4 ;head=p;returnhead;答案答案:(1)p-c(2)head=insert(head,p)(3)p=p-next;(4)p-next=head数据数据统计完完善善程程序序以以下下程程序序创建

83、建一一个个链表表并并实现数数据据统计功功能能。函函数数WORD*create(chara20,intn)创建建一一个个包包含含n个个结点点的的单向向链表表,结点点数数据据来来自自a指指向向的的数数组中中存存储的的n个个单词字字符符串串。函函数数voidcount(WORD*h)统计h指指向向的的单向向链表表中中不不同同单词各各自自出出现的的次次数数,将将统计结果果保保管管到到部部分数分数组c中并中并输出。出。2021春春程序运程序运转时输出出结果果为“red:1green:2blue:3。#includestdio.h#includestdlib.h#includestring.htypede

84、fstructwcharword20;structw*next;WORD;WORD*create(chara20,intn)WORD*p1,*p2,*h=0;inti;for(i=0;inext=p1;p2=p1;p2-next=(2);returnh;答案:答案:(1)p1-word(2)0或或NULLvoidcount(WORD*h)structcharword20;intnum;c6=0;intm=0,i;while(h)if(m=0)strcpy(c0.word,h-word);c0.num=1;m+;elsefor(i=0;iword)=0)(3);break;if(i=m) str

85、cpy(cm.word,h-word); cm+.num=1; (4);for(i=0;inextvoidmain()charwords620=red,green,blue,blue,green,blue;WORD*head=0;head=create(words,6);count(head);查找、找、删除除结点点完善程序完善程序设h1和和h2分分别为两个两个单链表的表的头指指针,链表中表中结点的数据构造点的数据构造为:typedefstructnodeintdata;structnode*next;NODE;sea_del函数的功能是:函数的功能是:删除除h1指向的指向的链表中初次出表中初

86、次出现的与的与h2指向的指向的链表中数据完全匹配的假表中数据完全匹配的假设干个延干个延续结点点,函数前函数前往往h1指向指向链表的表的头指指针。例如,初例如,初态下,下,h1指向指向链表和表和h2指向指向链表如以下表如以下图所示:所示:124790h12470h2调用用sea_del函数后函数后h1指向指向链表表为:1h190NODE*sea_del(NODE*h1,NODE*h2)NODE*p,*ph,*q,*s;ph=NULL;p=q=h1;s=h2;if(h1=NULL|(1)returnh1;while(p!=NULL&s!=NULL)while(q-data=s-data&q&s)q

87、=q-next;s=(2);if(s!=NULL)/*失配失配时时,h1起始起始结结点后移点后移,h2从首从首结结点开点开场场*/ph=p;p=q=p-next;s=(3);elseif(ph=NULL)h1=q;elseph-next=q;(4);答案:答案:(1)h2=NULL或或h2=0(2)s-next(3)h2(4)returnh1查找、找、删除、插入除、插入结点点完善程序完善程序设一个一个单向向链表表结点的数据点的数据类型定型定义为:structnodeintx;structnode*next;fun函数从函数从h指向的指向的链表第二个表第二个结点开点开场遍遍历一切一切结点,点,当

88、遇到当遇到x值为奇数的奇数的结点点时,将,将该结点移到点移到h链表第一个表第一个结点点之前,函数前往之前,函数前往链表首表首结点地址。点地址。print函数函数输出出p指向的指向的链表中一切表中一切结点的点的x值。程序运。程序运转后的后的输出出结果是果是“1342。#include#defineN4structnodeintx;structnode*next;voidprint(structnode*p)while(1)printf(%4d,(2);p=p-next;printf(n);答案:答案:(1)p(2)p-xstructnode*fun(structnode*h)structnode

89、*p1,*p2,*p3;p1=h;p2=p1-next;while(p2)if(p2-x%2)p3=p2;p1-next=(3);p2=p1-next;p3-next=h;(4);elsep1=p2;p2=p2-next;returnh;main()structnodeaN=4,3,2,1,*head=a;inti,num;for(i=0;inext或或p3-next(4)h=p3链表倒序表倒序设某某单向向链表表结点的数据构造定点的数据构造定义为:typedefstructnodecharch;structnode*next;linklist;以下程序首先建立一个以下程序首先建立一个单向向链表

90、表head如如图1所示,所示,该链表每个表每个结点中保管点中保管x数数组的一个元素的一个元素值;输出出head链表中表中每个每个结点的点的值;再将再将head链表表变换为倒序倒序链表如下表如下图,输出倒序后出倒序后head链表中每个表中每个结点的点的值。headD0图图1CBAheadA0图图2BCD#includetypedefstructnodecharch;structnode*next;linklist;linklist*create(charx)inti;linklist*pt,*pr,*p=NULL;for(i=0;xi!=0;i+)pt=(linklist*)malloc(siz

91、eof(linklist);pt-ch=xi;pt-next=NULL;if(p=NULL)(1);pr=pt;elsepr-next=pt;(2);returnp;答案:答案:(1)p=pt(2)pr=pr-nextlinklist*revlist(linklist*head)linklist*hp,*p=NULL;hp=head;head=(29);while(hp)p=hp;hp=hp-next;p-next=head;(30);returnhead;voidprint(linklist*phead)while(phead)printf(%c,phead-ch);phead=phead-

92、next;printf(n);main()linklist*head;charx=ABCD;head=create(x);print(head);head=revlist(head);print(head);答案:答案:(3)NULL或或0(4)head=phead链表倒序算法提示:链表倒序算法提示:(1)使使hp指向指向head链表,置链表,置head为为0head链表为空链表。链表为空链表。(2)从从hp指向的链表第一个结点开场,指向的链表第一个结点开场,依次从依次从hp链表中删除每个结点,将所删除的结点再依次插入链表中删除每个结点,将所删除的结点再依次插入到到head链表第一个结点之前,

93、直到链表第一个结点之前,直到hp链表为空时终了。链表为空时终了。8.枚枚举类举类型数据型数据枚枚举类举类型定型定义义枚枚举变举变量的命名、声明量的命名、声明枚枚举举常量的运用常量的运用枚枚举变举变量的量的赋值赋值及运用及运用【考【考题题解析】解析】填空填空题题假假设设已有定已有定义义“enumTPA,B,C;,那么,那么执执行行语语句句“printf(%dn“,A+1);后后输输出出结结果是果是(3)。答案答案:1单项选择题单项选择题.假假设设有枚有枚举类举类型定型定义义“enumlist1x1,x2,x3,x4=6,x5,x6;,那么枚,那么枚举举常量常量x2和和x6代代表的表的值值分分别别

94、是是。A.1,6B.1,8C.2,6D.2,8答案答案:B9.预处预处置命令置命令#define命令命令(2)#include命令命令【考【考题题解析】解析】填空填空题题C言言语语有效的有效的预处预处置命令置命令总总是以是以(4)开开头头。答案:答案:#填空填空题题执执行以下程序段中的行以下程序段中的语语句句“k=M*M+1;后后k的的值值是是(4)。#defineN2#defineMN+1k=M*M+1;答案:答案:6阅读阅读程序程序以下程序运以下程序运转转后的后的输输出出结结果是果是。#include#defineCount(n)+nmain()intx=-3,n=8;while(Coun

95、t(x)n-;printf(%dn,n);答案:答案:6阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏幕的出到屏幕的结结果果为为。#include#defineMAX(A,B)AB?2*A:2*Bvoidmain()inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);printf(%dn,t);答案:答案:10阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果是果是(5)。#defineEVEN(x)x%2=0?1:0main()if(EVEN(5+1)printf(Even);elseprintf(Odd);答案:答案:Odd全国全国选择题选择题以下表达中

96、以下表达中错误错误的的选项选项是是()。A)在程序中凡是以在程序中凡是以“#开开场场的的语语句行都是句行都是预处预处置命令行置命令行B)预处预处置命令行的最后不能以分号表示置命令行的最后不能以分号表示终终了了C)#defineMAX是合法的宏定是合法的宏定义义命令行命令行D)C程序程序对预处对预处置命令行的置命令行的处处置是在程序置是在程序执执行的行的过过程中程中进进展的展的答案:答案:D10.文件操作文件操作文件指文件指针变针变量的声明量的声明 重点掌握重点掌握 缓缓冲文件系冲文件系统统常用操作函数的运用:常用操作函数的运用:fopen(),fclose(),fprintf(),fscanf

97、(),fgetc(),fputc(),fgets(),fputs(),feof(),rewind(),fread(),fwrite(),fseek()【考【考题题解析】解析】填空填空题题知某程序中有知某程序中有预处预处置命令置命令“#include,为为使使语语句句“zx=fopen(c:a.txt“,r“);能正常能正常执执行,在行,在该语该语句之前必需有声明句之前必需有声明。答案答案:FILE*zx;填空填空题题假假设设需求翻开需求翻开D盘盘上上user子目子目录录下曾下曾经经存在的名存在的名为为abc.txt的文本文件的文本文件,先先读读出文件中数据,后追加写入新数据,出文件中数据,后追

98、加写入新数据,那么正确的函数那么正确的函数调调用用语语句是:句是:“fp=fopen(D:userabc.txt,);。答案答案:a+“单项选择题单项选择题知知A盘盘根目根目录录下有文本文件下有文本文件“data.txt且程序中且程序中已有声明已有声明“FILE*fp;,假,假设设程序需求先从程序需求先从“data.txt文件文件中中读读出数据,修正后再写入出数据,修正后再写入“data.txt文件中,那么文件中,那么调调用用fopen函数的正确方式是函数的正确方式是(28)。A.fp=fopen(a:data.txt,rw);B.fp=fopen(a:data.txt,w+);C.fp=fo

99、pen(a:data.txt,r+); D.fp=fopen(a:data.txt,r);答案答案:C单项选择题单项选择题以下表达中,正确的以下表达中,正确的选项选项是是。AC言言语语中的文件是流式文件中的文件是流式文件,只能只能顺顺序存取文件中数据序存取文件中数据B调调用用fopen函数函数时时假假设设用用“r或或“r+方式翻开一个文件,方式翻开一个文件,该该文件必需在指定存文件必需在指定存储储位置或默位置或默许许存存储储位置位置处处存在。存在。C当当对对文件文件进进展了写操作后,必需先封展了写操作后,必需先封锁该锁该文件然后再翻开,文件然后再翻开,才干才干读读到到该该文件中的第文件中的第1

100、个数据。个数据。D无无论论以何种方式翻开一个已存在的文件,在以何种方式翻开一个已存在的文件,在进进展了写操作展了写操作后,原有文件中的全部数据必定被覆盖。后,原有文件中的全部数据必定被覆盖。答案答案:B全国全国选择题选择题有以下程序有以下程序#includemain()FILE*fp;intal0=1,2,3,i,n;fp=fopen(d1.dat,w);for(i=0;i3;i+)fprintf(fp,%d,ai);fprintf(fp,n);fclose(fp);fp=fopen(d1.dat,r);fscanf(fp,%d,&n);fclose(fp);printf(%dn,n);程序的

101、运程序的运转结转结果是果是()。A)12300B)123C)1D)321答案:答案:B阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果是果是.#includevoidmain()doublex3=1.1,2.2,3.3,y;FILE*fp=fopen(d:a.out,wb+);fwrite(x,sizeof(double),3,fp);fseek(fp,2L*sizeof(double),SEEK_SET);fread(&y,sizeof(double),1,fp);printf(%.1f,y);fclose(fp);答案:答案:3.311.综综合合单单项项选选择择题题在在以以下下C

102、言言语语源源程程序序的的错错误误中中,通常不能在通常不能在编译时发现编译时发现的是的是 21 。A.括号不匹配括号不匹配B.非法非法标识标识符符C.数数组组元元素素下下标标值值越越界界D.程程序序构构造造不不完完好好答案:答案:C单单项项选选择择题题以以下下定定义义和和声声明明中中,语语法法均均有有错错误误的的选项选项是是 21 。int_f(intx)intf(intf)int2x=1;structforintx;B.C.D.答案:答案:B单项选择题单项选择题假假设设程序中已有相程序中已有相应应的声明,以下的声明,以下语语句中句中错误错误的的选项选项是是。printf(i=4?%6dn:%6

103、d,i);i=4?printf(%6dn,i):printf(%6d,i);for(i=10;i-)if(i=1)break;for(i=10;)if(i-);break;答案:答案:D全国填空全国填空题题以下程序的以下程序的输输出出结结果是果是_#includemain()intj,a=1,3,5,7,9,11,13,15,*p=a+5;for(j=3;j;j-)switch(j)case1:case2:printf(“%d,*p+);break;case3:printf(“%d,*(-p);答案:答案:9911阅读阅读程序程序以下程序运以下程序运转时输转时输出出结结果中第一行是果中第一行是

104、 1 ,第二,第二行是行是 2 ,第三行是,第三行是 3 。#includemain()inti,j,a33=0;for(i=0;i3;i+)for(j=0;j3;j+)switch(i-j+2)case0:case1:aij=1;break;case2:aij=2;break;case3:aij=3;break;case4:aij=5;break;for(i=0;i3;i+)for(j=0;j3;j+)printf(%4d,aij);printf(n);答案:答案:(1)211(2)321(3)532算法考试要求及考题解析算法考试要求及考题解析2019秋秋2019春春1.根本操作:交根本操作

105、:交换换,累加,累乘,累加,累乘【考【考题题解析】解析】交交换换数据数据阅读阅读程序程序以下程序运以下程序运转时输转时输出到屏幕的出到屏幕的结结果是果是(7)。#includevoidmain()inta=1,b=2;a+=b;b=a-b;a-=b;printf(%d,%dn,a,b);答案:答案:2,12.数数值计值计算算法算算法(1)求假求假设设干整数的最大公干整数的最大公约约数数(2)求一个十求一个十进进制表示整数的反序数制表示整数的反序数(3)一元非一元非线线性方程求根性方程求根 牛牛顿顿迭代法,半分区迭代法,半分区间间法法 (4)定定积积分分计计算算 梯形法,矩形法梯形法,矩形法 (

106、5)级级数数计计算算 递递推法推法 (6)矩矩阵转阵转置,置,矩矩阵阵乘法乘法【考【考题题解析】解析】求最大公求最大公约数数完善程序完善程序以下程序求一以下程序求一组整数的最大公整数的最大公约数。数。#includeintgcd(inta,intb)intr;while(1)r=a%b;a=b;(2);returna;voidmain()intx,i,a6=12,56,48,32,16,24;x=(3);for(i=1;i6;i+)x=gcd(4),ai);printf(%d,a0);for(i=1;i5;i+)printf(%d,ai);printf(%d)=%dn,a5,x);答案答案:(

107、1)b!=0(2)b=r(3)a0(4)x求一个十求一个十进制字符串表示整数的反序数制字符串表示整数的反序数阅读程序程序以下程序运以下程序运转后的后的输出出结果是果是(10)。#includemain()chara=369,*p=a;ints=0,t=1;while(*+p)t*=10;p-;while(t)s+=(*p-0)*t;p-;t/=10;printf(%dn,s);答案:答案:963一元非一元非线性方程求根牛性方程求根牛顿迭代法迭代法阅读程序程序用牛用牛顿迭代法求方程迭代法求方程3x3-3x2+x-1=0在在2.0附近的附近的一个一个实根,精度要求根,精度要求为10-5。函数。函数

108、F求求f(x)的的值,函数,函数F1求求f(x)的一的一阶导数数值。牛牛顿迭代公式如下:迭代公式如下:#include#includefloatF(floatx)returnx*(3*x*(x-1)+1)-1;floatF1(floatx)return9*x*x-6*x+1;floatnewtoon(floatx)floatf,f1,x0;do(1);f=F(x0);f1=F1(x0);x=(2);while(fabs(x-x0)1e-5);returnx;main()floatx0;scanf(%f,&x0);printf(Theresult=%.2fn,newtoon(x0);答案:答案:

109、(1)x0=x(2)x0-f/f1或或x0-F(x0)/F1(x0)级数数计算算递推法推法完善程序完善程序以下程序以下程序经过给出的公式出的公式计算的近似算的近似值,计算算过程在所加程在所加项的的值小于小于10-10时终止。止。#includemain()doublesum=0.5,t,t1,t2,t3;intodd=1,even=2;t=t1=t2=1.0;t3=0.5;while(t1e-10)t1=(1);odd+=2;even+=2;t2=1.0/odd;t3=(2);t=t1*t2*t3;sum+=t;printf(nPI=%.8lf,(3);答案:答案:(1)t1*odd/even

110、(2)t3*0.5*0.5(3)sum*63.非数非数值计值计算算法算算法(1)穷举穷举法找数法找数(2)排序排序 冒泡法,插入法冒泡法,插入法,选择选择法法 (3)在数在数组组中中查查找数据找数据 线线性法,折半法性法,折半法 (4)将一个数据插入有序数将一个数据插入有序数组组中中(5)删删除数除数组组中数据中数据(6)多个数多个数组组数据合并数据合并(7)数据数据统计统计(8)其他其他 素数判素数判别别,回文数判,回文数判别别,回文判,回文判别别,约约瑟夫瑟夫问题问题 (9)生成矩生成矩阵阵 杨辉杨辉三角形,三角形,)(10)模模拟拟十十进进制制长长整数算整数算术术运算运算(11)字符串字

111、符串处处置置 子串交子串交换换,加密,加密, 【考【考题题解析】解析】穷举法找数法找数阅读程序程序寻觅具有以下特性的四位正整数,其百位数具有以下特性的四位正整数,其百位数为0,去掉百位数,去掉百位数0可得到一个三位正整数,而可得到一个三位正整数,而该三位正整数乘三位正整数乘以以9等于原四位正整数。例如,等于原四位正整数。例如,60756759,所以,所以6075是是具有上述特性的正整数。具有上述特性的正整数。#includeintfun(intn)inta4,i,k;k=n;for(i=0;k0;i+)ai=(1);k/=10;if(2)&(a3*100+a1*10+a0)*9=n)retur

112、n1;elsereturn0;main()inti,n=0;for(i=1000;i10000;i+)if(fun(i)printf(%4dt,i);printf(n);答案答案(1)k%10(2)a2=0或或!a2穷举法找数法找数完善程序完善程序某餐某餐厅用苹果、桔子、香蕉、菠用苹果、桔子、香蕉、菠萝、梨五种水果、梨五种水果制造水果拼制造水果拼盘,要求每个拼,要求每个拼盘中恰有三种不同水果。以下程中恰有三种不同水果。以下程序的功能就是序的功能就是计算可以制造出多少种算可以制造出多少种这样的水果拼的水果拼盘并列出并列出组合方式。合方式。#includetypedefenumapple,oran

113、ge,banana,pineapple,pearFruit;main()(1)fruits=apple,orange,banana,pineapple,pear;Fruitx,y,z,p;intk=0,i;for(x=(2);x=pear;x+)for(y=x+1;y=pear;y+)for(z=y+1;z=pear;z+)printf(n%d%s%s%s,+k,fruitsx,fruitsy,fruitsz);答案:答案:(1)char*(2)apple或或0排序:排序:下下标为奇数的数奇数的数组元素排序,元素排序,选择法法阅读程序程序以下程序运以下程序运转时输出出结果是果是.#includ

114、evoidsort(inta,intn)inti,j,p;intt;for(i=1;in-1;i+=2)p=i;for(j=i+2;jap)p=j;if(p!=i)t=ai;ai=ap;ap=t;voidmain()ints=8,1,4,3,n=4,k;sort(s,n);for(k=0;kn;k+)printf(%4d,sk);printf(n);答案答案:8341排序排序选择法法完完善善程程序序以以下下程程序序对二二维数数组a中中存存储的的NN矩矩阵做做如如下下操操作作:先先将将每每一一行行中中值最最大大的的元元素素与与该行行位位于于主主对角角线处的的元元素素交交换值,然然后后对主主对角角

115、线上上的的一一切切元元素素排排序序使使其其自自左左上上角角到到右右下下角角升升序序陈列列,最最后后输出出排排序序后后主主对角角线上上各各元素的元素的值。试完善程序以到达要求的功能。完善程序以到达要求的功能。#include#defineN5voidfun(intxN,intn)inti,j,t,arr,col;for(i=0;in;i+)arr=xi0;col=0;for(j=0;j=arr)arr=xij;(1);t=xii;(2);xicol=t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(3)t=xii;xii=xjj;xjj=t;voidmain()intaN

116、N=10,25,24,13,23,11,22,12,21,14,20,15,19,16,18,17,9,4,5,3,2,1,6,7,8,i;fun(a,N);for(i=0;ixjj构造数构造数组排序:按成排序:按成员x值升序,升序,x值一一样的按成的按成员y值升序升序阅读程程序序以以下下程程序序运运转时输出出结果果中中第第一一行行是是(1),第第二二行是行是(2)第三行是第三行是(3).#includetypedefstructintx;inty;S;voidfun(Spp,intn)inti,j,k;St;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(ppj

117、.xppk.x)|(ppj.x=ppk.x&ppj.yppk.y)k=j;if(k!=i)t=ppi;ppi=ppk;ppk=t;voidmain()Sa5=3,2,3,1,1,2,2,4,2,3;inti,n=5;fun(a,n);for(i=0;in;i+)printf(%d,%dn,ai.x,ai.y);答案:答案:(1)1,2(2)2,3(3)2,4二二维维数数组组数据数据变换变换:最小:最小值值所在行与最后一行数据交所在行与最后一行数据交换换,最大最大值值所在列与最后一列数据交所在列与最后一列数据交换换阅读阅读程序程序以下程序运以下程序运转转后的后的输输出出结结果第一行是果第一行是(

118、1);第二行是第二行是(2);第三行是;第三行是(3)。#includevoidsot(inta33)inti,j,i0,j1,min,max,temp;min=max=a00;for(i=0;i3;i+)for(j=0;j3;j+)if(aij=max)max=aij;j1=j;for(j=0;j3;j+)temp=ai0j;ai0j=a2j;a2j=temp;for(i=0;i3;i+)temp=aij1;aij1=ai2;ai2=temp;for(i=0;i3;i+)for(j=0;j3;j+)printf(%d,aij);printf(n);main()intb33=3,2,1,6,5

119、,4,9,8,7;sot(b);答案:答案:(1)789(2)456(3)123排序排序完善程序完善程序以下程序的功能是以下程序的功能是对a数数组a0an-1中存中存储的的n个整数从小到大排序。排序算法是:第一趟个整数从小到大排序。排序算法是:第一趟经过比比较将将n个整数中的最小个整数中的最小值放在放在a0中,最大中,最大值放在放在an-1中;第二中;第二趟趟经过比比较将将n个整数中的次小个整数中的次小值放在放在a1中,次大中,次大值放在放在an-2中;中;,依次,依次类推,直到待排序序列推,直到待排序序列为递增序列。增序列。试完善程序以到达要求的功能。完善程序以到达要求的功能。#includ

120、e#defineN7voidsort(inta,intn)inti,j,min,max,t;for(i=0;i(1);i+)(2);for(j=i+1;jn-i;j+)if(ajamax)max=j;if(min!=i)t=amin;amin=ai;ai=t;if(max!=n-i-1)if(max=i)t=amin;amin=an-i-1;an-i-1=t;elset=amax;amax=an-i-1;an-i-1=t;答案:答案:(1)n/2或或n-i或或n-i-1(2)min=max=ivoidmain()intaN=8,4,9,3,2,1,5,i;sort(a,N);printf(so

121、rted:n);for(i=0;iN;i+)printf(%dt,ai);printf(n);字符串排序字符串排序完善程序完善程序程序运程序运转时输出出结果第一行果第一行(1)第二行是第二行是(2)。#include#includevoidfun(charstr20,intn)inti,j,k;chars20;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(strcmp(strj,strk)0)k=j;strcpy(s,stri);strcpy(stri,strk);strcpy(strk,s);main()charstr620=PASCAL,BASIC,FORT

122、RAN,C,COBOL,Smalltalk;inti;fun(str,6);for(i=0;i6;i+)printf(%sn,stri);答案:答案:(1)BASIC(2)C删除数除数组中中满足足给定条件的一切数据定条件的一切数据阅读程序程序以下程序运以下程序运转时输出出结果的第一行是果的第一行是1;第二行是;第二行是2。删除数除数组中一切偶数中一切偶数#includeintfun(int*x,intn)inti,j;for(i=j=0;in;i+)if(*(x+i)%2)*(x+j+)=*(x+i);returnj;main()inta10=1,5,2,3,8,3,9,7,4,10,n,i;

123、n=fun(a,10);for(i=0;in;i+)printf(%5d,ai);if(i+1)%3=0)printf(n);答案:答案:(1)153(2)397数数组数据合并数据合并阅读程序程序以下程序运以下程序运转时输出出结果的第一行是果的第一行是(1);第;第二行是二行是(2);第三行是;第三行是(3)。#include#defineN10intmerge(inta,intb,intc,intmN+1)inti=0,j,k;while(k=m0i)!=2)j=m1i;if(k=0)ci=aj;elseci=bj;i+;returni;main()intaN=1,3,5,bN=2,4,6,

124、c2*N,i,n;intm2N+1=0,1,0,1,0,1,2,0,0,1,2,2,1,-1;n=merge(a,b,c,m);printf(%dn,n);for(i=0;in;i+)printf(%d,ci);if(i+1)%3=0)printf(n);答案:答案:(1)6(2)123(3)654在数在数组中中查找数据找数据阅读程序程序以下程序运以下程序运转时,假,假设在在键盘上上输入入2,那么,那么输出是出是(1);假;假设在在键盘上上输入入i,那么,那么输出是出是(2)。#include#includeintstrch(char*s,charch)inti;for(i=strlen(s)

125、;i=0;i-)if(si-1=ch)returni;if(i0)return0;main()charch,s1=as123d2nfghjkm;intk;printf(inputch:);ch=getchar();k=strch(s1,ch);if(k!=0)printf(k=%dn,k);elseprintf(notfoundn); 答案: (1) k=7 (2) not found约瑟瑟夫夫问题:n个个人人报数数,报到到3的的人人出出列列,剩剩下下人人继续报数数,直到一切人出列直到一切人出列为止止,显示依次出列人示依次出列人编号号阅读程程序序以以下下程程序序运运转时假假设输入入8,那那么么

126、输出出结果果中中第第一行是一行是1,第二行是,第二行是(2),第三行是,第三行是3。#includevoidmain()intk,i,m,n,num20;scanf(%d,&n);for(i=0;in;i+)numi=i+1;i=k=m=0;while(mn-1)if(numi!=0)k+;if(k=3)printf(%4d,numi);numi=0;k=0;m+;if(m%3=0)printf(n);i+;if(i=n)i=0;i=0;while(numi=0)i+;printf(%4d,numi);答案答案:(16)361(17)528(18)47生成矩生成矩阵杨辉三角形三角形阅读程序程序

127、以下程序运以下程序运转时输出到屏幕的出到屏幕的结果第二行是果第二行是(1),第四行是,第四行是(2)。#include#defineN6voidmain()inti,j,aN+1N+1;for(i=1;i=N;i+)aii=1;ai1=1;for(i=3;i=N;i+)for(j=2;ji;j+)aij=ai-1j-1+ai-1j;for(i=1;i=N;i+)for(j=1;j=0;i-)ci=(ai-0)+(bi-0)+k;k=(2);ci=ci%10+0;if(k)for(i=n+1;i0;i-)ci=(3);ci=k+0;答案答案:(1)intn(2)ci/10(3)ci-1voidm

128、ain()charp180=1000000001,p280=9000000009,p380;inti,x=strlen(p1),y=strlen(p2);if(x=0;i-)p1i+y-x=p1i;p1i=0;(4);if(xy)for(i=y;i=0;i-)p2i+x-y=p2i;p2i=0;add(p1,p2,p3,x);puts(p3);答案答案:(4)x=y字符串字符串处置:加密置:加密 完完善善程程序序 以以下下程程序序中中函函数数replacereplace的的功功能能是是:将将字字符符串串s s中中一一切切属属于于字字符符串串s1s1中中的的字字符符都都用用s2s2中中的的对应位

129、位置置的的字字符符交交换。假假设s s为“ABCBA“ABCBA,s1s1为“AC“AC,s2s2为“ac“ac,那那么么调用用replacereplace函函数数后后,字字符符串串s s的的内内容容将将变换为“aBcBa“aBcBa。试完善程序以到达要求的功能。完善程序以到达要求的功能。 #include#defineMAX20voidreplace(char*s,char*s1,char*s2)char*p;for(;*s;s+)p=s1;while(*p&1)p+;if(*p)*s=2;voidmain()charsMAX=ABCBA,s1MAX=AC,s2MAX=ac;3;printf

130、(Thestringofsis:);printf(%sn,s);答案答案:(1)*p!=*s(2)*(s2+p-s1)(3)replace(s,s1,s2)字符串字符串处置:数据置:数据统计完善程序完善程序统计一个字符串中数字字符一个字符串中数字字符“0到到“9各自出各自出现的次的次数,数,统计结果保管在数果保管在数组count中。例如,假中。例如,假设字符串字符串为“1enterschar4543123564879ffgh,那么,那么统计结果果为:1:22:13:24:35:26:17:18:19:1。#includevoidfun(char*t,intcount)char*p=t;whil

131、e(1)if(*p=0&*p=9)count(2)+;p+;voidmain()chars80=1enterschar4543123564879ffgh;intcount10=0,i;fun(s,count);for(i=0;i10;i+)if(counti)printf(%d:%d,i,counti);答案:答案:(1)*p或或*p!=0或或p0!=0(2)*p-0或或p0-0数据数据统计完善程序完善程序程序功能:程序功能:选票票统计。二。二维数数组s中保管了投票中保管了投票后后10张有效有效选票上所填写的候票上所填写的候选人姓名,构造数人姓名,构造数组stat中保中保管管统计结果。程序运果

132、。程序运转后的后的输出出结果是果是“liu:2wang:5zhao:3。#include#includetypedefstructcharname20;/*候候选人姓名人姓名*/intcount;/*候候选人得票数人得票数*/COUNT;intcount(charx20,intn,(1)inti,j,k=0;for(i=0;(2);i+)for(j=0;j=k)(4);stk.count+;k+;returnk;main()chars1020=liu,wang,zhao,zhao,wang,liu,wang,zhao,wang,wang;COUNTstat5=0;inti,n;n=count(

133、s,10,stat);for(i=0;in;i+)printf(%s:%dt,stati.name,stati.count);答案:答案:(1)COUNTst或或COUNT*st(2)in(3)stj.count+(4)strcpy(stk.name,xi)字符串字符串处置:子串交置:子串交换完善程序完善程序以下程序中函数以下程序中函数find_replace的功能是:在的功能是:在s1指指向的字符串中向的字符串中查找找s2指向的字符串,并用指向的字符串,并用s3指向的字符串交指向的字符串交换在在s1中找到的一切中找到的一切s2字符串。假字符串。假设s1字符串中没有出字符串中没有出现s2字符串

134、,那么不做交字符串,那么不做交换并使函数前往并使函数前往0,否那么函数前往,否那么函数前往1。试完善程序以到达要求的功能。完善程序以到达要求的功能。#include#includeintfind_replace(chars1,chars2,chars3)inti,j,k,t=0;chartemp80;if(s10=0|s20=0)returnt;for(i=0;s1i!=0;i+)k=0;j=i;while(s1j=s2k&s2k!=0)j+;(1);答案:答案:(1)k+if(s2k=0)strcpy(temp,&s1j);(2);i=i+strlen(s3);(3);t=1;returnt

135、;voidmain()charline80=Thisisatestprogramandatestdata.;charsubstr110=test,substr210=actual;intk;k=find_replace(line,substr1,substr2);if(4)puts(line);elseprintf(notfoundn);答案:答案:(2)strcpy(&s1i,s3)或或strcpy(s1+i,s3)(3)strcpy(&s1i,temp)或或strcpy(s1+i,temp)(4)k或或k=1或或k!=0或或k0字符串字符串处置:数字字符串置:数字字符串转换为整数整数完善程

136、序完善程序以下程序中函数以下程序中函数longfun(char*str)的功能是:的功能是:自左至右取出非空字符串自左至右取出非空字符串str中的一切数字字符,将中的一切数字字符,将这些数些数字字符字字符组成一个不超越成一个不超越8位的十位的十进制整数并制整数并输出。例如,字出。例如,字符串符串str为“efg32gh76.jbejing08t5y4u2,程序,程序输出:出:32760854。#includelongfun(char*str)inti=0;longk=0;char*p=str;while(*p!=0&(1)if(*p=0&*p=9)k=(2)+*p-0;+i;(3);retur

137、nk;voidmain()charx=efg32gh76.jbejing08t5y4u2;printf(%ldn,fun(x);答案:答案:(1)i8(2)k*10(3)p+补充:回文数判充:回文数判别完善程序完善程序以下程序以下程序输出出6位整数中的一切回文数。假位整数中的一切回文数。假设一一个整数等于它本身的反序数,那么称个整数等于它本身的反序数,那么称该整数整数为回文数。例回文数。例如,如,123321是回文数。是回文数。#includeintmain()longx,y=0,i;for(i=100000;i0)y=y*10+x%10;(2);if(i=y)printf(t%ld,i);return0;答案答案:(1)y=0(2)x=x/10

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号