高级语言C++上机实习指导_第1页
高级语言C++上机实习指导_第2页
高级语言C++上机实习指导_第3页
高级语言C++上机实习指导_第4页
高级语言C++上机实习指导_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级语言程序设计一C++语言

上机实习指导书中国民航大学内容简介本书是作者为了更好地配合课堂教学,帮助同学们掌握好《高级语言程序设计》这门课的知识,配合《C++语言程序设计》(第三版)教材而编写的上机实习指导书。全书共分八个实验和三个附录。实验部分主要包括:VisualC++开发环境应用入门,C++简单程序设计,函数的应用,数组,指针,类与对象,继承与派生,综合实验。附录包括:实验报告格式,高级语言课程设计封面格式和三套训练试题。本书内容循序渐进、深入浅出,可作为本科计算机及相关专业“C++语言程序设计”课程的配套实验教材,同时也可供自学人员阅读参考。目录实验一VisualC++6.0开发环境应用入门【实验目的】.了解实习所用C++程序编译系统的基本操作方法,学会独立使用该系统完成C++程序从编辑、编译、连接到运行、调试的全过程。.通过运行简单的C++程序,初步了解C++源程序的特点,掌握C++程序实习的全过程。.熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。.掌握数学表达式的程序表示方法。.熟悉并掌握VisualC++集成环境的使用。【实验要求】请同学们在课外复习所学内容,预习【实验指导工在上机实验过程中,通过完成【实验内容】熟悉并掌握VisualC++集成环境的使用方法,完成程序运行与调试任务。【实验指导】一、使用VC++6.0建立并运行控件台界面的工程步骤:[、启动VC++6.0系统(注意:上机时实际安装启动菜单可能与下面不符)。©)⑤©档置索文设搜□a闵©)⑤©档置索文设搜□a闵国MicrosoftWord电MicrosoftVisualBasic 6.0中文版►®CorelPrintOffice2000 ►国ACDSystems ►®五笔打字员 ►国MicrosoftVisualSourceSafe ►®MicrosoftVisualStudio6.0EnterpriseTools>囱MicrosoftVisualStudio6.0Tools ►•・,MicrosoftVisualC++6.0%MicrosoftVisualFoxPro6.08MicrosoftVisualInterDev6.02、进入集成开发环境后,点击菜单“文件”中的“新建”项。

,•创天中文VC++I文件编辑查看插入工程编译工具窗口都助新建..Ctrl+N苏打开…新建..Ctrl+N苏打开…~Ctrl+O

结束H保存Ctrl+S另存为&全部保存页面设置…昌打印…Ctrl+P新近的文件新近的工作区喧|勺一二▼|厄国西聃际而退出3、进入新建页面,在“工程”选项卡中选择“Win32ConsoleApplication”项,按下来添写页右侧的两个文本框:点击的喧|勺一二▼|厄国西聃际而退出文件工程I工作区I其它文档I?|x|4^进入Win32consoleApplication-Step1of1后点击“完成"按钮。••ChStudent-创天中文VC++-|g|x|文件ma壹看领人工程■话工具»□学助心j。 -0因它*W«M7$7MMOJHILKH习MI……“ ;2Eh•译、il忒卜械文件l\糕文件2\楮办SQLDeburr;<|| ・「Rea4y7、在工程中建立C++源文件:再点击“文件”菜单下的“新建”项,选择“文件”选项卡的“C++SourceFile”项,在右侧“文件”文本框中填写文件名称,点击确定。8、进入程序编辑界面,在程序编辑区输入源程序。CisStudent-创天中文VC++-[stucpp]B六件«Ugt谑入工程«1*工具«口奥助 .hixi9、输入完源程序后,点击编译、和链接按钮,在错误提示窗口查看错误信息,并修改错误,再进行编译和链接程序,直到编译和链接完通过,再点击执行按钮执行程序。10、查看运行结果后,按任意键,回到程序编辑界面。【程序调试技术】1错误的种类一般常见错误可分为:编译错误、链接错误和运行错误(包括运行出错、有时运行出错,运行结果不正确及运行结果有时不正确)。2常见错误编译错误可以查看错误号及错误说明,一般由语法错误引起。例如:花括号或圆括号不配对、语名结束时漏掉分号、语法中的标点符号用中文格式、变量或函数名未定义、变量或函数名随定义但在使用时写错、语法格式有误等等。这些错误有可能是连环发生,随然出现了很多错误,但只要将头几个错误改正即可高度通过。所以在调试错误时要从第一个错误开始依次究正。链接错误一般是找不到相应的链库或库函数。有可能写错误了包含语句,或版本不对,有时系统安装不正确也会产生此类错误。常见的运行错误有:变量未初始化就使用、使用野指针、指针越界、逻辑错误等等。3调试跟踪技术如果程序出现运行时错误,就看不到有关错误信息,很难定位错误,这时就用到了调试跟踪技术。调试程序常用的快捷键有:Ctrl_F10:运行到光标处。F10:运行下一条语句。F11:跟踪到函数内部。例如:下图演示了当按Ctrl_F10后程序运行到光标所在行时的情况。

由tfQ0由tfQ0X电©C阳岩0【实验内容】输入并运行如下程序:[程序1]ttinclude<iostream.h>voidmain()(cout«w大家好!这是我的第一个C++程序!\n”;}【实验提示】该程序只有一个主函数,其功能是在显示器上输出一行字符串,请同学们练习C++源程序的录入、编辑、保存、编译、运行的全过程,并注意观察输出的结果。[程序2]ttinclude<iostream.h>voidmain()cout<<"*************************************************\n"cout«” Verygood\n>,;cout<<"*************************************************\n"【实验提示】该程序只有一个主函数,其功能是在显示器上输出3行字符串,请同学们注意建立新程序的方法,分析该程序与[程序1]的不同。[程序3]#include<iostream.h>voidmain(){inta,b,c;a=5;b=6;c=a+b;cout«<<a+b=M«c«M\nM;【实验提示】该程序只有一个主函数,其功能是求变量a与b之和,并将其值打印出来。请同学们注意积累程序运行的经验,分析程序运行的结果。[程序4]#include<iostream.h>voidmain(){inta,b,c;cin»a»b;c=a+b;cout«“a+b="«c«endl;【实验提示】该程序只有一个主函数,其功能是从键盘给变量a与b输入值,如:45[回车](注意在4与5之间用“空格”分隔)请同学们注意查看程序运行的结果,当再次运行该程序,给a与b输入不同值时,结果会如何?[程序5]ttinclude<iostream.h>voidmain(){inta,b,max;cin>>a»b;if(a>b)max=a;elsemax=b;cout«"max="«max«endl;【实验提示】该程序只有一个主函数,其功能是在[程序4]的基础上进一步比较所输入的a与b的大小,并求出其中的大者,请同学们运行、调试该程序并分析结果。[程序6]#include<iostream.h>voidmain(){inta,b,c,max;cin>>a»b»c;max=a;if(max<b)max=a;if(max<c)max=c;cout<<"max="<<max<<endl;【实验提示】该程序只有一个主函数,其功能是在[程序5]的基础增加了一个变量c,并求出3个变量中的最大值,请同学们运行、调试该程序并分析结果。思考如何求三个数的最小值。[程序7]ttinclude<iostream.h>intmax(m,n){intt;if(m>n)t=m;elset=n;returnt;voidmain(){inta,b,c,dl,d2;cin>>a>>b»c;dl=max(a,b);d2=max(dl,c);cout<<“max=”<<d2<<“\n";}【实验提示】该程序除了有一个主函数外,还有一个max()函数,其功能是在[程序6]的基础上将求2个数中最大值的功能用函数max()来实现,请同学们运行、调试该程序并试着分析运行结果。实验二C++简单程序设计【实验目的】.掌握C++的几种基本数据类型及各种运算符,熟悉它们的使用方法与使用要点,特别是自加(++)与自减(-)运算符的使用。.掌握利用if结构实现选择结构的方法。.掌握利用switch结构实现多分支选择结构。.练习并掌握利用while语句、for语句、do_while语句实现循环结构的方法。.掌握循环结构和选择结构的嵌套设计方法。.掌握多重循环的设计方法,掌握控制语句break、continue语句的使用方法。【实验内容】1.以下C++程序的功能是:从键盘依次输入4个整数,计算并输出这4个数的平均值。#include<iostream.h>voidmain(){inta,b,c,d,av;cout<〈Tnputa,b,c,d:”;cin»a»b»c>>d;av=(a+b+c+d)/4;cout〈<"av="〈<av〈〈endl;【实验提示】观察运行结果,想一想为什么。如果想使计算结果为合理,如何修改程序?分清C++语言整数除法(/)和实数除法(/)的区别。.编程计算下面数学表达式的值120024-4x5abc+Jd120024-4x5abc+Jd+y【实验提示】注意数学表达式与C++语言表达式的区别。.阅读以卜程序并修改其中的错误:^include<iostream.h>voidmain(){inta,b,c,x,y;inti=j=0,a;floatf,g,h;f=g=h=1.6;x=(a=10,b=100,c=50);y=h;f+=(float)(x+y);c=++a+b-;c——;j=b++%—a;i=g/l;cout<<w\nfloat=w«sizeof(f)«wint=w«sizeof(a+b));cout«u\nx=w«x«wy<<y<<”f=w«f;cout«wc=w«c++«wj=w«j«wi=w«i;【实验提示】1)自增(++)与自减(~)运算符若写在整型变量之前,则先进行对变量自增1或自减1,然后使用变量的值。2)自增(++)与自减(-)运算符若写在整型变量之后,则先使用变量的值,然后再进行对变量自增1或自减loSizeof用于计算数据类型所占的字节数。编程计算半径r=2.5的圆面积、圆周长、球面积、球体积及球表面积。如果高h=4.5,计算圆柱体的表面积和体积。显示结果保留两位小数。【实验提示】针对实际问题,如何设计变量的类型,才能使程序更符合实际问题。采用什么样的输出效果,才能使程序输出简单明了。5、程序调试下面的程序,按颜色代码和颜色名称的对应关系,根据输入的颜色号,输出对应的颜色名称:0--Black,1—Blue,2—Green,3—Red,4—Yellow#include<iostream.h>voidmain(){intcolor;/*用整型数表示颜色号*/cout<<z/Entercolornumber:cin»color;switch(color){case0:cout«*Black'n";break;case1:cout«,zBlue\n”;break;case2:cout<<"Green'n”;break;case3:cout<<"Red\n”;break;case4:cout«*Yellow'n";break;default:cout<<zzErrorInput'n";【实验提示】1)上机运行以上程序,使用VisualC++中跟踪执行功能查看程序执行过程。2)体会break语句的作用。去掉若干个break语句,观察运行结果有什么变化。3)试着将程序结构改为嵌套if结构。运行并查看结果。6.程序改错:下面程序为:输入一个不多于5位的正整数,求出它是几位数,分别打应出每一位数字,并按逆序方式打印出各位数字(例如345,输出543).#include<iostream.h>voidmain(){charcl=c2=c3=c4=c5=,';intn;longintx;cin»x;if(x>10000)n=5;elseif(x>=1000)n=4;elseif(x>=100)n=3;elseif(x>=10)n=2;elsen=l;switch(n){case5:cl=x%10+,O';x=x/10;case4:c2=x%10+,O';x=x/10;case3:c3=x%10+*O';x=x/10;case2:c4=x%10+*O';x=x/10;case1:c5=x%10+*O';x=x/10;cout<<wn=w«n<<endl;cout««c5«c4«c3«c2«c1«endl;cout<<cl«c2<<c3<<c4<<c5«endl;【实验提示】1)程序中用一个多重选择来判断输入的整数是几位数:用switch语句对不同位数的整数进行分离数字的处理。2)程序中cl=x%10+'0'等语句的作用是将x除以10的余数转化为数字字符。假设x=23,则x%10+'O'就是数字字符'3',而不是整数3。7程序设计从键盘输入一个四位正整数。首先分离出该正整数中的每一位数字,并按逆序显示输出各位数字;然后用分离出的每位数字组成一个最大数和一个最小数,并显示输出。例如:若输入的四位正整数为3175。按逆序显示输出分离出的各位数字为5713;组成的最大数为7531,最小数为1357。程序设计的具体要求:1)输入前要有提示。并检查输入数据的合法性,若输入的数据不合法,则显示输出错误信息。2)对输出结果要用英文或汉语拼音进行具体说明。【实验提示】1)首先要判断输入的数据是否是四位正整数。2)然后分离出该四位正整数的四位数字,例如从千位到个位依次为a,b,c,d,则按逆序显示输出为dcbao3)最后对四位数字a,b,c,d按从小到大进行排序,按该顺序组成一个最大数,按逆序组成一个最小数。8.编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:1)能同时被3,5,7整除;2)能被其中两个数(需要指出哪两个)整除;3)能被其中一个数(需要指出哪两个)整除:4)不能被3,5,7任一个整除。【实验提示】1)判断能否被某一个数整除应采用求余运算。2)在一个程序中利用选择结构把四种可能的信息全部表示出来。9.编写一个程序,判断输入的字符是否为Q或q,是则输出Quit!,否则输出No。10.编写程序计算下面分段函数的值:,2x+5 (x<0)f(x)=yx-x+3(0Wx<10)

jx-7x (x,10)I具体要求如下:(1)用if语句实现分支,自变量和函数值均用双精度类型。(2)自变量用scanf函数输入,给一些输入提示。(3)分别输入三种区间中x的值,检查输出函数值是否正确。.以下程序,输出下三角形状的乘法九九表。#include<iostream.h>^include<iomanip.h>〃格式操纵符头文件voidmain(){inti,j;for(i=l;i<=9;i++) /*打印表头*/cout«setw(4)<<i;cout<<endl;for(i=0;i<=50;i++)cout«w_w;cout<<endl;;for(i=l;i<=9;i++) /*循环体执行一次,打印一行*/{for(j=l;j<=i;j++)cout«setw(4)«i*j;/*循环体执行一次,打印一个数据*/cout«endl; /*每行尾换行*/cout<<endl;【实验提示】输入并执行该程序,观察并分析输出结果。.用迭代法求方程x3-x-l=0在x=l.5附近的根。要求:首先把方程变换为迭代公式:x=V7TTi用1.5作迭代的初值,结束条件为两次近似解之差的绝对值小于0.OGOU参考程序如下:#inc1ude<iostream.h>#include<math.h>voidmain(){floatxl,x=l.5;do{xl=x;x=pow((x+l),1.0/3.0);}while(fabs(x-xl)>=0.0001);cout«x«endl;【实验提示】1)程序中用了powO函数求得爪”的值,注意1/3在C++语言中应表示为1.0/3.0(两个整数相除的结果为一个整数,因此1/3的值为0)。2)程序采用do-while循环结构,按题目要求x的初值为1.5,将上一次求出的x的值赋值给xl,然后利用迭代公式求出新的x值,当|x-xl|>=0.0001时迭代结束。fabs()函数为对浮点型数求绝对值函数。.程序填空下面程序的功能是验证哥德巴赫猜想(即任意一个偶数可以分解成两个素数之和)。#include<iostream.h>#include<math.h>voidmain(){inta,b,c,d;cin»a;for(b=3;b<=a/2;b+=2){for(c=2;c<=sqrt(b);c++)if()break;if(c>sqrt(b))d=;elsecontinue;for(c=2;c<=sqrt(d);c++)if()break;if(c>sqrt(d))cout«a«w«b«w<<d«endl;;【实验提示】1)假设偶数2寸+&首先判断a是否是素数;若是,则判断d=a-b是否是素数,若a不是素数,则不需要判断d=a-b是否是素数。2)该题的关键是判断素数,素数的判断方法可以采用筛选法。请同学们注意复习课堂教学内容。一个偶数可分成多组素数之和,是素数的前提必须首先是奇数,因此外循环的初始值是3,步长是2。14.程序设计.计算下列级数和:S„=1+2/1+3/2+5/3+8/5+13/8+…+a„/a0T其中,由键盘输入si=L具体要求:要求不断地从键盘上输入n值,求出n值所对应的级数和。当输入的n值不符合条件,即n<=l时退出循环。每输入一个n值,求出对应的级数和并输出。输出形式如下:好具体值,$=级数和的具体值【实验提示】1)计算级数和的过程中应采用双精度运算。2)在该级数中,a”的通项公式为:ao=l,a)=l,aFan-i+an2,n=2,3…也可以理解为后一项的分子等于前一项分子与分母之和,而分母等于前一项的分子。.试编程计算1!+2!+ +20!«.打印出所有的水仙花数,所谓“水仙花数”是指一个3位数,其格外为各位数字立方和等于该数本身.例如,153是一水仙花数,因为153=1,53+33。.求S=a+aa+aaa+…+aa…a(n项)之值,其中a是一个数字。例如2+22+222+2222+22222(此时n=5),n和a的值由键盘输入。.先生的岁数的平方与他夫人的岁数之和是1053,而他夫人岁数的平方与他的岁数之和是873,请编程计算李先生及他的夫人的岁数各是多少。.公鸡每只5元,母鸡每只3元,小鸡每只1元;用100元买100只鸡,问公鸡、母鸡、小鸡各买多少只。.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。.一球从100m高度自由落下,每次落地后反跳原高度的一半,再落下。求它在第10落地时,共经过多少米?第10次反弹多高?实验三函数的应用【实验目的】.掌握函数的定义和调用方法.掌握函数嵌套调用和递归调用的方法。.掌握函数中参数的两种不同传递方式。.了解函数的重载、函数模板、内联函数、带默认值的函数等概念【实验内容】一、程序填空以下程序可计算10名学生1门课程成绩的平均分。#include<iostream.h>floataverage(floatarray[10]){inti;floataver,sum=array[0];for(i=l; [1] ;i++)sum+= ⑵ ;aver=sum/10;returnaver;voidmain(){floatscore[10],aver;inti;cout«”\ninput10score:n;for(i=0;i<10;i++)cin»score[i];aver= [3];cout<<"\naveragescoreis"«aver;【实验提示】1)主函数对子函数的调用采用的是赋值语句形式。2)子函数average的功能是求10名学生同一门课程的平均成绩。请思考若每名学生有3门课程,如何求每人及每门课程的平均成绩?3)思考:如何设计成绩排序的子函数?二、程序改错以下程序中函数factorial()的作用是求相应数字的阶乘,并将所求得的值作为函数结果返回主函数。ttinclude<iostream.h>voidmain(){intn;doubles;cin«n;doublefactorial(intn);s=factorial(n);cout»"n的阶乘is"«s«endl;doublefactorial(intn);{doubleresult=l;while(n>lI|n<170)result*=-n;return(result);【实验提示】1)子函数写在主函数之后时,应在调用之前对子函数加以说明。2)当输入n值较大时,阶乘的值可能会超出整型数的范围,因此,阶乘的值保存在double型变量中。3)思考:子函数中求阶乘的方法用for循环应如何实现?三、程序设计.用传值和传址两种方法将主函数中的整数x送到求平方值的子程序sqr()中,返回主函数后打印x的平方。.编写一个函数能将主函数传过来的十进制整数转换成八进制整数。.编写一个函数能将主函数传过来的数组按行分别进行从小到大的排序,再编写一个二分法查找函数判定主函数传过来的待查数是否在已排序的数组中,若查到则返回它在数组中的位置(可以在多个位置上出现),否则返回-1。.用递归方法求1+2+3+4+…+n。.编写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。准备5个以上测试数据。验证程序执行结果是否正确。.编写程序,计算卜面公式并输出结果。"(n要求:(1)编写一个函数计算n!(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。(4)运行程序并计算c;、。;、.将一个正整数n以相反的顺序输出的递归算法可以如下描述:如果 要输出的整数只有一位则 输出该整数否则输出整数的个位数字反向输出除个位以外的全部数字结束根据此算法设计的递归算法如下:voidprintn(intn){if((n>=0)&&(n<=9))cout<<n;else{cout<<n%10;printn(n/10);请编写主函数,调用上述算法,反向输出正整数n。如输入123,则输出321。实验四数组【实验目的】.掌握一维、二维数组的定义和引用方法,通过实习进一步了解二维数组的实际意义。.掌握字符数组和字符串函数的使用方法。.学习利用指针表示数组及其元素的常用形式。.掌握与数组有关的程序设计方法与算法(如排序、查找等)。【实验内容】一、程序填空顺序查找法:在数组a中顺序查找值为y的元素。若数组a中不存在该元素,则输出不存在;若存在,则显示元素对应的下标值,然后继续查找直到最后一个元素为止。ttinclude<iostream.h>#defineN10voidmain(){inta[N],y,k,flag;cout«”Pleaseinputthey:“;cin>>y;cout«"Pleaseinputthea[N]:";⑴ ;do{cin»a[k];k++;)while(k<N); [2] ;k=0;while(k<N){if(⑶);else{cout<<“值为"<<y<<”的元素下标为:"<<k«endl;flag++;⑷ ;}if(flag=0)cout<<“值为"<<y<<”的元素不存在"<<endl)【实验提示】

flag变量标识数组a中出现y值的次数。3)2)凡是参与运算的变量必须先赋初值。3)请同学们思考:利用“折半查找法”程序应该如何修改?二、程序改错(不能增行、删行,也不能更改程序结构)读入一个字符串(长度<20),将该字符串中的所有字符按递减顺序排序后输出。#include<iostream.h>#include<string.h>#defineM20voidmain(){chars[80],c;inti,j;cout<<“\n请输入字符串:“;gets(s);cout«u\n原字符串:w<<s«endl;for(i=strlen(t);i;i-)for(j=0;j<i;j++)if(t[j]>t[j+l]){c=t[j];t[j]=t[j+1];t[j+1]=c;}cout«“\n排序后的字符串:"<<s«endl;【实验提示】1)结合基本的排序算法,将字符串中各字符的ASCII码依次进行比较排序。”转义字符表示”字符常量。3)请同学们思考:该程序中采用的是哪种排序方法,如何修改为其他排序法?三、程序设计.数组s中存放有N位同学的某一门课程的成绩。试编写程序求出有多少名同学的成绩高于此门课程的平均分。【实验提示】1)2)1)2)3)输出N位同学的成绩后,先求平均值,再统计高于平均分的个数。思考如何实现:将N位同学的成绩利用冒泡法或选择法进行排序。.数组中存放N个数据,请编写程序删除下标为奇数的元素,使得数组中只存放下标为偶数的元素。【实验提示】依次取出数组中的每一个元素,当取到下标为奇数的数组元素时用其后紧邻的下标为偶数的数组元素覆盖它。.若有一字符串正反读都一样(如level、madam),称之为回文。请编写一程序验证输入的字符串是否为回文。.将一个数组中的值按逆序重新存放。例如,原来顺序8,6,5,4,1,要求改为1,4,5,6,8编程实现之。.设有下列矩阵:12345678A=9101112L13141516请编程序找出符合下列特征的所有元素,并打印出他们在矩阵中的位置:(1)它们既是所在行的最小值,又是所在列的最小值;(2)它们既是所在行的最大值,又是所在列的最大值:(3)它们是所在行的最小值,却是所在列的最大值;(4)它们是所在行的最大值,却是所在列的最小值。.编写程序,将上题中的矩阵用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。.编写程序,将两个字符串连接起来,要求不使用strcat()函数。.输入三个字符串,请使用字符串比较函数将这三个字符串排序后按从小到大的顺序输出。实验五指针【实验目的】.学习并理解指针的概念和使用方法。.学会使用数组的指针和指向数组的指针变量。.学会使用字符串指针和指向字符串的指针变量。.学会使用函数的指针和指向函数的指针变量。.了解指向指针的指针的概念及其使用方法。【实验内容】一、程序调试.运行并分析以下程序^include<iostream.h>voidmain() /*内存地址*/{charc='A';intn=999;floatpi=3.14;char*cp;int*np;float*fp;cp=&c,np=&n,fp=πcout<<" ******变量在内存中的地址******\n\n”;cout<<“字符变量c的值为"<<c<<",它在内存中的地址为:"<<cp«"\n”cout<<"整型变量n的值为"<<n<<",它在内存中的地址为:"<<np〈<“\n”cout<<“实型变量pi的值为"<<pi<<",它在内存中的地址为:"<<fp«"\n”cp='B'; /*改变指针变量所指地址的内容*/np=lll;fp=3.14159;cout«w ******指针所指地址内容改变后:******\n”;cout<〈“字符变量c的值为"<<c«"它在内存中的地址为:"<<cp«"\n”cout«"整型变量n的值为”《n«”,它在内存中的地址为:”《np«“\n”cout<<“实型变量pi的值为" ,它在内存中的地址为:"<<fp〈<“\n”【实验提示】1)以十六进制方式输出变量在内存中的地址2)将指针所指内存单元的值用图表示出来。3)请运行程序,注意记录程序的运行结果,将指针改变指向前后的状态画出来。4)分析指针改变指向后指针的值、指针所指内存单元值的变化情况,给出结论。.输入两个整数a和b,将它们进行交换并打印出来,下面的程序能否达到要求?#include<iostream.h>voidmain(){inta,b;int*pl,*p2,*p;pl=&a;p2=&b;cin»pl>>p2;p=*pl;p2=*pl;pl=p;cout«aa=w«*pl«>>,b=w«*p2;【实验提示】1)指针变量在定义之后的初始化,一定要使指针变量在使用之前指向一个明确的内存单元。2)结合课堂教学内容认真思考如何实现指针所指内存单元值的交换?3)总结利用指针实现数据交换的基本方法。3.用计数排序的方法正确排出名次。算法是:假设数组A有20个元素,首先用A(1)与其他各元素比较,看看比A(1)大的有多少个(按从大到小排序)。若有K个,则A(1)的名次就是K+1,存放在数组元素JU(1)中;然后用A(2)与A(1)—A(20)比较,确定A(2)的名次存放在JU(2)中。依此类推,对余下的A(i)重复进行比较,直到A(20)为止,这就确定了所有的元素的名次。该算法比较简单,不必进行数据交换,最后原数组A中各元素位置保持不变,但比较工作量大(为「,n为数组元素个数)。请将下面的程序调试正确。#include<iostream.h>voidmain(){floata[20],*pa;intju[20],i,j,k;pa=a;for(i=0;i<20;i++)cin>>pa+i;for(i=0;i<20;i++){k=i;for(j=0;j<20;j++)if(*pa[j]<*pa[i])k=k+l;ju[i]=k;for(i=0;i<20;i++)cout«*pa[i]«w,w«ju[i]«endl;【实验提示】1)复习关于指针与数组的知识,理解利用指针进行数组运算的方法。2)分析程序,总结利用指针进行数组输入与输出的基本特点。3)思考程序中排序方法是冒泡法、选择法、还是其他方法?二、程序填空#include<iostream.h>voidmain(){int*a,*b,*c,num,x,y,z;a=&x,b=&y,c=&z;cout«”Pleaseinputthreeinteger:99;cin»*a»*b»*c;cout«*a«" "<<*b<<” “<<*c;num=*a;if(*a>*b)(1) ;if(num>*c)(2) ;cout«”Pleaseprintthelowestinteger:99«num;}【实验提示】1)首先一定要正确理解&和*的作用:&是取地址运算符,*是取值运算符2)算法要点:用指针操作,如何求三个数中的最大值?3)相关分析:若不用指针操作,如何求三个数中的最大值与最小值?三、程序改错(要求不能增行、删行,也不能更改程序结构):#include<iostream.h>intsub(int);voidmain(){inti,k;for(i=0;i<4;i++){k=sub(&i);cout«k;}cout«endl;}intsub(ints){staticintt=0;t=&s+t;}【实验提示】1)函数实参的类型、个数必须与形参的类型、个数一一对应。2)函数sub中的t为局部静态变量,只赋一次值,每调用一次其值均保留。3)请同学们认真思考该程序的功能是什么?4)请试着将函数参数改为整型变量,修改并调试程序。四、程序设计.从键盘上输入3个整数,通过指针运算,找出3个数中的最大值与最小值和它们的地址,并实现最大值与最小值的交换,要求用指针作为函数参数的处理方法。.将若干个整数存储在数组中,通过指针运算求出其中最小值及其数组下标。.有若干英文单词存储在一维数组中,单词间用空格分开,编程通过指针运算将每个单词第一个字母改写为大写字母。.编写程序将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制。.编写程序,利用指针运算删除字符串s中从第n个字符开始的连续m个字符。.用指针数组和多级指针编制程序,要求从键盘输入一个3*4的整型二维数组,然后计算该数组所有元素之和及平均值,显示计算结果。.用指针和指针数组编写一个程序,实现下述功能:先输入5个字符串,对每个字符串按字符进行从小到大的排序,然后再对这5个字符串进行从小到大的排序。.请编写函数int*fun(char*st),其中st是仅由字符a、b和c组成的字符串。它的功能:统计字符串st中“a”,"b”,“c”的个数并分别存入某内存区,带回内存区的首地址。例如:字符串st的内容为“abababcc”,则程序将输出“3,3,2”。.假设某班有30个学生.每人6门功课,如下表示:学号数学哲学物理外语化学计算机总分名次9300189917080778193002768790818273请编程序先计算各人的总分,然后排出名次。实验六类与对象【实验目的】.学习类的声明方法,掌握类成员函数的定义形式。.理解对象的概念,掌握对象的定义和使用方法。.学习构造函数和析构的作用及其使用方法函数。.学习类的组合,基本掌握类模板的使用方法。【实验内容】.试分析以下程序的运行结果并上机验证。#include<iostream.h>classSample(intx;public:Sample(){}Sample(inta){x=a;}Sample(Sample&a){x=a.x+++10;}voiddisp(char*ob){cout«ob«wx二"«x«endl;}voidmain(){Samplesi(2),s2(si);s3;s3=s2;disp("si.”);disp(“s2.”);disp(“s3.”);运行结果为: .试分析以下程序的运行结果并上机验证。^includeaiostream.hwclassSampleintA;staticintB;public:Sample(inta){A=a;B+=a;}Staticvoidfunc(Samples);};voidSample::func(Samples){cout«wA="«s.A«w,B=W«B«endl;}intSample::B=0;voidmain()Samplesi(2),s2(5);Sample::func(si);Sample::func(s2);运行结果为: .以下是一个类中包含另一个类对象成员(类的组合)的例子,试分析并给出程序的运行结果。ttinclude“iostream,h”classSonintage;public:Son(){age=l;}Son(inti){age=i;}voidprint(){cout«>,儿子的年龄是:9,«age«endl;}classFatherintage;Sonsi,s2;public:Father(intal,inta2,intf):s2(a2),si(al)〃带对象成员初始化表的构造函数voidprint(){cout«M父亲的年龄是:99«f«endl;}Sonfegetsl(){cout«w第一个“;returnsi;}〃访问对象成员si的函数Son&gets2(){cout«w第二个“;returns2;Jvoidmain()Fatherf(10,5,38);print();getsl().print();gets2().print();运行结果为: 4.以下是一个用外部函数对两个类对象进行比较并求出最大致的程序。该程序一方面反映了对私有成员的访问过程,另一方面示例了对象成员作为函数参数时的形式,也表现了类成员函数同普通函数一样,可以拥有各种类型的形参(不一定与泪的数据成员有关)。试分析并给出程序的运行结果。#includeaiostream.classStudentintscore;public:Student(ints){score二s;}voidshow(charxh[]){cout<<xh«w该学生成绩是:“<<score<<endl;}intgetscoreO;intStudent::getscoreO(returnscore;)intmax(Student&sl,Student&s2){return(si.getscore()>s2.getscore())}?sl.getscore():s2.getscore();}voidmain()Studentsi(95),s2(59);show("si");show(“s2”);cout«w较高的成绩是:"max(si,s2)<<endl;运行结果为: .定义一个类score,它含有私有数据成员english_score>公有成员函数setscore()和printscore(),其中setscore()用来设置englishscore的值,printscore()用来输出english_score的值。在主程序中定义类score的两个对象stul和stu2,其英语成绩分别为85和93,输出这两个分数。.下面是一个计算器类的定义,请完成该类的实现并在主函数中先将计算器给定初值99,然后进行二次加1,一次减1,最后显示计算器的值八classcounterintvalue;public:counter(intnumber);voidincrement();〃给原值加1voiddecrement();〃给原值减1intgetvalueO;〃取得计数器值voiddisplayO;〃显示计数器值*7.用类结构的形式编写一个程序,使其可事先输入n个学生的姓名和出生日期,并按年龄从小到大进行排序输出。实验七继承与派生【实验目的】.学习使用继承方式派生新类的方法。.进一步加深对访问权限的理解。.掌握派生类构造函数和析构函数的调用次序。.学习利用虚基类解决二义性问题【实验内容】1.|下列程序中,基类base和派生类dl、d2中都含有私有、保护和公有成员dl类是base的派生类,d2是dl的派生类。试分析下列程序的访问权限。#include<iostream.h>classbase(private:intnl;protected:intkl;public:base(){nl=0;kl=l}voidfunl(){cout«nK<kl«endl;}classdl:publicbase{private:intn2;protected:intk2;public:dl(){n2=10;k2=ll;}voidfun2(){cout«nl«kK<endl;cout<<n2<<k2«endl;}classd2:publicdl{private:intn3;protected:intk23public:d2(){n3=20;k3=21;}voidfun3(){cout<<nl«kK<endl;cout<<n2«k2<<endl;cout«n3<<k3<<endl;}voidmain(){basebaseobj;dldlobj;d2d2obj;baseobj.funl();dlobj.fun2();d2obj.fun3();1)回答下列问题:(1)派生类dl中成员函数fun2()能否访问基类base中的成员funl()>nl>kl?(2)派生类dl的对象能否访问基类base中的成员funl()、nl、kl?(3)派生类d2中成员函数fun3()能否访问直接基类dl中的成员fun2()、n2、k2?能否访问基类base中的成员funl()、nl、kl?(4)派生类d2的对象能否访问能否访问直接基类dl中的成员fun20,n2.k2?能否访问基类base中的成员funl()、nl>kl?2)以上程序有错,请改正并上机验证。.试分析以下程序的运行结果并上机验证。#includeaiostream.hvclasspersonchar*name;intage;char*add;public:person{cout«,,personclassconstructor.”«endl;}person()(cout<<>,personclassdestructor.”;)};classstudent:person{char"department;intlevel;public:student(){cout«wstudentclassconstructor."«endl;}^student(){cout«wstudentclassdestructor.;}二_classteacher:person{char*major;floatsalary;public:teacher(){cout«wteacherclassconstructor.”<<endl;}^teacher(){cout«wteacherclassdestructor.ff;}};voidmain()studentsi;teachertl;运行结果为: .下列程序是一个有关虚基类及其派生类的初始化程序。如果虚基类定义有非默认形式的构造函数,在整个继承结构中,直接或间接及程虚基类的所有派生类,都必须在构造函数的成员初始化表中列出对虚基类的初始化。分析程序,写出程序运行结果并回答问题。#include“iostream,h”classBlpublic:intnl;Bl(intin_nl){nl=in_nl;cout<<>,Bl,nl=w<<nl<<endl;}classB21:virtualpublicBl{public:intn21;B21(inta):B1(a){n21=a;cout«,>B21,n21=w«n21«endl;}classB22:virtualpublicBl{public:intn22;B21(inta):Bl(a){n22=a;cout«wB22,n22=M«n22«endl;}classB3:publicB21,publicB22{public:intn3;B3(inta):Bl(a),B21(a),B22(a){n3=a;cout«wB3,n3=w«n3«endl;}voidmain()B3obj(5);运行结果为: 问题分析:(1)如果程序运行结果为:Bl,nl=5B22,n22=5B21,n21=5B3,n3=5上述程序应该怎么改?(2)如果将"B3(inta):…”中的B21(a)和B22的位置调换,程序的运行结果是否会有变化?4.编写程序,声明一个哺乳动物Mammal类,再由此派生出狗Dog类,要求其中必须包含输出信息的构造函数与析构函数;声明一个Dog类的对象,运行程序,观察基类与派生类的构造函数与析构函数的调用顺序。5编写一个能输入和输出学生和教师数据的程序,学生数据有编号、姓名、班号和成绩;教师数据有编号、姓名、职称和部门。要求声明一个person类,并作为学牛.数据操作类student和教师数据操作类teacher的基类。实验八综合实验【要求】.要求学生在进行综合性实验之前一定要充分理解、消化相关的概念并熟练学握程序设计的一般方法。.实验题目可以自选或参考指导性题目。.实验要求独立完成设计、编程、调试与总结。.实验结束后,按要求完成设计报告一份(A4纸)与程序一并上交。【综合性设计报告书写规范】.报告用A4纸打印,标题为黑体3号字,正文为宋体5号字。.题目说明:要求给出题目内容、学号、姓名、完成日期。.算法设计:要求给出设计思路.源程序清单:要求对变量和语句进行适当的注释。.程序运行结果。.程序分析(算法分析、结果分析、调试过程分析).小结:给出实验的收获、体会与建议。.“设计报告”电子版和纸制版同时提交。【综合性实验指导】综合性实验案例学号XXXXXXXX姓名XXX完成日期2005年6月1日指导教师XXX题目说明编写一个函数jsVa!ue(intm,intk,intxx口),该函数的功能是:将大于整数m且紧靠m的n个素数存入数组xx传回。最后调用函数writeDat。把结果输出到文件out.dat中。一、算法设计1)设计思路:该题目涉及到函数、数组、文件与素数的综合应用,特别是数组作为函数参数传递的具体要求,要求设计程序时必须熟练掌握相关基础知识,而且具有编写程序和上机调试的较强能力。根据题目要求可以设计4个函数实现相应的功能:mainO:实现题目要求的总体功能。jsValue(intm,intk,intxx口):实现题目要求的将大于整数m且紧靠m的k个素数存入数组xxoisP(intnum):实现素数判断功能,判断一个整数num是否是素数。>writeDat():实现将结果写入文件out.dat的功能2)4个函数的算法流程图如下:主函数main()初始化变量输入m与n调用JsValue()函数实现要求的功能调用writeDat()函数实现把结果输出到文件out.dat中jsValue(intm,intn,intxx[])函数变量定义for(i=0,j=m+l;i<k;j++)sP(j)?xx[i]=j;i++;ReturnisP(intnum)判断num是否为素数变量定义for(i=2;i<=num/2;i++)Return0return1writeDat()变量定义,打开文件out.datfor(m=0;m<n;m++)fprintf(fp,"%d\n",xx[m]);printf("%d\n",xx[m]);关闭文件out.dat二、源程序清单参考程序#include*iostream.h"#include<fstream.h>intm,n,xx[1000];/*定义外部变量叫n和外部数组xx*/intisP(intnum){inti;for(i=2;i<=num/2;i++)if(num%i==0)return0;return1;voidjsValue(intm,intk,intxx口){inti,j;for(i=0,j=m+l;i<k;j++)if(isP(j)){xx[i]=j;i++;}voidwriteDat()(ofstreamtfileC^out.dat",iso::out);for(m=0;m<n;m++)tfile.write((char*)&xx[m],sizeofxx[m])voidmain()cout«'zinputtwointegers:*;cin»m»n;jsValue(m,n,xx);for(m=0;m<n;m++)cout«xx[m]«*cout«endl;writeDat();三、程序运行结果.若输入17,5,则应输出:19,23,29,31,37.若输入51,4,则应输出:53,61,71,73,四、程序分析1、算法分析2、结果分析3、调试过程分析五、小结1、实验的收获与体会2、教学建议【综合性设计参考题目】以下题目供同学们参考,同学们可以根据自己的学习情况从中选择1个题目作为综合性练习的内容,也可以结合自己感兴趣的题目自拟题目。1、函数计算器设计:问题描述:输入函数表达式,输出计算结果或相应的错误提示。表达式的运算对象为实数常数,函数包括加、减、乘、除、正弦、余弦、指数、对数,分别用add、sub、mul、div、sin、cos、exp、log来代表,正弦和余弦函数只有一个参数,其它函数都有两个参数。例:输入表达式含义结果add(1.5,2)1.5+23.5sub(1.5,2)1.5-2-0.5mul(1.5,2)1.5*23.0div(1.5,2)1.5/20.75sin(3.14159)sinn0cos(3.14159)COS7T-1exp(2,3)2:,8log(10,2)lg20.3010div(add(1.5,2),sub(1.5,2))(1.5+2)/(1.5-2)-72、请为某小型会议设计一个参会人员管理程序。要求1)登录参会人员的下列信息:姓名(name)性别(sex)年龄(age)房间号(设每个房间只住一人)(romm_num)2)程序应分别用两个函数实现下列功能:随时对报到人员进行登录(login)随时按所住房间号(由小到大)输出已报到人员信息。(print)输入59人的数据并按房间号由小到大顺序输出这些数据。程序中变量要使用题中给定的英文名词。3,创建(Create)通讯录,并对它进行增加(Add)、查询(Find)、修改(Alter)删除(Delete),显示记录(List)等操作,要求设置菜单(Menu)退出(Quit)功能,通讯录人数定为30人,每人信息为姓名、年龄、性别、家庭电话、手机号码。4、建立一个文本文件,并设计以下操作函数:1)从键盘输入若干学生数据(姓名、英语成绩、物理成绩、高数成绩及总分);2)按姓名从中查找某一个学生的所有成绩;3)将文本文件中的学生数据按总分进行排队。5、居民数据包括:姓名name、出生时间birthday、性别sex、身份证号num、民族nationality、文化程度education、住址address、电话号码telNum、电子邮件地址Email.1)设计一个用数组处理一批居民数据的C语言程序。2)对上述居民数据按英文字母排序。3)设计一个用链表处理一批居民数据的C语言程序。4)对上述居民数据按年龄进行升序排序5)在已排好的居民链表中,删去一人或增加一人。6、在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组b口中;它既是完全平方数,又有两位数字相同,例如144、676等。请编写一个完整的程序用函数intjsValue(intbb口)实现此功能,将满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDatO把结果输出到文件out.dat中。7、请编写一个完整的程序用函数jsValue实现:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n_l)+F(n-2)最后调用函数writeDatO读取10个数据t,分别得出结果且把结果输出到文件out.dat中。8、选出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数的素数(如293)。计算并输出上述这些素数的个数ent以及这些素数值的和sum。请编写一个完整的程序用函数countValueO实现程序要求,最后调用函数writeDAT()把结果ent和sum输出到文件out.dat中。9,在文件in.dat存放了10位选手参赛,6位评委给选手打分的数据。计算各位选手的得分规则是去掉一个最高分和一个最低分,最后得分是剩下分数的算术平均值。请编写一个完整的程序用函数readDatO从文件in.dat中读取10位选手的评委打分数据并存入数组mark[10][6]中,并编写函数jsValue()计算出每位选手的得分并依次存入数组score[10]中,最后调用函数writeDat()把数组score中的值输出到文件out.dat中。说明:第1位选手的得分存入score[0]中,第2位选手的得分存入scored]中,依此类推。10.寻找并输出11至999之间的数m,它满足m、m?和一均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=lI,m2=121,m3=1331皆为回文数。请编写一个完整的程序用函数intjsValue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。11、在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。请编写一个完整的程序用函数readDat()读取这200组数据存放到结构数组aa中,用函数jsSortO实现:要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数的之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDatO把结果bb输出到文件out.dat中。12、现有一个10人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推;内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。请编写一个完整的程序用函数ReadDat()实现把选票数据读入到字符串数组xx中,用函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT.DAT中。13、设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请编写一个完整的程序用函数JoseghO实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。14、请编写一个完整的程序用函数ReadDat()实现从文件IN.DAT中读取100个六进制整数到字符串数组xx中:再编制函数Hl6To2(),招xx中的卜六进制数转换成二进制数并把已转换的二进制数仍存放在字符串数组xx,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)15、利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。X„H=COS(x„)迭代步骤如下:(l)把xl初值为0.0;(2)x0=xl,把xl的值赋给x0;(3)xl=cos(xO),求出一个新的xl;(4)若xO-xl的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);(5)所求xl就是方程cos(x)-x=0的一个实根,作为函数值返回。请编写一个完整的程序用函数countValueO实现程序的要求,最后调用函数writeDATO把结果输出到文件0UT17.DAT中。16、请编写一个完整的程序用函数ReadDatO实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;用函数encryptCharO按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*llmod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。17、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入结构数组sei1中。请编写一个完整的程序用函数SortDatO实现功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件0UT10.DAT中。18建立一个带有10个数的单链表,链表各结点的值由用户从键盘输入,计算机能在链表中找出值最大的结点,并把该结点删除、输出处理后的链表各节点的值。19建一个学生类,私有数据成员有:名字、年龄和分数。公有成员函数有构造函数和拷贝构造函数的定义,构造函数能为三个私有数据成员赋初始值。拷贝构造函数使得两个对象的名字和年龄相同,但新构造的对象的分数为0。建立能够修改学生分数的函数。显示函数能够显示对象的三个私有数据成员。析构函数用于释放内存空间。自定义主函数来证明你对该类定义的正确性。20建立一个姓名类,该类有两个数据成员:一个用于保存姓名一name,另一个用于标识出该姓名中的姓是由几个字组成(有可能有复姓的存在,或少数据民族的多字姓)一n,构造函数有三个:不带参数的构造函数使生成的对象名字只占20个字符空间,n为。。带一个字符指针类型的参数的构造函数能够将name初始化,n为默认值1。带两个参数的构造函数能够分别为两个私有数据成员赋初值。除构造函数外还有三个公有成员函数:一个函数能够返回该姓名的姓,另一个能设置对象的姓名和姓的字数值。最后一个是析构函数用释放内存空间。自定义主函数来证明你对该类定义的正确性。21定义一个学生类,该类能够存储和显示学生的名字、分数和统计学生的总人数。再定义一个教师类,能存储和显示教师的姓名和专业和统计教师总人数。再定义一个独立函数,该函数能够统计师生的总人数。自定义主函数来证明你对该类定义的正确性。附录A:《高级语言程序设计》实验报告格式《高级语言程序设计》实验报告实验名称:任课教师:实验名称:学号:姓名:完成日期:一、实验目的:二、实验内容:三、实验结果与结论:四、实验过程分析与建议:附录B:《高级语言程序设计》课程设计封面格式计算机科学与技术学院- 学年第二学期《高级语言程序设计》课程设计班级: 学号: 姓名: 教师: 成绩: 附录C:训练试题训练试卷(一)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)以下非法的赋值语句是A)n=(i=2,++i);C)++(i+l)B)j++;D)x=j>0;(2)设a和b均是double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是A)6.500000C)5.500000B)6D)6.000000有以下程序main(){intk=2,i=2,m;m=(k+=i*=k);cout«m«,\i;}程序运行后的输出结果是A)8,6C)6,4B)8,3D)7,4(4)已有定义:inix=3,y=4,z=5;»则表达式!(x+y)+z&&y+z/2的值是A)6C)2B)0D)11 x>0(5)有一函数:y={。x=0,以下程序段中不够根据x值正确计算出y—1x<0值的是A)if(x>0)y=l;if(x==0)y=0;elsey=-l;B)y=0;if(x>0)y=l;elseif(x<0)y=-l;C)y=0;if(x>=0)if(x>0)y=l;elsey=-l;D)if(x>=0)if(x>0)y=l;elsey=0;elsey=-l;(6)以下选项中,与k=n++完全等价的表达式是A)k=n,n=n+l B)n=n+l,k=nC)k=++n D)k+=n+l以下程序的功能是:按顺序读入十名学生四门课程的成绩,计算出每位学生的平均分并输出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;fbr(n=l;n<=10;n++){for(k=l;k<=4;k++){cin»score;sum+=score;}ave=sum/4.0;cout«n«ave;L述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是A)sum=0.0; B)sum+=score;C)ave=sum/4.0; Dcout«n«ave;有以下程序段intn=0,p;do{cin»p;n++;}while(p!=12345&&n<3);此处do一while循环的结束条件是p的值不等于12345并且n的值小于3p的值等于12345并且n的值大于等于3p的值不等于12345或者n的值小于3p的值等于12345或者n的值大于等于3有以下程序main(){inta=15,b=21,m=0;switch(a%3){case0: m++;break;caseI: m++;switch(b%2){default:m++;case0:m++;break;

程序运行后的输出结果是A)1 B)2C)3 D)4(10)若有说明:intn=2,*p=&n,*q=p;»则以下非话的赋值语句是A)p=q; B)*p=*q;C)n=*q; D)p=n;(11)有以下程序floatfun(intx,inty){retum(x-i-y);main(){inta=2,b=5,c=8;cout«fun((int)fun(a+c,b),a-c);程序运行后的输出结果是A)编译出错 B)9C)21 D)9.0(12)以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序:voidsort(inta[],intn){inti,j,t;fbr(i=0;i<n-l;i++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a|j];a|j]=t;}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)cout«aa[i];cout«endl;程序运行后的输出结果是A)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论