《C++程序设计》课后习题参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案――武汉大学出版社习题1参考答案三、简答题1.简述三代计算机语言各自的特点。解答如下:机器语言是用二进制指令表示的、计算机能够直接识别和执行的语言。由于计算机可以直接执行机器语言,执行速度快是机器语言的主要优点。在计算机发展初期,软件工程师使用机器语言来编写程序。在计算机指令集不断增大的情况下,机器语言不易记忆,不便于学习,软件开发难度大、周期长、易出错,软件维护工作量大等缺点更加突出,机器语言已不能胜任编程工作。汇编语言是用一些易读的助记符表示机器指令操作码,如ADD、CALL等。使用汇编语言编写程序提高了编程速度,也比较容易编写出质量较高的程序,检查、维护也比较容易。但汇编语言抽象层次低,程序员编写程序工作量大。高级语言屏蔽了机器语言的细节,提高了语言抽象层次。程序中采用了具有一定含义的数据命令和容易理解的执行语句。高级语言不受计算机种类的限制,通用性强,易于理解、学习和掌握。使用高级语言减少了大量的编程工作量。目前使用比较广泛的高级语言有Basic、Fortran、Pascal和C语言。C++是一种功能强大、应用更广泛的高级语言。2.简述C语言程序实现的过程。解答如下:用C++语言编写好一个完整的程序后,第一步要上机运行编辑程序,输入源程序;第二步是对源程序进行编译生成目标代码文件,目标代码文件名与源程序文件名相同,而扩展名改为obj;第三步运行连接程序,将目标代码文件与C++的库文件相连接,生成可执行文件,可执行文件名与源程序文件名相同,而扩展名为exe;第四步运行可执行文件,实现程序所具有的功能。习题2参考答案1.C++基本数据类型有哪几种?程序设计如下:C++的基本数据类型有bool(布尔型,又称逻辑型)、char(字符型)、int(整型)、float(浮点型,表示实数)和double(双精度浮点型,简称双精度型)等5种。2.定义符号变量与定义变量有何异同?程序设计如下:定义符号常量和定义变量都要指定数据类型,系统将为其分配一定的存储空间。其不同之处在于:定义符号常量必须给出常量值,且以后不能修改本常量的值;而变量可以在定义变量的同时赋初值,以后可以修改该变量。3.什么叫常量?什么是变量?程序设计如下:常量就是在程序的运行过程中该量是不可修改的量;变量在程序的运行过程中允许对该变量的值进行修改。习题3参考答案一、编程题1.编写找出a=18,b=35,c=21,d=96中最大值的程序。程序设计如下:#includeiostream.hvoidmain(){inta=18,b=35,c=21,d=96,max;max=ab?a:b;max=maxc?max:c;max=maxd?max:d;coutmax=maxend1;}2.输入一个整数:为65时,显示“A”;为66时,显示“B”,为67时,显示“C”,其它值显示“END”。程序设计如下:#includeiostream.hvoidmain(){intx;cinx;switch(x){case65:coutA\n;break;case66:coutB\n;break;case67:coutC\n;break;default:coutEND\n;}}3.编写输入一个整数并且该数按小于10,10~99,100~999,1000以上分类并显示的C++程序,例如:输入335时,显示“335is100to999”。程序设计如下:#includeiostream.hvoidmain(){inta;cina;if(a=100){if(a=1000)coutaisgreaterthan1000\n;elsecoutais100to999\n;}else{if(a10)coutaislessthan10\n;elsecoutais10to99\n;}}4.一个分数序列为:2/1,3/2,5/3,8/5,13/8,21/23,…编写求该数列的前20项之和的程序。程序设计如下:#includeiostream.hvoidmain(){floatx=1,y=2,p,k,s=0;for(k=1;k=20;k++){s+=y/x;p=x+y;x=y;y=p;}cout2/1+3/2+5/3+8/5+…=sendl;}5.编写程序,显示如下图形。*************************程序设计如下:#includeiostream.hvoidmain(){inti,j,k;for(i=1;i5;i++){for(k=4;k=i;k--)cout;for(j=1;j=2*i-1;j++)cout*;coutendl;}for(i=3;i0;i--){for(k=1;k=4-i+1;k++)cout;for(j=1,j=2*i-1;j++)cout*;coutend1;}}习题4参考答案三、编程题1.将一个数组中的值按逆序存放,例如,原来是1,3,5,7,9,要求改为9,7,5,3,1。程序设计如下:#includeiostream.hvoidmain(){inta[5],t;for(inti=0;i5;i++)cina[i];for(i=0;i5/2;i++){t=a[i];a[i]=a[4-i];a[4-i]=t;}for(i=0;i5;i++)couta[i]\t;coutendl;}2.有一个3×3的矩阵,分别求出两条对角线元素之和。程序设计如下:#includeiostream.hvoidmain(){inta[3][3],i,j,suml=0,sum2=0;cout输入数组元素:\n;for(i=0;i3;i++)for(j=0;j3:j++)cina[i][j];for(i=0;i3;i++){sum1+=a[i][i];sum2+=a[i][2-i];}coutsum1=sum1sum2=sum2endl;}3.输入一个字符,统计单词个数,单词之间用空格分离。程序设计如下:#includeisotream.hvoidmain(){charstr[80],c1,c2=′′;inti=0,num=0;cin.getline(str,78);while(str[i](='\o'){c1=str[i];if(i==0)c2=();elsec2=str[i-1];if(c1!=''&&c2=('')num++;i++}cout共有num个单词endl;}4.用冒泡法对输入的15个整数按由小到大顺序排列。程序设计如下:#includeiostream.h#includeiomanip.hvoidmain(){inti,j,m,a[15];for(i=0;i15;i++)cina[i];for(j=1;j14;j++)for(i=0;i15-j;i++)if(a[i]a[i+1]){m=a[i];a[i]=a[i+1];a[i+1]=m;}for(i=0;i15;i++)coutsetw(4)a[i];coutend1;}5.从键盘为1个N×N的整型数组a输入数据,并显示每一行的最大值。程序设计如下:#includeiostream.h#includeiomanip.hvoidmain(){constN=5;inta[N][N],b[N],i,j;cout请为数组a:输入数据:endl;for(i=0;iN;i++)for(j=0;jN;j++)cina[i][j];//用双重循环为数组a顺序输入数据for(i=0;iN;i++){b[i]=a[i][0];for(j=1;jN:j++)if(b[i]a[i][j])b[i]=a[i][j];//经比较将a数组第i行的最大值分别存入b[i]中}cout输出每一行的最大值:;for(i=0;iN;i++)coutsetw(4)b[i];coutend1;//经b[i]输出数组a每一行的最大值}程序运行结果:请为数组a:输入数据:5015341729182542773525241723115998322862541997848输出每一行的最大值:5077259878习题5参考答案三、编程题1.输入3个字符串,要求输出其中最大,最小字符串。程序设计如下:输入3#includeiostream.h#includestring.hvoidmain(){constintN=3;chars[N][20],max[20],min[20];for(inti=0;iN;i++)cin.getline(s[i],20);strcpy(max,s[0]);strcpy(min,s[0]);for(i=0;iN;i++){if(strcmp(s[i],max)0)strcpy(max,s[i]);if(strcmp(min,s[i])0)strcpy(min,s[i]);}cout最大字符串是:maxendl;cout最小字符串是:minendl;}2.用指针的方法将一个字符串“china”的单个字符依次输出。程序设计如下:#includeiostream.hvoidmain(){char*p=china;for(inti=0;p[i]!='\0';i++)coutp[i]endl;}3.使用指针数组编写一个程序,要求当用户输入1~12的月份数字时,程序能够输出该月的英文名。输入不是1~12时,则退出程序。程序设计如下:#includeiostream.hvoidmain(){//C++语言中续行符用\表示char*monthname[]={january,february,march,april,may,june,july,august,september,october,november,december};inti;while(1){cout请输入月份号:cini;if(i1‖i12){cont错误的月份号end1;break;}cont……monthname[i-1]end1;}}4.编写程序将n个数按逆序输出,要求使用指针。思考:可以假设两个指针变量p和q,分别指向最后一个和第一个数组元素,而后互换*p和*q即可。程序设计如下:#includeiostream.hvoidmain(){constintN=5;inta[N],*p=a,*q,t;for(inti=0;iN;i++)cin*p++;//输入数组元素p--;//将p指向最后一个数组元素for(q=a;qp;p--,q++){t=*p;*p=*q;*q=t;}p=a;for(i=0;iN;i++)cout*(p+i)\t;coutendl;}5.有n个人围成一个圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号。程序设计如下:#includeiostream.hvoidmain(){inti,k,m,n,num[50],*p;coutinputnumberofperson:n=;cinn;p=num;for(i=0;in;i++)*(p+i)=i+l;//从1到n对每个人进行编号i=0;//i为每次循环时的计数变量k=0;//k为按1,2,3报数时的计数变量m=0;//m为退出人数while(mn-1)//当退出人数比n-1少时(即未退出人数大于1时)执行{if(*(p+i)!=0)k++;if(k==3)//对退出的人的编号置为0{*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;//报数到尾后,i恢复为0}while(*p=0)p++;coutendlthe

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功