ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:1.06MB ,
资源ID:8868172      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8868172.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C练习题全解.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C练习题全解.docx

1、C 练习题全解1简答题学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序: 参考解析:【参考答案】 【考点分析】本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。【解题思路】该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记

2、录,并存入b中。【解题宝典】对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。如何对结构体数组进行类似操作呢?掌握以下语句: 2单选题 下列定义数组的语句中,正确的是( )。 参考答案:A参考解析:数组说明的一般形式为:类型说明符数组名常量表达式。B选项中N是变量,不能用变量定义数组长度。c选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。3单选题 若有以下程序段 则以下选项中值为6的表达式是A.P-nB.(*p).nC.p-n+D.+(P-n)参考答案:D参考解析:本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中P-n为5,+(

3、P-11)为6,所以D选项正确。4单选题 有以下程序 程序运行后的输出结果是A.4B.8C.9D.6参考答案:B参考解析:本题考查宏定义,宏定义只是做个简单的替换,执行NUM=(N+l+1)*N+1/2=8,选项B正确。5单选题 有以下程序 程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A.a.aB.*P.aC.P-aD.(*p).a参考答案:B参考解析:本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,P为指针,* P为结构体变量,那么*P.a可以表示为结构体中成员a的数据。6单选题 若有定义语句:double a,*P=&a;以下叙述中错误的是( )。A.定义语句

4、中的*号是-个间址运算符B.定义语句中的木号是-个说明符C.定义语句中的P只能存放double类型变量的地址D.定义语句中,P=&a把变量a的地址作为初值赋给指针变量P参考答案:A参考解析:在变量定义double a,*P:&a;中,号是一个指针运算符,而非间址运算符,所以A错误。7单选题 设有以下程序段: 以下叙述正确的是( )。A.只有变量c的定义是合法的B.只有变量a,b,c的定义是完全合法的C.所有变量的定义都是完全合法的D.只有变量a,b的定义是完全合法的参考答案:D参考解析:float“8=1.0,2.0;定义了一个包含8个float型元素的数组,并初始化了数组的前2项,其他项是随

5、机数。int b1=0,定义了只有一个int型元素的数组,并初始化为0。char c=A”,”B;定义一个char型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。char d=1;定义一个char型变量,但是初始化赋值字符串,类型不兼容,编译出错。因此只有a,b定义和初始化正确。故答案为D选项。8单选题 有以下程序: 程序运行后的输出结果是( )。A.1002,ZhangDa,1202.0B.1002,ChangRon9,1202.0C.1001,ChangRon9,1098.0D.1001,ZhangDa,1098.0参考答案:D参考解析:本题考查结构体的相关操作以及

6、传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。9单选题 有以下程序: 则以下函数调用语句错误的是( )。A.k:f(a,B.;B.k:add(a,B.;C.k=(*f)(a,B.;D.k=*(a,B.;参考答案:D参考解析:D选项中+f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。10单选题 程序调试的任务是( )。A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误参考答案:D参考解析:程序调试的任务是诊断和改正程序中的错误。1填空题下

7、列给定程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字符09,则将0转换成9,1转换成8,2转换成7,9转换成0;若是其他字符则保持不变;并将转换后的结果作为函数值返回。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序: 参考解析:【参考答案】(1)char(2)ch=9 (3)O【考点分析】本题考查:函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别;if语句条件表达式,本题的条件表达式是判断数字字符;函数返回值,其一般形式为“return表达式;”。【解题思路】填空l:函

8、数定义时,类型标识符指明了函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入char。填空2:通过if条件语句判断字符串中字符是否为数字字符,即大于等于字符0,同时小于等于字符9。填空3:return语句完成函数返伺操作,要实现字符转换,完整语句为return9一(ch一0)。【解题宝典】 .有参函数定义,其一般形式为:类型标识符函数名(形式参数列表) 声明部分语句在形参列表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号分隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参也是变量,必须在形参列表中给出类型说明。2单选题 以下叙述中错误的是( )。

9、A.gets函数用于从终端读人字符串B.getehar函数用于从磁盘文件读人字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件参考答案:B参考解析:本题考查字符处理函数和文件操作函数。属于基础知识,其中B选项9etchar函数是用于从终端读人一个字符。3单选题 以下选项中合法的实型常量是()A.0B.3.13e-2.1C.914D.2.0*10参考答案:C参考解析:A选项为整型数据。B选项中e后面必须为整数。D选项是表达式,不是常量,所以选择C。4单选题 有以下程序段:以下选项中不能正确引用字符串的是( )。A.3B.p3C.str2D.*P参考答案

10、:A参考解析:t p3一p30是一个字符,不是字符串,选项A错误。P3和str2和+P分别代表了ddd,eec,flaa。答案为A选项。5单选题 有以下程序(strcpy为字符串复制函数,streat为字符串连接函数) 程序运行后的输出结果是A.a12xyzB.bc2yzC.a2yzD.12yz参考答案:C参考解析:本题考查字符串处理函数strcpy和streat,执行完strcpy(a+1,b+2);后,a变为a2,执行完strcat(a,c+1)后,a变为a2yz,所以答案为C选项。6单选题 在软件开发中,需求分析阶段产生的主要文档是( )。A.软件集成测试计划B.软件详细设计说明书C.用

11、户手册。D.软件需求规格说明书参考答案:D参考解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。7单选题若有以下程序 则程序的输出结果是A.1,2,3,4B.2,1,2,-1C.5,1,2,-1D.2,2,2,4参考答案:参考解析:第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式。只有两个运算对象均非零,才为真,第一个表达式c=3,不成立,不再判

12、断第二个运算对象,所以不执行d=-1操作和a=5操作。所以结果为选项D。8单选题 下面选项中的程序段,没有编译错误的是 参考答案:A参考解析:本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义charmark,必须指定长度或者直接初始化。9单选题 以下选项中关于程序模块化的叙述错误的是( )。A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C.把程序分成若干相对独立的模块,可便于编码和调试D.可采用自顶向下、逐步细化的

13、设计方法把若干独立模块组装成所要求的程序参考答案:A参考解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法。所以选项A中“自底向上”的说法是错误的。10单选题 已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。A.C=(。A+C.%26一aB.c=c+32C.c=c一A+aD.c=(c一A)%26+-a参考答案:A参考解析:根据题意可知,小写字母比与之对应的大写字母的ASC码大32。A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义,所以选择A选项。1单选题以下叙述中正确的

14、是A.如果函数带有参数,就不能调用自己B.所有函数均不能接受函数名作为实参传入C.函数体中的语句不能出现对自己的调用D.函数名代表该函数的入口地址参考答案:B参考解析:本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传人,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。2单选题 有以下程序:程序运行时,输入的值在哪个范围才会有输出结果( )。A.小于3的整数B.不等于10的整数C.大于3或等于10的整数D.大于3且不等10的整数参考答案:D参考解析:根据代码可知如果x的值小于等于3,执行空语句,不进行打印操作。如果x的值大于3,再判断x的值是否不等于l0,如果不等

15、于l0就打印X的值,所以选择D选项。3单选题 设有以下语句:int a=1,b=2,c;c=a(ba与P+-a都是合语法的表达式,但二者不等价B.语句+P-a;的效果是使P增1C.语句+P-a;的效果是使成员a增1D.语句P-s+;等价于(*P)-s+;参考答案:C参考解析:本题考查结构体变量的引用,+P-a的效果是使成员a增1,P+-a不合法,* P-s+为字符e,与(* P)-s+不等价。8单选题 有以下程序: 执行时输入:6,则输出结果是( )。A.6B.8C.7D.5参考答案:C参考解析:后置自增运算:k+表示先运算,后自如。if(t+6)p血ff(“%dn”,t);else prin

16、ff(“%d、n”,t);t的初值为6,t+av)表达的是当x数组中的数大于平均值时,应该把这些大于平均值的数放在y数组的前半部分,因而此空应该填yj+。填空3:此空表明当xi不等于什么时,Xi中的数要赋值给Y数组,由题意可知此空只能填写一1。2单选题 有以下程序:程序运行后的输出结果是( )。A.10,One*Dream!B.9,One*Dream!C.9,One*WorldD.10,One*World参考答案:A参考解析:P是指向二维字符数组第二行One+Dream!的数组指针,所以长度是l0,打印输出的也是该字符串。3简答题学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体

17、数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:参考解析:【考点分析】本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。【解题思路】该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。【解题宝典】对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。如何对结构体数

18、组进行类似操作呢?掌握以下语句:4单选题 有以下程序:程序运行后的输出结果是( )。A.7B.10C.8D.9参考答案:D参考解析:调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c);即调用f(3,6)函数返回9。5单选题 有以下程序 程序的输出结果是A.9B.14C.10D.15参考答案:D参考解析:考查函数的递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)=5+(4+(3+(2+fun(1)=15。所以答案为D选项。1单选题 表达式:(im)(double)9/2)一9%2的值是( )。A.0B.3C.4D.5参考答案:B参考

19、解析:先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一l的值为3,所以选择B选项。2单选题 有以下程序:程序运行后的输出结果是( )。A.LoB.30C.0D.64参考答案:D参考解析:本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2,第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以S的值为64.3单选题 有以下程序:程序运行后的输出结果是( )。A.8B.2C.4D.1参考答案:A参考

20、解析:第一次调用m=f(f(f(1),第二次为m=f(f(2),第三次为m=f(4),即返回值为8。4单选题 若变量已正确定义,以下选项中非法的表达式是A.a!=4|bB.a=1/2*(x=Y=20,x*3)C.a %413)A +32参考答案:B参考解析:A选项中a即表示a为字符常量,再给a赋值1/2*(x=Y=20,x*3),是不正确的。因此B选项正确。5单选题 若有以下程序则程序的输出结果是A.0,3,2,2,1,0,3,1,B.1,4,3,3,2,1,4,2,C.5,6,5,6,5,6,5,6,D.6,7,6,7,6,7,6,7,参考答案:A参考解析:本题考查二维字符数组的运用,题目中

21、首先定义了一个一维字符数组,从三层for循环可以看出要找的是w数组中每个字符在二维数组中的位置,比如d字母,在a数组中就是0,3其他字符类似,所以本题答案为A。1单选题 下面关于“EOF”的叙述,正确的是A.EOF的值等于0B.EOF是在库函数文件中定义的符号常量C.文本文件和二进制文件都可以用EOF作为文件结束标志D.对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF参考答案:B参考解析:在c语言中,或更精确地说成c标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数

22、据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0255,不可能出现-1,因此可以用EOF作为文件结束标志。2单选题 若有定义:int a,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是( )。A.3 5B.3,5C.3;5D.35参考答案:C参考解析:输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。3单选题 有以下程序: 程序运行后的输出结果是( )。A.02356B.0235C.235D.2356参考答案:C参考解析:k的值为5,逐个对caBe语句进行匹配,均不匹配,执行default下的语句n=0;k一一。再执行case2:ca804:后面的语句n+=2;k一一;。执行break语句跳出switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k0&ll0&n5,所以结束循环。整个程序的打印结果为235。4单选题 有以下程序: 程序运行后的输出结果是( )。A.9B.8C.7D.10参考答案:A参考解析:题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第-次调用函数执行n+=a+;时a先与n相加在再进行自增。n的值为4,a的值为2,且a变量执行完后空间没有释放。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1