您好,欢迎访问三七文档
《C++程序设计应用教程》上机实训、习题参考答案为了便于区分,把上机训练、习题中的题目也放进来,红色部分为参考答案。此外,有个别题目稍作修改。(参考答案只是部分题目,并不是所有题目)第一章1.5习题1.C++语言的特点有哪些。C++语言有很多特点,但主要有以下几个方面:(1)C++语言保持与C兼容,很多C代码不经修改就可以在C++环境中使用。(2)用C++编写的程序可读性更好,代码的结构更合理。(3)C++支持面向对象的机制,具有现代面向对象语言的特点,同时又具有面向过程语言的功能,有利于软件开发人员从面向过程的编程方法到面向对象编程方法的转变。(4)C++软件具有可重用性及可扩充性,有很好的继承功能。(5)C++生成的代码质量比较高,运行效率仅比汇编语言代码段慢10%到20%。2.一个完整的C++程序包括哪几部分。一个完整的C++程序主要包括以下几个部分:(1)C++程序由函数构成,函数是C++程序的基本单位。C++程序必须包含一个名为的main()主函数。(2)C++函数由函数的说明部分和函数体两部分组成。函数的说明部分包括函数类型、函数名、函数参数。函数体就是在函数说明部分下面的大括号{......}内的部分。(3)C++中每个语句和数据定义必须以分号(;)结束(4)可以使用/*......*/或//对C++程序中的任何部分注释。3.分析下列程序的运行结果:#includeiostream.hvoidmain(){intx,y,z;floataverage;x=12,y=32,z=19;average=(x+y+z)/3.0;cout”average=”averageendl;}程序运行结果:average=21分析:(1)程序定义三个整型变量,并对这三个变量进行赋值。(2)程序是求三个变量的平均值,由于平均值可能是含有小数,因此,定义average为实型变量。(3)由于x、y、z三个变量是整型变量,因此,必须除以3.0,不能除以3,否则将进行整数运算,丢失小数部分。4.练习使用cout输出下列的内容:Hello!Howareyou!Iamastudent.#includeiostream.hvoidmain(){cout”Hello!Howareyou!”endl;cout”Iamastudent.”endl;}5.编一程序,从键盘输入三个数给x,y,z,输出它们的最小值。#includeiostream.hintmymin(intx,inty){intz;if(xy)z=x;elsez=y;returnz;}voidmain(){intx,y,z,min;coutPleaseenterthreeintegers:;cinxyz;min=mymin(x,y);min=mymin(min,z);coutTheminis:minendl;}第二章2.4上机训练2.实训内容(3)编写一程序,将字符串“Word”转换为“Bywi”(提示:将字符加上某个整数,如’A’+5即可得到‘F’,但要注意,当字符加上某个整数后超过‘Z’,则应该怎样处理)。#includeiostream.hvoidmain(){charch1,ch2,ch3,ch4;ch1=’W’;ch2=’o’;ch3=’r’;ch4=’d’;ch1=ch1+5-26ch2=ch2+10;ch3=ch3+5;ch4=ch4+5;coutch1ch2ch3ch4endl;}分析:ch1的值为’W’,ch1+5已经超过’Z’,因此,必须减去26。2.5习题1.判断下列的标识符是否合法:4abc,int,Abc,max,x8,_len,void,a*b,MIN,char,9y4,s8p根据C++对标识符的规定,合法的标识符为:Abc,max,x8,_len,MIN,s8p2.将下列的常量进行归类。45L,’A’,”12345”,34.67,5e2,0x123,032,-12.78,’i’,2.3E-2,23u整型常量:45L,0x123,032,23u。实型常量:34.67,5e2,-12.78,2.3E-2。字符常量:’A’,’i’。字符串常量:”12345”。3.简要回答下列问题:(1)变量与常量有何区别?答:在程序运行过程中,其值不能被改变的量称为常量。反之,其值可以变化的量称为变量。(2)什么叫符号常量?使用符号常量要注意哪些问题?答:通过定义字符表示的常量,称为符号常量或标识符常量,符号常量可以使用#define进行宏定义,也可以使用const进行声明。由于符号常量是不能被改变的,因此,不能给符号常量重新赋值。(3)字符常量与字符串常有何区别?答:字符常量是用单引号括起来的一个字符。字符串常量是用双引号括起来的一串字符。C++处理字符常量与字符串常量的方式是不同的,对于字符常量,可用字符型变量来存放,在内存中只占一个字节,而字符串常量,是用一维字符数组来存储,在内存中要占多个字节,而且,C++的每个字符串除存储给定的字符序列外,都有一个结束符'\0'。(4)转义字符的作用是什么?答:C++定义了一些特别功能,如换行、回车等。其表示形式是以'\'开头,后面跟着一个字符,这些字符主要起到某种控制作用,称为转义字符。4.运行下列程序,分析程序的运行结果。#includeiostream.hvoidmain(){intx,y;shortm;x=0xa78;y=0341;m=x+y;cout”x=”xendl;cout”y=”yendl;cout”m=”mendl;}程序运行结果:x=2680y=225z=2905分析:0xa78是一个十六进制数,而输出默认是十进制数,则将0xa78转换成十制数为:10*162+7*16+8=2560+112+8=2680。5.运行下列程序,注意输出格式。#includeiostream.hvoidmain(){intm,n,s;doublet;m=23,n=19;s=m*n;t=s+23.12;coutm”\t”nendl;cout”s=”s””;cout”t=”tendl;}程序运行结果:2319s=437t=460.12分析:(1)第一个cout语句m与n之间用一个转义字符’\t’分隔,根据’\t’的控制功能,m与n在不同的输出区输出。(2)第二个cout由于没有使用“endl”换行,因此,下一个cout语句的输出结果跟在第二个cout输出结果的后面。6.运行下列程序,分析其输出结果。#includeiostream.hvoidmain(){charch1,ch2,ch3,ch4;ch1=’B’;ch2=ch1+5;ch3=ch2-2;ch4=’M’+3;coutch1ch2ch3ch4endl;}程序运行结果:BGEP分析:字符变量与整型变量在一个字节的范围内,存储方式一样,因此,可以进行混合运算。ch1的值为‘B’,当加上5以后,变成‘G’,依此类推。7.已经圆的直径为10,编一程序求出圆的面积及周长。园的面积为:area=πr2园的周长为:girth=2πr#includeiostream.h#definePI3.14159voidmain(){intr=10/2;floatarea,girth;area=PI*r*r;girth=2*PI*r;coutarea=areaendl;cout”girth=”girthendl;}3.4上机训练2.实训内容(1)调试运行下列程序,注意分析程序的运行结果。#includeiostream.hvoidmain(){intx,x1,x2,x3;inty,y1,y2,y3;x=4925;y=3216;x1=x%1000;x2=x%100;x3=x%10;y1=y/1000;y2=y/100;y3=y/10;cout”x1=”x1endl;cout”x2=”x2endl;cout”x3=”x3endl;cout”y1=”y1endl;cout”y2=”y2endl;cout”y3=”y3endl;}程序运行结果:x1=925x2=25x3=5y1=3y2=32y3=321分析:本题主要是让读者理解求余数与整除的区别,通过求余数,可以分离出每一位数。(2)编一程序,交换任意输入一个4位数中的个位与百位,如4129变成4921。要想实现本题的要求,必须将每一位数分离出来,再对数据进行组合。#includeiostream.hvoidmain(){intx,t1,t2,t3,t4,y;cinx;t1=x/1000;t2=(x/100)%10;t3=(x/10)%10;t4=x%10;y=t1*1000+t4*100+t3*10+t2;cout”x=”xendl;cout”y=”yendl;}(3)调试运行下列程序,掌握自增自减运算符的作用。#includeiostream.hvoidmain(){intx,y,m,n;ints,t;x=16,y=23,m=11;m+=x++;n=x+(++y);s=++m-n;t=x*y;cout”x=”xendl;cout”y=”yendl;cout”m=”mendl;cout”n=”nendl;cout”s=”sendl;cout”n=”tendl;}程序运行结果:x=17y=24m=28n=41s=-13n=408(4)调试运行下列程序,分析程序运算结果。#includeiostream.hvoidmain(){intx,y,z;intm,n;x=12,y=7;z=x|y;m=x2;n=x&y^3;cout”z=”zendl;cout”m=”mendl;cout”n=”nendl;}程序运行结果:z=15m=3n=7分析:(1)对于z=x|y,x的二进制数为:00001100,y的二进制数为:00000111,x与y按位或运算如下:0000110000000111|00001111(2)表达式m=x2,表示将x的值按位右移两位,变成00000011,则结果为3。(3)n=x&y^3,首先进行x&y,则运算如下:接着将结果与3进行异或,运算如下:最后n=73.5习题1.已知x=4,y=9,z=3,写出下列算术表达式的值:(1)x%2+y*218(2)x*y%3+z3(3)y/x*24.5(4)(x+y+z)%2*302.已知m,n为整型变量,其值为m=13,n=19,分别求下列y的值。(1)y=(m++)-5y=8(2)y=--n*2+(++m)y=50(3)y=(m--)*3y=39(4)y=(n++)-my=63.已知x=3,y=7,分别求出下列m的值。(1)m=xy&&x4m=00000110000000111&000001000000010000000011^00000111(2)m=x+y9m=1(3)m=yx1m=0(4)m=x=3||y=30m=14.写出下列程序的运行结果。#includeiostream.hvoidmain(){inti,j,k;i=8,j=3;--j;k=(i*j,i=++i+3,i*j);cout”i=”iendl;cout”j=”jendl;cout”k=”kendl;}程序运行结果:i=12j=2k=24分析:(1)程序中--j使j的值变为2。(2)k=(i*j,i=++i+3,i*j)是一个逗号表达式,首先计算i*j,接着计算i=++i+3,则i的值变为12,再计算i*j。根据逗号表达式的运算规
本文标题:C++习题与答案
链接地址:https://www.777doc.com/doc-2904189 .html