Dev-C++基础教程.docx
《Dev-C++基础教程.docx》由会员分享,可在线阅读,更多相关《Dev-C++基础教程.docx(226页珍藏版)》请在三一办公上搜索。
1、Dev-C+基础教程习题解答庄燕文王素琴王碧艳编著刖百这是一本与Dev-C+基础教程配套的习题解析。本书主要针对中小学生学习了DEV-C+语法、语义、常用算法后,引导学生用程序设计的思维和逻辑解决问题。木书的习题从题意出发,分析解题的思路和算法,然后给出参考程序,重点帮助读者理解算法原理,教会读者很多实用的编程技巧,培养良好的编程习惯。本书的习题内容丰富,读者可以自己动手实践编写程序,然后和题解中的方法比较,希望读者在理解该书题解的同时,能锐意开掘,探本索源,找到更好的解答办法,写出更高效的程序。该习题涵盖中学生信息学奥林匹克竞赛中的很多基础算法,可以做为中小学生学习程序设计的入门习题,也可以
2、做为本科生初学程序设计的课后习题。目录第1章Dev-C+入门第2章Dev-C+语言简介第3章顺序结构第4章选择结构第5章循环结构第6章函数第7章数组第8章指针第9章字符串第10章文件第U章输入与输出流第12章链表第1章Dev-C+入门1 .解析该题考察学生用DeV-C+编写简单的程序和C+的基本语法。参考程序预编译命令使用名字空间定义一个常数变量pi主程序/输出”输入半径的提示”/输入半径/计算面积/计算周长#includeusingnamespacestd;constfloatPI=3.14;intmain()(floats,rtc;coutr;s=PI*r*r;c=2*PI*r;cout,
3、s=,sendl;coutc=cendl;SyStem(pause);return0;I输出结果1/显示/用户输入,表示圆的半径/显示面积/显示周长pleaseinputradius:5s=78.5c=31.42 .问题分析凡是数学中已经定义的字母,在程序设计中一律沿用。如用a表示边长用S表示面积,用C表示周长。算法设计s=a*a,c=4*a.参考程序#includeusingnamespacestd;intmain()(floata,s,c;COUt输入正方形的边长:;cina;s=a*a;c=4*a;cout,s=,sendl;coutc=cendl;system(pause);retur
4、nO;第2章Dev-C+语言简介1 .解析C+标识符命名规则:(1)必须由一个字母(az,AZ)或下划线(_)开头(2)标识符的其它部分可以用字母,下划线或数字(09)组成(3)区分大小写(4)不能与C+关键字相同参考答案合法标识符:worth,begin,a34非法标识符:false,x*y,$we,char,.set2 .(1)31(5%2)解析1这是一个算术表达式。分析其计算结果时首先要掌握两点:算术运算符的优先级。C+的算术运算符中,()的优先级最高,*、/、的优先级比+、一高,且它们都是从左到右结合的运算符两侧类型不同的运算数,在运算中给出类型转换的规律。运算所得结果的类型与运算数类
5、型一致。在第一题中,括号的优先级最高,先求5%2=1,原表达式变成31/1,根据规定的除法运算规律,所得结果的类型与运算数类型一致,因为7”号两侧都是整型,因此结果也应该整型。求得31;答案31(2) 17-4*3/7解析按照优先级的高低,*的优先级比-高,先算*法,4*3=12,原表达式变成17-12/7。/的优先级比-高,再算12/7,根据规定的除法运算规律,所得结果的类型与运算数类型一致,因为“尸号两侧都是整型,因此结果也应该整型。计算得12/7=1,原表达式变成17-1,最后算17-1得16答案16(3) 31.0(5%2)解析括号的优先级最高,先算括号里面的,5%2=1,原表达式变成
6、31.0/1,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算符两边的类型取得一致然后进行运算,经转换后表达式为31.0/1.0,最终结果是31.0答案31.0(4) 17-4*3.0/7解析由于*的运算级高于先算4*3=12.0,原表达式变成17-12.0/7,/的优先级比-高,计算12.0/7,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算符两边的类型取得一致然后进行运算,12.0/7.0=1.71429,原表达式变成17-1.71429,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,
7、使运算符两边的类型取得一致然后进行运算,经转换后表达式为17.00000-1.71429,最终结果是15.2857答案15.28573 .(1)解析在初学者阶段,读者可能只接触到MAIN(主)函数,但作为基础知识,读者应该明确且牢记:c+程序是由函数组成的。每个c+语言的源程序可以包含多个函数,但只能有一个主函数。因此选A是片面的。在c+程序中不存在“过程”这一程序结构。在正确的程序设计中,要求对源程序有详尽的注释,以便于阅读和软件的维护:C+程序中的注释行,由/*开头,由*/结束:7”和”必须紧接养,在这两个字符之间不得插入空格。在选项D中“/“和”*”之间都插有空格,很多初学者常犯这样的错
8、误。以上分析可知,本题的正确答案是B。(2)解析将数学表达式写出c+语言表达式是编写c+程序的基本功之一。此例中给出了一个代数式,用c+语言表示应该是一个算术表达式。在书写算术表达式时,不允许使用分数的形式,只能按运算的先后顺序写在一行上,必须要添加圆括号以保证运算的正确性。由选项可知,同一个数学算式可以写成不同的c+语言表达式。选项A中,由于除号后的c*d两侧未加圆括号,按照运算规则,将先算出(a*b)的乘积,ab,d然后被C除,计算的结果再乘上d。它所描述的代数式为C,与原算式不符,显然是错误的。选项B中,按优先级应当先做(C*D)运算,然后将它去除a*b的乘积,因此是正确的。选项C中,按
9、从左到右的顺序,先做a/c的运算,描述的代数式为Cd,与原式等效。选项D中,按从左到右的顺序,先做a*b然后除c,再除d。运算的过程相当于代数式,11QDcd,因此与原算式等效。题目要求选出不正确的,所以本题的答案是A。(3)解析C+语言中的表达式种类较多,本章中涉及的就有算术表达式、强制类型转换表达式、赋值表达式以及逗号表达式等。读者应该记清它们各自的特征。本例中选项A末尾有一个分号,从而构成了赋值语句而不是表达式。选项B是由2个表达式构成的逗号表达式:第1个是赋值表达式、第2个是由自加运算符构成的表达式,语法上没有错误。选项C中使用了类型说明符血,若作为强制类型转换表达式,int两侧必须带
10、有圆括号,这里没有括号是不合法的。选项D从形式上看似乎是一个赋值表达式,因为C+语言中允许诸如a=b=2这类的赋值表达式。但C+语言也明确规定:赋值运算符(=)左侧只能是变量不允许是常量和算术表达式。选项D的a+7=c+d在赋值号左侧出现了算术表达式,因此是不合法的。本题的正确答案为B。4 .(1)解析C+语言规定:可以在定义的同时给变量赋初值。其形式为:类型名变量名=数值,变量名=数值,按此格式可得本例题所要求的定义语句;inta=0,b=0;需要提醒读者的是:对于定义时没有置初值的变量,其值是不确定的随机数,使用时特别加以注意。答案inta=0,b=0;(2)解析这是一个算术表达式。分析其
11、计算结果时首先要掌握两点:算术运算符的优先级。运算符两侧类型不同的运算数,在运算中给出类型转换的规律。本例中涉及了加、除以及求余三种运算。按运算的优先级先计算1/2,根据规定除法运算所得结果的类型与运算数类型一致,因为/”号两侧都是整型,因此结果也应该整型。故1/2的结果不是0.5而应舍去小数部分得到结果0;按优先级,接下来做求余运算56%10,56除10以后的余数是6,因此所得结果为整数6,现在表达式变成了3.5+0+6。按+号的综合性,应该自左至右进行运算,因此先做3.5+0,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算符两边的类型取得一致然后进行运
12、算,如3.5+0+6,则首先把O转换为实型数0.0,然后进行运算,得3.5;接着进行3.5+6的运算,经转换后表达式为3.5+6.0,最终结果是9.5。(3)解析在c+语言中,凡是双目运算符都可以和赋值运算符一起组成复合运算符。在赋值表达式中可以包含这些复合运算符,且运算符按“自右至左”的组合顺序进行。因此,表达式k-=k-=k+l的求解过程为:先计算最右边的“k-=k+l,相当于k=k-(k+l),把7带入表达式中:k=7-(7+l),结果把-1赋给了ko再计算“k+=l”,相当于k=k(-l),把当前k的值(-1)带入表达式中,k=-l+(-l),最后把.2赋给了匕故本题的正确答案是2。(
13、4)解析先做a=a-a*a;把12带入得到a=12-12*12,a=-132.Ma=a+(-132),a=-132-132=-264故本题的正确答案是D。5 .(1)解析考察C+的基本语法。该题主要有两点问题。main函数是C+程序的主函数,函数名称后面要有0,函数名称前面有类型说明符int。完整的形式应为intmain()COUt插入符的方向有问题,应该为COUtVVV;答案#includeusingnamespacestd;intmain改成intmain()(inta,b,c,v;a=2,b=3,c=4v=a*b*c;COUtV;改成COUtV;system(pause);return0
14、;)(2)解析考察C+的基本语法。该题主要有两点需要注意的。C+的输入输出流头文件中规定了cin,cout是小写形式,若改成大写,系统会默认成变量处理,会出现语法错误C+变量是区分大小写的,所以使用时要多小心。不然会出现没有定义的错误。答案#includeusingnamespacestd;intmain()(floatL,W,H,V;CoUtLWH;改为cinLWHv=L*W*H;改为V=L*W*Hcoutvendl;改为coutVendl;system(pause);return0;)(3)解析考察C+的const常量。const常量必须在第一次声明时就初始化,用变量或常量初始化都可以,只
15、是初始化一次以后它的值就不能再改变了。若要改变它的值,使用普通变量即可。答案intmain()(constintw=5:/const常量不能修改,改为intw=5floata;a=2*w;w+;coutw,aendl;SyStem(pause”);return0;第3章顺序结构1解析考察变量间的交换,算法如下:(1)开辟工作单元E。(2)E-A;A-B;B-CC-D;D-E。交换过程读者可以参考教材第三章例3-1中图3-3。参考程序#include预编译命令usingnamespacestd;/使用名字空间intmain()主函数(inta=89,b=76,c=95,d=62,e;变量申明和初
16、始化couta=a,b=,b,c=Cd=dendl;输出变量的初始值e=a;a=b;b=c;c=d;d=e;couta=a,b=b,c=c,d=dendl;输出移动后变量的值SyStem(pause);return0;)输出结果a=89b=76c=95d=62交换前的值a=76b=95c=62d=89交换后的值2解析本题主要考察变量的格式化输出。C+标准库提供的支持格式输出的操作符函数有控制输出宽度、填充字符和精度的方法。需要注意的是在使用这些操作符函数时需要包含头文件iomanip。这里给读者介绍下输出宽度的函数:SetW(宽度值)和设置输出填充字符的函数:Setfm(填充字符)。输出宽度的
17、函数:seiw(宽度值),如输出COulsetw(5)3endl;就表示将整数3以宽度5的格式输出,当需要的宽度小于5时,左补0。这样就实现了在整数5左边输出4个空格的目的。运行结果为口口口口5。设置输出填充字符的函数:SetfiH(填充字符)此函数常与SetWO函数联合使用,达到向不满设置输出宽度的空间填入指定字符的目的,不设置则填充空格。coutsetw(5)setfill(#)123endl,指将整数123以宽度5的格式输出,运行结果为#123。读者可以参考第三章的例题3-3,34。这里列举直接输出空格和使用宽度函数输出空格的方法。参考程序方法一:#include预编译命令usingna
18、mespacestd;intmain()/使用名字空间主函数inta=l,b=2,c=3,d=4,e=5;coutabc/变量定义和初始化d,eendl;SyStem(pause);直接输出空格return0;I方法二:#include预编译命令#includeusingnamespacestd;/格式化输出函数的头文件/使用名字空间intmain()(inta=l,b=2,c=3,d=4,e=5;主函数变量定义和初始化coutsetw(1)asetw(3)bsetw(4)csetw(6)dsetw(10)eendI;使用输出宽度函数输出空格system(pauseM);return0;输出结
19、果12345显示结果3解析本题考察格式化输入输出,本题采用宽度函数设置输出宽度。读者可以参考本章习题的第2小题,参考程序#include#includeusingnamespacestd;intmain()inta,b,c;coutt4pleaseinputthevalueaandbf,endl;输入a.预编译命令格式化输出函数的头文件使用名字空间主函数变量申明b的提示信息cinab;coutsetw(8)aendl;cout,setw(7)bendl;coutendl;c=a+b;coutsetw(8)cendl;SyStem(pause);return0;I输出结果pleaseinputt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Dev C+ 基础教程
链接地址:https://www.31ppt.com/p-1669680.html