




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章C+的初步知识1 请根据你的了解,叙述C+的特点。C+对C有哪些发展?【解】略。2个C+的程序是由哪几部分构成的?其中的每一部分起什么作用?【解】略。3从拿到一个任务到得到最终结果,一般要经过几个步骤?【解】略。4请说明编辑、编译、连接的作用。在编译后得到的目标文件为什么不能直接运行?【解】编译是以源程序文件为单位进行的,而一个完整的程序可能包含若干个程序文件,在分别对它们编译之后,得到若干个目标文件(后缀一般为.obj ),然后要将它们连接为一个整体。此外,还需要与编译系统提供的标准库相连接,才能生成一个可执行文件(后缀为 .exe )。不能直接运行后缀为 .obj 的目标文件,只能运
2、行后缀为 .exe 的可执 行文件。5.分析下面程序运行的结果。#i ncludeusing n amespace std;int main(cout This is ”;cout a C+;cout program. en dl;return 0;【解】输出的结果为ThisisaC+program.6 分析下面程序运行的结果。#i ncludeusing n amespace std;int mai n(int a,b,c;a=10;b=23;c=a+b;cout a+b=;coutcout abc;c=f(a,b,c;cout a+b= a+b;【解】上机编译出错,编译出错信息告知在第2行
3、出错,经检查,发现第1行的末尾多了一个分号,编译系统无法理解第2行的花括号,导致报告第2行出错。将第1行的末尾的分 号去掉,重新编译,编译出错信息告知在第5行和第6行出错。第5行出错原因是cout未经声明,因为cout不是C+语言提供的系统的关键字,而是输出流的对象,必须使用头文件 iostream。第6行出错原因是main是int型函数,应返回一个整型值。将程序改为#i ncludeint main(int a,b;c=a+b;cout a+b= a+b;return 0;重新编译。编译出错信息告知在第5行和第6行出错。第5行出错原因是变量c未定义,第6行出错原因是cout未经声明,说明#i
4、nelude命令行未能起作用,原因是未指明命名空间。将程 序改为#i ncludeusing n amespace std;int main(int a,b,c;c=a+b;cout a+b= a+b;return 0;重新编译。编译出错信息告知在第7行出错,经检查,是“用得不当,“是提取运算符,应与cin联合使用,用来从输入流中提取数据,输出时应该用插入运算符“1都改为“ ab;c=a+b;cout a+b= a+b;return 0;重新编译,没有编译错误,能通过编译和连接,可以正常运行,在Visual C+ 6.0环境下运行时屏幕显示如下:5 9/a+b=14Press any key
5、to con ti nue显然这样的输出不理想,“Press an%ey to continue 是Visual C+系统在输出了运行结果后自动显示的一个信息,告诉用户如果想继续工作,请按任何一个键”。当用户按任何一个键后,显示运行结果的窗口消失,屏幕显示回到Visual C+的主窗口,显示出源程序和编译信息。为了解决以上输出不理想的情况,可以在最后一个输出语句中增加输出一个换行符。最 后的程序如下:#i ncludeusing n amespace std;int main(int a,b,c;cin ab;c=a+b;couta+b=return 0;运行时屏幕显示如下:5 9/a+b=1
6、4Press any key to con ti nue这就完成了程序的调试。这里对本题的调试过程作了比较详细的分析,以便使读者对如何调试程序有比较具体而 清晰的了解。需要说明:(1 )编译系统给出的编译出错信息,只是提示性的,引导用户去检查错误,用户必须根据程序的上下文和编译出错信息,全面考虑,找出真正出错之处。例如编译出错信息通知第2行出错,其实可能是第1行出错。(2) 有时,有的错误开始时未被检查出来并告知用户(例如未定义变量c),由于其他错误未解决,掩盖了这个错误。当解决了其他错误后,这个错误会被检查出来。有时在调试过 程中会不断检查出新的错误,这是不奇怪的。一一处理,问题会迎刃而解。
7、(3) 为了说明调试过程,这里全部依靠计算机系统来检查错误,其实有些明显的错误, 完全可以由人工查出,这样可以提高调试效率。由人工在纸面或屏幕上检查错误,称为静态查 错,用计算机编译系统检查错误,称为动态查错。建议尽量先用静态查错的方法排除错误,只 有人工检查不出来的错误才让计算机检查。9输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,再进行编译, 直到没有错误,然后进行连接和运行,分析运行结果。#includeusing namespace std;int main(int a,b;c=add(a,bcouta+b= a b;c=add(a,b;cout a+b= c x y
8、z;sort(x,y,z;return 0;void sort(i nt x, int y, int zint temp;if (xy temp=x;x=y;y=temp;/ 内3个语句的作用是将 x和y的值互换if (z , x , y en dl;else if (z , z , y en dl;else cout x , y , z a b c;cout max(a,b,c= max(a,b,c endl;cout max(a,b= a a=b;if(ca a=c;return a;运行情况如下:13 5 76 /max(a, b, c=7 6 (从 3个数中找最大者)max(a, b=
9、1 3 (从前 2 个数中找最大者)如果想从 3 个数中找大者,可以在调用时写成“max(a,b,c 形”式,如果只想从2 个数中找大者,则在调用时写成“max(a,b ”形式,此时 c 自动取默认值 0,由于 0 比任何正整数都小,因此从 1 4, 5,0中选最大者和从 1 4 , 5中选大者的结果是一样的。12输入两个整数,将它们按由大到小的顺序输出。要求使用变量的引用。【 解】 可以编写出以下程序:#includeusing n amespace std;int main( void cha nge(i nt &,i nt &;int a,b;cin ab;if(a如果a ,使a和b的值
10、互换cout max= min= return 0;void change(int &r1,int &r2 /函数的作用是使 r1与r2互换 int temp;temp=r1;r1=r2;r2=temp;运行情况如下:12_67/max=67min=1213.对3个变量按由小到大顺序排序,要求使用变量的引用。【解】可以编写出以下程序:#i ncludeusing n amespace std;int main(void sort(i nt &,int &,int &;int a,b,c,a1,b1,c1;cout abc;a1=a;b1=b;c1=c;sort(a1,b1,c1;cout in
11、 sorted order is ;cout ” j chan ge(i, j;if (ik cha nge(i, k;if (jk cha nge(j, k;void cha nge(i nt &x,i nt &y int temp;temp=x;x=y;y=temp;运行情况如下:Please enter 3 integers:23 67 -55 /23 67 -55 in sorted order is -55 23 67这个程序很容易理解,不易出错。由于在调用sort函数时虚实结合使形参 i,j,k成为实参a1,b1,c1的引用(别名),因此通过调用函数sort( a1,b1,c1)既
12、实现了对i,j,k排序,也就同时实现了对 a1,b1,c1排序。同样,执行 change ( i,j)函数,可以实现对实参 i和j的互 换。14.编一程序,将两个字符串连接起来,结果取代第一个字符串。要求用string方法。【解】可以编写出以下程序:#i nclude#include /程序中若使用 字符串变量,必须包含头文件皿using n amespace std;int main( string s1= week , s2= end ;cout s1= s1 endl;cout s2= s2 endl;s1=s1+s2;cout The new string is: return 0;运
13、行情况如下:s1=weeks2=endThe new string is: weekend15输入一个字符串,把其中的字符按逆序输出。如输入LIGHT ,输出 THGIL 。要求用 string 方法。【 解】 可以编写出以下程序:#include#includeusing namespace std;int main( string str;/ 定义字符串变量 strint i,n;char temp; / 定义字符变量 tempcoutstr; / 输入一个字符串赋给字符串变量 strn=str.size( ; / 测量 str 的长度 nfor(i=0;i / 使 str 中的字符对称互
14、换temp=stri;stri=strn - i- 1;strn - i- 1=temp;cout str endl;return 0;运行情况如下:please in put a stri ng:LIGHT /THGIL注意:输入的字符串中不能含有空格。16.有5个字符串,要求将它们按由小到大的顺序排列,用string方法。【解】可以编写出以下程序:#i nclude#i ncludeusing n amespace std;int main( int i;string str5= BASIC ,” C,” FORTRAN ,” C+ ,” PASCAL ;void sort(stri ng
15、 ;sort(str; II对字符串排序cout the sorted strings : for(i=0;i5;i+cout ”; II按已排好的顺序输出字符串coutreturn 0;void sort(stri ng sint i, j;stri ng t;for (j=0; j5; j+for(i=0; isi+1t=si;si=si+1;si+1=t;运行结果如下:the sorted strings :BASIC C C+ FORTRAN PASCAL17编一个程序,用同一个函数名对n 个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。用重载函数实现。【 解】 可以编
16、写出以下两个程序:( 1)建立 3 个函数,分别用于处理整型、单精度型、双精度型数据的排序,在 3 个函数 中都采用选择法排序方法。#include#includeusing namespace std;int main(long a5=10100, - 123567, 1198783,- 165654, 3456;int b5=1,9,0,23, -45;float c5=2.4, 7.6, 5.5, 6.6, -2.3 ;void sort(long ;void sort(int ;void sort(float ;sort(a;sort(b;sort(c;return 0;void so
17、rt(long a int i, j;long t;for (j=0; j5; j+ for(i=0;iai+1 t=ai;ai=ai+1;ai+1=t; cout the sorted numbers : for(i=0;i5;i+ cout ;coutvoid sort(int a int i, j, t;for (j=0; j5; j+ for(i=0;iai+1 t=ai;ai=ai+1;ai+1=t; cout the sorted numbers : for(i=0;i5;i+ cout ;coutvoid sort(float a int i, j;float t;for (j=
18、0;j5;j+ for(i=0;iai+1 t=ai;ai=ai+1;ai+1=t;cout the sorted numbers : for(i=0;i5;i+cout ;cout运行结果如下:the sorted numbers :- 123567 - 165654 10100 3456 1198783 (长整型数据排序)the sorted numbers : (整型数据排序)-45 0 1 9 23the sorted numbers :-2.3 2.4 5.5 6.6 7.6 (单精度型数据排序)(2)在第 1 种方法中, 3 个函数的函数体基本上是相同的,都是采用选择法排序,在下
19、面的程序中, 3 个函数的函数体不全相同,前两个函数采用选择法排序,最后一个函数采用起 泡法排序。#include#includeusing namespace std;int main( long a5= 10100, - 123567, 1198783,- 165654, 3456;int b5=1,9,0,23, -45;float c5=2.4, 7.6, 5.5, 6.6, -2.3 ;void sort(int ;void sort(float ;void sort(long ;sort(a; / 对长整型数据排序sort(b; / 对整型数据排序sort(c; / 对单精度型数据
20、排序return 0;void sort(long a / 对长整型数据用选择法排序的函数 int i,j,min;long t; for(i=0;i5;i+ min=i;for (j=i+1;jaj min=j;t=ai; ai=amin; amin=t; cout the sorted numbers : for(i=0;i5;i+ cout ;coutvoid sort(int a / 对整型数据用选择法排序的函数 int i, j, t;for (j=0; j5; j+ for(i=0;iai+1 t=ai;ai=ai+1;ai+1=t;cout the sorted numbers
21、: for(i=0;i5;i+cout ;coutvoid sort(float a / 对单精度型数据用起泡法排序的函数 int i, j;float t;for (j=0;j5;j+for(i=0;iai+1t=ai;ai=ai+1;ai+1=t;cout the sorted numbers : for(i=0;i5;i+cout ;cout运行结果如下:the sorted numbers :-123567 -165654 10100 3456 1198783 (长整型数据排序结果)the sorted numbers : (整型数据排序结果)-45 0 1 9 23the sorted numbers :-2.3 2.4 5.5 6.6 7.6 (单精度型数据排序结果)对比两种方法,可以看到,并不要求重载函数的函数体相同,在本例中,采用不同的排 序方法,结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标准个人店面租赁合同
- 中国第二十冶金建设公司综合学校高中分校高中历史四导学案:俄国无产阶级革命的导师列宁
- 电力建设临时工合同协议
- 电子挖机转让合同协议
- 电商房间出租合同协议
- 电池使用安全合同协议
- 白酒销售订购合同协议
- 电动机销售合同协议
- 电商入股开店合同协议
- 电力线路租赁合同协议
- 《石钟山记》课件统编版高中语文选择性必修下册
- 广西某农贸市场建设项目可行性研究报告
- 第二届全国设备管理与智能运维职业技能竞赛(电气设备点检员)考试题库(含答案)
- 江苏省常州市2024年中考物理试题【附参考答案】
- 2023-2024学年江苏省南京市六校联合体高一下学期5月期中考试化学试题
- TSHNX 001-2024 乳制品企业有害生物防制技术规范
- 第十三章-印花税
- DL∕T 5362-2018 水工沥青混凝土试验规程
- 典型任务-人力制动机制动工作课件讲解
- 药品生产企业质量管理评审要求
- (权变)领导行为理论
评论
0/150
提交评论