书签 分享 收藏 举报 版权申诉 / 221
上传文档赚钱

类型Dev-C++基础教程习题解答.docx

  • 上传人(卖家):一起向未来
  • 文档编号:3605410
  • 上传时间:2022-09-24
  • 格式:DOCX
  • 页数:221
  • 大小:202.56KB
  • 【下载声明】
    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章 顺序结构

    16、1. 解析 考察变量间的交换,算法如下:(1)开辟工作单元。(2)A;AB;BC;CD;D。交换过程读者可以参考教材第三章例3-1中图3-3。参考程序#include /预编译命令using namespace std; /使用名字空间int main() /主函数 int a = 89, b = 76, c = 95, d = 62, e; /变量申明和初始化cout a= a b = b c = c d = d endl; /输出变量的初始值 e = a; a = b; b = c; c = d; d = e;cout a= a b = b c = c d = d endl; /输出移动后

    17、变量的值 system(pause); return 0;输出结果a = 89 b = 76 c = 95 d = 62 /交换前的值a = 76 b = 95 c = 62 d = 89 /交换后的值2. 解析 本题主要考察变量的格式化输出。C+标准库提供的支持格式输出的操作符函数有控制输出宽度、填充字符和精度的方法。需要注意的是在使用这些操作符函数时需要包含头文件iomanip。这里给读者介绍下输出宽度的函数:setw(宽度值)和设置输出填充字符的函数:setfill (填充字符)。输出宽度的函数:setw(宽度值),如输出cout setw(5) 3 endl;就表示将整数3以宽度5的格

    18、式输出,当需要的宽度小于5时,左补0。这样就实现了在整数5左边输出4个空格的目的。运行结果为5。设置输出填充字符的函数:setfill (填充字符)此函数常与setw()函数联合使用,达到向不满设置输出宽度的空间填入指定字符的目的,不设置则填充空格。coutsetw(5)setfill(#)123endl,指将整数123以宽度5的格式输出,运行结果为#123。读者可以参考第三章的例题3-3,3-4。这里列举直接输出空格和使用宽度函数输出空格的方法。参考程序方法一:#include /预编译命令using namespace std; /使用名字空间int main () /主函数 int a

    19、= 1,b = 2,c = 3,d = 4,e = 5; /变量定义和初始化couta b c d eendl; /直接输出空格 system(pause); return 0; 方法二:#include /预编译命令#include /格式化输出函数的头文件using namespace std; /使用名字空间int main () /主函数 int a=1,b=2,c=3,d=4,e=5; /变量定义和初始化coutsetw(1)asetw(3)bsetw(4)csetw(6)dsetw(10)eendl; /使用输出宽度函数输出空格 system(pause); return 0; 输

    20、出结果 12345 /显示结果3. 解析 本题考察格式化输入输出,本题采用宽度函数设置输出宽度。读者可以参考本章习题的第2小题。参考程序#include /预编译命令#include /格式化输出函数的头文件using namespace std; /使用名字空间int main () /主函数 int a,b,c; /变量申明 cout “please input the value a and b:”ab; /输入a,b coutsetw(8) a endl; / 设置a输出的格式 cout+ setw(7)bendl; / 设置+输出的位置 cout-endl; /输出“-” c = a

    21、+b; /计算a+b的值赋给c coutsetw(8)cendl; /设置输出的格式 system(pause); return 0; 输出结果please input the value a and b: /显示4587 2124 /用户输入 4587 /显示加法结果+ 2124- 67664. 解析 本题主要考察输出精度,宽度等格式化输出。设置输出精度的函数:setprecision(有效位数)。此函数用来指明显示浮点型数据的有效位数,可用的最后一位的值为是四舍五入的值。如coutsetprecision(3)3.333333endl;运行结果为3.33。本题将输出精度和输出宽度结合就可以

    22、实现对齐的目的,读者可以参考第三章例题3-6。参考程序#include /预编译命令#include /格式化输出函数的头文件 using namespace std; /使用名字空间int main () /主函数 float a, b, e; /变量申明 int c, d; /变量申明 cin a b c d; /输入变量cout setiosflags(ios:fixed) setw(8) setprecision(c) a endl;cout setiosflags(ios:fixed) + setw(8 - c + d - 1) setprecision(d) b endl;/以上两

    23、行格式化输出a,+,b cout - endl; / 输出“-” e = a + b; /计算e的值 cout setw(8) e endl; /格式化输出e system(pause); return 0;输出结果1.2345 2.3456 3 3 /输入 1.235+ 2.346 /输出- 3.5805. 解析 本题主要考察小时和分钟的转化,转换方式如下:1小时= 60分钟,若要用分钟a表示m小时n分钟,最后的结果a=(m%24)*60+n。若要用小时和分钟表示分钟a,则小时m = a / 60, 分钟n = a m*60。可以参考第三章例题3-10参考程序#include /预编译命令u

    24、sing namespace std; /使用名字空间int main() /主函数 int a,b; /变量申明,a代表小时,b代表分钟cin a b; /输入变量a,bif(a = 24)a = a % 24; /过24点记为0. cout a * 60 + b endl; /输出用分钟表示的结果 system(pause); return 0;输出结果5 34 /输入小时和分钟334 /输出分钟表示的结果6. 解析 本题主要考察华氏温度和摄氏温度的转换。按照转换公式是:C=(5/9)(F-32)进行转换,这里需要注意的一点是,这里的5/9中/两边均是整数,如果将其中之一从整型数化为实型数

    25、的话,计算的结果会是0。若将5转化为5.0,原表达式变成C = (5.0/9)(F-32)。计算5.0/9时,运算符两侧为一个为整型数,另一个为实型数时,系统首先把着整型数转换为实型数,使运算符两边的类型取得一致然后进行运算。这样就能得到正确的转换结果。参考程序#include /预编译命令using namespace std; /使用名字空间int main() /主函数 float a,b,c,d,e; /变量申明 cin a b c d e; /输入转换前的变量值cout (float)(5.0/9) *(a - 32) (float)(5.0/9) * (b - 32) (float

    26、)(5.0/9) * (c - 32) (float)(5.0/9) *(d - 32) (float)(5.0/9) *(e - 32) endl; /输出转换后的变量值 system(pause); return 0;输出结果-10 0 10 37 100/输入的华氏温度-23.3333 -17.7778 -12.2222 2.77778 37.7778/输出的摄氏温度第4章 选择结构1.解析 该题主要考察if-else来比较变量的大小的方法。参考教材第四章的例4-2,例4-3,这里介绍四种方法。参考程序方法一:逐层判断,这种方法可以锻炼自己的逻辑思维的能力。参考程序如下:#include

    27、 /预编译命令using namespace std; /使用名字空间int main() /主函数 float a,b,c; /变量申明 cinabc; /输入变量值 if (ab) /比较求的中间值 if (ac) if(bc) coutbendl; else coutcendl; else coutac) if(ac)cout aendl; else coutcendl; else coutbendl; system(pause); return 0; 方法二:假设变量a中存放这些数中最大的值。如不是就交换,这样就保证变量a中存放的是最大值。只要比较b和c,找出他们中的较大数值即可。参考

    28、程序如下:#include /预编译命令using namespace std; /使用名字空间int main() /主函数 float a,b,c,d; /变量申明 cinabc; /输入变量值 if(ba) d=a;a=b;b=d; if(ca) d=c;c=a;a=d; /以上四行表示用a存放变量最大值 if(bc) coutbendl; else coutcendl; /以上两行表示输出中间值 system(pause); return 0; 方法三:假设b是之间的数,可能的所有情况。在考虑a是中间数的所有情况,最后考虑c是中间数的所有情况。参考程序如下:#include /预编译命

    29、令using namespace std; /使用名字空间int main() /主函数 float a,b,c; /变量申明 cinabc; /输入变量值 if(ab & bc) coutbb & ba) coutba & ac) coutaa & ab) coutac & cb) coutcc & ca) coutc0) coutbb & bc) coutbb & ba) coutbendl;参考程序如下:#include /预编译命令using namespace std; /使用名字空间int main() /主函数 float a,b,c; /变量申明 cinabc; /输入变量值

    30、if(a-b)*(b-c)0)coutb0)coutaendl; /输出中间值 else coutcendl; /输出中间值 system(pause); return 0; 求最大值、最小值的方法同学们可以按照这四种思路编写程序。输出结果2.3 23.4 3.4 /输入的三个实数3.4 /输出的中间值2.解析 该题主要考察一元二次方程求根需注意的地方,考察学生思维的严密性。要注意的地方是:(1)需分别讨论系数a为0和不为0的情况,利用a可以区分该方程是一元一次方程还是一元二次方程。(2)判别式b*b-4*a*c计算出来后赋值给一个变量,这样引用的时候就不需要重新计算,减少了计算时间。利用b*

    31、b-4*a*c可以判断该方程有没有实根。参考程序#include /预编译命令#include /加入求平方根函数的头文件using namespace std; /使用名字空间int main() /主函数 float a,b,c; /变量申明,分别表示方程的三个参数 float x1,x2; /变量申明,分别表示方程的两根 cin a b c; /输入变量a,b,c float d = b*b - 4 * a * c; /求判别式的值 if(a = 0) /该方程为一元一次方程 cout 此方程为一元一次方程 endl; cout x1 = x2 = = 0) /该方程为一元二次方程 cout x1 = (-b + sqrt(d) / (2 * a) x2 = (-b - sqrt(d) / (2 * a) endl; else cout 此方程没有实根 关系运算符逻辑运算符,(1) a为真,!a为假,所以&操作结果为假;(2)a&b为假,!(a&b)为真,故整体表达式为真,(3) a为真,!a为假,所以&操作结果为假,(4)=左边得1,右边也是1,故等号成立。答案 (2),(4)4.解析 该题考察一种多路径分支控制语句。在执行多路径分支控制时,用switch语

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Dev-C++基础教程习题解答.docx
    链接地址:https://www.163wenku.com/p-3605410.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库