C++上机题目及答案1演示教学.doc
《C++上机题目及答案1演示教学.doc》由会员分享,可在线阅读,更多相关《C++上机题目及答案1演示教学.doc(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。C+上机题目及答案1-第一周上机题1. 以下语句描述了包含数学成绩的学生信息结构体及其数组a:structstudentcharname20;floatmath;studenta10=张三,90,李四,85,王五,73;intcount=3;/数组中包含的学生数编写两个函数分别实现在a数组中添加和删除学生信息。要求:1)原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2)以下数据用于添加:赵二,96,钱六,65,孙七,803)注意:添加,删除后count数据要相应变化。#includ
2、e#includestructstudentcharname20;floatmath;intcount=3;voidadd(studenta10);voiddele(studenta10);voidprint(studenta);voidmain()studenta10=张三,90,李四,85,王五,73;intn=0;docout.学生信息处理系统.n1-删除n2-增加n3-结束nn;if(n=1)dele(a);elseif(n=2)add(a);elsecout谢谢使用本系统!n;while(n!=3);voidadd(studenta10)studentstu;inti=0,n=cou
3、nt;coutstu.namestu.math;while(stu.mathai.mathⅈn-)an=an-1;/腾位置ai=stu;/插入count+;print(a);voiddele(studenta10)charname20;inti=0,n=count;print(a);coutname;while(strcmp(name,ai.name)!=0&i=n)cout查无此人!n;elsefor(;in-1;i+)ai=ai+1;/删除count-;print(a);voidprint(studenta)coutn最新学生信息:n;for(inti=0;icount;i+)cou
4、tai.nametai.mathn;2. 定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标点之间的距离。要求:编写函数求两坐标点之间的距离。#include#includestructpointdoublex,y,z;doubledistance(pointa,pointb);voidmain()pointa,b;couta.xa.ya.z;cinb.xb.yb.z;couta点的坐标:a.x,a.y,a.zn;coutb点的坐标:b.x,b.y,b.zn;couta,b两点的距离是:distance(a,b)endl;doubledistance(poin
5、ta,pointb)doubled;d=sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z);returnd;3. 某市青年歌手大赛聘请7名评委打分,下列程序协助进行评分统计。函数delmaxmin的功能是对一个选手的得分做以下计算:去掉一个最高分,去掉一个最低分,然后对剩余得分求平均分并保存。函数sort完成对n名选手的得分按平均分从高到低排序。【测试数据与运行结果】测试数据:程序中给定的初始化测试数据运行结果:li:94979896100999797.40zhang:96979898100979697.20zhou:
6、95100999697969797.00以下语句描述了包含数学成绩的学生信息结构体及其数组a:structcharplayer_name20;doublescore7,aver;PERSON3;#includestructPcharname20;doublescore7,aver;PERSON3;doubledelmaxmin(doublea7)doubleaver=0,sum=0,max,min;max=min=a0;for(inti=0;imax)max=ai;if(aimin)min=ai;aver+=ai;aver-=max+min;returnaver/5;voidsort(Pp3)
7、inti,j;Pa;for(i=0;i3;i+)for(j=i+1;j3;j+)/原程序:for(j=0;j3;j+)if(pi.averpj.aver)/原程序:if(pi.averpi+1.aver)a=pi,pi=pj,pj=a;voidmain()inti,j;cout请输入比赛选手的比赛数据:endl;for(i=0;iPERSONi.name;for(j=0;jPERSONi.scorej;for(i=0;i3;i+)PERSONi.aver=delmaxmin(PERSONi.score);sort(PERSON);cout比赛成绩如下endl;for(i=0;i3;i+)cou
8、tPERSONi.namet;for(j=0;j7;j+)coutPERSONi.scorejt;coutPERSONi.averendl;25个人围成一个圈,从第1个人开始顺序报号(1,2,3),凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。要求:函数voidseek(int*a,intn,int*pn)按上述要求在a数组,找出最后留在圈子中的人原来的序号并返回。主函数是:voidmain()intn=3;intnum;inta25,*p=a;for(inti=0;i25;i+)pi=i+1;seek(a,n,&num);cout”最后留在圈子中的人原来的序号是:”num
9、endl;*/#include#defineNUM10#includevoidseek(int*a,intn,int*pn);voidmain()intn=3;intnum;intaNUM,*p=a;for(inti=0;iNUM;i+)pi=i+1;for(i=0;iNUM;i+)coutsetw(3)ai;seek(a,n,&num);coutn最后留在圈子中的人序号是:num+1endl;voidseek(int*a,intn,int*pn)intnum=NUM;intk=1;inti;cout1)for(i=0;iNUM;i+)if(ai=0)continue;if(k+%3=0)ai
10、=0;num-;else*pn=i;for(i=0;iNUM;i+)if(ai!=0)coutsetw(3)ai;coutendl;1 编程要求1) 编写函数intfind(char*a,char*b),函数被调用时,a指向的数组中已存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的功能找出字符数组a中字符串中最长的单词并存入b所指向的数组中,函数返回最长单词在字符串的起迭位置下标。2) 编写main函数,接受键盘输入的一个英文句子。调用find函数找到该句子中最长的单词,将最长单词及其在字符串中的起始位置下标输出到屏幕。#include#includeintfind(char*a
11、,char*b);voidmain()chara80,b80;intn;cout请输入的一个英文句子:;cin.getline(a,80);coutbn起始下标是:find(a,b)max)max=p1-p2;p3=p2;p2=p1;strncpy(b,p3,max);*(b+max)=0;return(p3-a);附加题2 重新排列一维数组元素的顺序,使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。【测试数据与运行结果】数组原始数据为:17151014161719181312输出结果:18161412101315171719要求:1) 编写函数
12、voidresort(int*x,intn),使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。(可根据编程需要增加函数)2) 编写main函数,接受键盘输入数据,调用resort函数完成上述功能,并输出结果。#include#includevoidresort(int*x,intn);voidsort(int*a,intn);voidmain()inta10=0;cout请输入十个数据:;for(inti=0;iai;cout数组原始数据为:;for(i=0;i10;i+)coutsetw(4)ai;resort(a,10);coutn输出结果:
13、;for(i=0;i10;i+)coutsetw(4)ai;coutendl;voidresort(int*x,intn)inta10,*i,*j,*pa=a,*px=x;while(pxx+10)*pa+=*px+;sort(a,10);i=x,j=x+9;for(pa=a;paa+10;)if(*pa%2=0)*i+=*pa+;else*j-=*pa+;voidsort(int*a,intn)int*i,*j,temp;for(i=a;ia+n-1;i+)for(j=i+1;ja+n;j+)if(*i*j)temp=*i,*i=*j,*j=temp;1 编写一个求积分的函数,该函数的原型如
14、下:floatIntegral(inta,intb,float(*fun)(float);该函数返回值为积分结果,形参a,b分别为积分上下限,fun是被积函数。要求:1)积分算法:将积分区域划分为若干个小区间,求出所有小区间中被积函数下的面积之和即为函数在积分区域内的积分值;小区间面积可用梯形近似;2) 用积分函数分别求解y=x2和y=2x+1两个函数在0,1区域内的积分值。*/#includefloatf1(floatx)returnx*x;floatf2(floatx)return(2*x+1);floatIntegral(inta,intb,float(*fun)(float);void
15、main()cout第一个积分值:Integral(0,1,f1)endl;cout第二个积分值:Integral(0,1,f2)endl;floatIntegral(inta,intb,float(*fun)(float)floath,y;inti;y=(fun(a)+fun(b)/2;h=(b-a)/1000.0;for(i=1;i1000;i+)y+=fun(h*i);return(y*h);2 编程题(20分)【编程要求】1) 编写函数intfun(long*x),找出所有满足以下特性的六位整数:它是一个完全平方数(完全平方数是指该数是某个整数的平方);该数同时也是回文数(回文数是指该
16、数等于它的反序数)。例如,698896是836的平方并且698896是回文数,因此698896是满足所给条件的六位整数。将所有满足上述条件的六位整数存入x指向的数组中,函数返回x指向的数组中整数的个数。2) 编写main函数,声明result数组,调用fun函数将所有满足条件的六位整数存入result数组中,将result数组中的数据输出到屏幕。【测试数据与运行结果】运行结果:698896#include#includeintfun(long*x);voidmain()longresort10;intn=fun(resort);cout六位整数中完全平方数有:endl;for(inti=0;i
17、n;i+)coutresortiendl;intfun(long*x)longn,n1,n2,n3=0;long*px=x;for(n2=n=100000;n0)n3=n3*10+n2%10;n2/=10;if(n3=n)*px+=n;returnpx-x;3 改错题【程序功能】对于s数组中保存的五个字符串,删除其中不符合下列组成规则的字符串,输出s数组中剩余的字符串。字符串组成规则:由字母、数字、下划线组成,首字符非数字。【测试数据与运行结果】s数组中五个字符串:a%1,_a12,aaa,$ss,1sss输出:_a12,aaa【含有错误的源程序】#include#include#define
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 上机 题目 答案 演示 教学
限制150内