Dev-C++基础教程习题解答.docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Dev-C++基础教程习题解答.docx》由用户(一起向未来)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Dev C+ 基础教程 习题 解答
- 资源描述:
-
1、Dev-C+基础教程习题解答前言这是一本与Dev-C+基础教程配套的习题解析。本书主要针对中小学生学习了DEV-C+ 语法、语义、常用算法后,引导学生用程序设计的思维和逻辑解决问题。本书的习题从题意出发,分析解题的思路和算法,然后给出参考程序,重点帮助读者理解算法原理,教会读者很多实用的编程技巧,培养良好的编程习惯。本书的习题内容丰富,读者可以自己动手实践编写程序,然后和题解中的方法比较,希望读者在理解该书题解的同时,能锐意开掘,探本索源,找到更好的解答办法,写出更高效的程序。该习题涵盖中学生信息学奥林匹克竞赛中的很多基础算法,可以做为中小学生学习程序设计的入门习题,也可以做为本科生初学程序设
2、计的课后习题。1Dev-C+基础教程 习题解析目录第1章 Dev-C+入门第2章 Dev-C+语言简介第3章 顺序结构第4章 选择结构第5章 循环结构第6章 函数第7章 数组第8章 指针第9章 字符串第10章 文件第11章 输入与输出流第12章 链表第1章 Dev-C+入门1.解析 该题考察学生用Dev-C+编写简单的程序和C+的基本语法。参考程序#include /预编译命令 using namespace std; /使用名字空间 const float PI=3.14; /定义一个常数变量pi int main () /主程序 float s,r,c; coutplease input
3、radius :r; / 输入半径 s=PI*r*r; / 计算面积 c= 2*PI*r; / 计算周长 couts=sendl; coutc=cendl; system(pause); return 0; 输出结果please input radius: / 显示5 / 用户输入,表示圆的半径s = 78.5 / 显示面积c = 31.4 / 显示周长2.问题分析 凡是数学中已经定义的字母,在程序设计中一律沿用。如用a表示边长,用s表示面积,用c表示周长。算法设计 s=a*a,c=4*a.参考程序#include using namespace std;int main() float a,
4、s,c; couta; s=a*a; c=4*a; couts=sendl; coutc=cendl; system(pause); return 0;第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)解析 这是一个算术表达式。分析其计算结果时首先要掌握两点: 算术运算符的优先级。C+的算术运算符中,(
5、)的优先级最高,*、/、%的优先级比+、高,且它们都是从左到右结合的 运算符两侧类型不同的运算数,在运算中给出类型转换的规律。运算所得结果的类型与运算数类型一致。在第一题中,括号的优先级最高,先求5%2 = 1,原表达式变成31/1, 根据规定的除法运算规律,所得结果的类型与运算数类型一致,因为”/”号两侧都是整型,因此结果也应该整型。求得31;答案31(2)17-4*3/7解析 按照优先级的高低,*的优先级比-高,先算*法,4*3=12,原表达式变成17 12/7。/的优先级比-高,再算12/7,根据规定的除法运算规律,所得结果的类型与运算数类型一致,因为”/”号两侧都是整型,因此结果也应该
6、整型。计算得12/7 = 1,原表达式变成17 1,最后算17-1得16答案16(3)31.0/(5%2)解析 括号的优先级最高,先算括号里面的,5%2 =1,原表达式变成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,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算
7、符两边的类型取得一致然后进行运算,12.0/7.0=1.71429,原表达式变成17-1.71429,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算符两边的类型取得一致然后进行运算,经转换后表达式为17.00000-1.71429,最终结果是15.2857答案 15.28573. (1)解析 在初学者阶段,读者可能只接触到MAIN(主)函数,但作为基础知识,读者应该明确且牢记:c+程序是由函数组成的。每个c+语言的源程序可以包含多个函数,但只能有一个主函数。因此选A是片面的。在c+程序中不存在“过程”这一程序结构。在正确的程序设计中,要求对源程序有详尽的注
8、释,以便于阅读和软件的维护:c+程序中的注释行,由/*开头,由*/结束:”/”和”*”必须紧接着,在这两个字符之间不得插入空格。在选项D中“/“和”*”之间都插有空格,很多初学者常犯这样的错误。 以上分析可知,本题的正确答案是B。(2) 解析 将数学表达式写出c+语言表达式是编写c+程序的基本功之一。此例中给出了一个代数式,用c+语言表示应该是一个算术表达式。在书写算术表达式时,不允许使用分数的形式,只能按运算的先后顺序写在一行上,必须要添加圆括号以保证运算的正确性。由选项可知,同一个数学算式可以写成不同的c+语言表达式。选项A中,由于除号后的c*d两侧未加圆括号,按照运算规则,将先算出(a*
9、b)的乘积,然后被c除,计算的结果再乘上d。它所描述的代数式为,与原算式不符,显然是错误的。选项B中,按优先级应当先做(C*D)运算,然后将它去除a*b的乘积,因此是正确的。 选项C中,按从左到右的顺序,先做a/c的运算,描述的代数式为,与原式等效。 选项D中,按从左到右的顺序,先做a*b然后除c,再除d。运算的过程相当于代数式,因此与原算式等效。题目要求选出不正确的,所以本题的答案是A。(3)解析 C+语言中的表达式种类较多,本章中涉及的就有算术表达式、强制类型转换表达式、赋值表达式以及逗号表达式等。读者应该记清它们各自的特征。本例中选项A末尾有一个分号,从而构成了赋值语句而不是表达式。选项
10、B是由2个表达式构成的逗号表达式:第1个是赋值表达式、第2个是由自加运算符构成的表达式,语法上没有错误。选项C中使用了类型说明符int ,若作为强制类型转换表达式,int 两侧必须带有圆括号,这里没有括号是不合法的。选项D从形式上看似乎是一个赋值表达式,因为c+语言中允许诸如a=b=2这类的赋值表达式。但c+语言也明确规定:赋值运算符(=)左侧只能是变量不允许是常量和算术表达式。选项D的a+7=c+d在赋值号左侧出现了算术表达式,因此是不合法的。本题的正确答案为B。4. (1) 解析 C+语言规定:可以在定义的同时给变量赋初值。其形式为:类型名 变量名=数值,变量名=数值,按此格式可得本例题所
11、要求的定义语句; int a=0,b=0;需要提醒读者的是:对于定义时没有置初值的变量,其值是不确定的随机数,使用时特别加以注意。答案 int a = 0,b = 0;(2)解析 这是一个算术表达式。分析其计算结果时首先要掌握两点:算术运算符的优先级。运算符两侧类型不同的运算数,在运算中给出类型转换的规律。本例中涉及了加、除以及求余三种运算。按运算的优先级先计算1/2,根据规定除法运算所得结果的类型与运算数类型一致,因为”/”号两侧都是整型,因此结果也应该整型。故1/2的结果不是0.5而应舍去小数部分得到结果0;按优先级,接下来做求余运算56%10,56除10以后的余数是6,因此所得结果为整数
12、6,现在表达式变成了3.5+0+6。按+号的综合性,应该自左至右进行运算,因此先做3.5+0,当运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算符两边的类型取得一致然后进行运算,如3.5+0+6,则首先把0转换为实型数0.0,然后进行运算,得3.5;接着进行3.5+6的运算,经转换后表达式为3.5+6.0,最终结果是9.5。(3)解析 在c+语言中,凡是双目运算符都可以和赋值运算符一起组成复合运算符。在赋值表达式中可以包含这些复合运算符,且运算符按“自右至左”的组合顺序进行。因此,表达式k-=k-=k+1的求解过程为:先计算最右边的“k-=k+1”,相当于k=
13、k-(k+1),把7带入表达式中:k=7-(7+1),结果把-1赋给了k。再计算“k+=-1”,相当于k=k+(-1),把当前k的值(-1)带入表达式中,k=-1+(-1),最后把-2赋给了k。故本题的正确答案是-2。(4)解析 先做a=a-a*a;把12带入得到a=12-12*12,a=-132.再a=a+(-132),a=-132-132=-264故本题的正确答案是D。5. (1) 解析 考察C+的基本语法。该题主要有两点问题。 main函数是C+程序的主函数,函数名称后面要有(),函数名称前面有类型说明符int。完整的形式应为int main() cout 插入符的方向有问题,应该为co
14、ut v;答案 #include usingnamespace std;int main /改成int main()int a,b,c,v; a=2,b=3,c=4v=a*b*c;coutv; /改成cout v;system(“pause”);return 0;(2)解析 考察C+的基本语法。该题主要有两点需要注意的。 C+的输入输出流头文件中规定了cin,cout是小写形式,若改成大写,系统会默认成变量处理,会出现语法错误 C+变量是区分大小写的,所以使用时要多小心。不然会出现没有定义的错误。答案#include using namespace std;int main()float L,
15、W,H,V;coutLWH;/改为cin L WHv=L*W*H;/改为V = L *W *Hcoutvendl;/改为cout V endl;system(“pause”);return 0;(3) 解析 考察C+的const常量。const常量必须在第一次声明时就初始化,用变量或常量初始化都可以,只是初始化一次以后它的值就不能再改变了。若要改变它的值,使用普通变量即可。答案int main()const int w=5;/const常量不能修改,改为int w = 5float a;a=2*w;w+;coutwaendl;system(“pause”);return 0; 第3章 顺序结构
展开阅读全文