您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > C++上机题目及答案1
从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法第一周上机题1.以下语句描述了包含数学成绩的学生信息结构体及其数组a:structstudent{charname[20];floatmath;};studenta[10]={{张三,90},{李四,85},{王五,73}};intcount=3;//数组中包含的学生数编写两个函数分别实现在a数组中添加和删除学生信息。要求:1)原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2)以下数据用于添加:{赵二,96},{钱六,65},{孙七,80}3)注意:添加,删除后count数据要相应变化。#includeiostream.h#includestring.hstructstudent{charname[20];floatmath;};intcount=3;voidadd(studenta[10]);voiddele(studenta[10]);voidprint(studenta[]);voidmain(){studenta[10]={{张三,90},{李四,85},{王五,73}};intn=0;do{cout.................学生信息处理系统..................\n1-删除\n2-增加\n3-结束\n\n请选择:;cinn;if(n==1)dele(a);elseif(n==2)add(a);elsecout谢谢使用本系统!\n;}while(n!=3);}从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法voidadd(studenta[10]){studentstu;inti=0,n=count;cout请输入需增加的学生信息(姓名,成绩):;cinstu.namestu.math;while(stu.matha[i].math&&in)i++;//找插入的位置for(;ni;n--)a[n]=a[n-1];//腾位置a[i]=stu;//插入count++;print(a);}voiddele(studenta[10]){charname[20];inti=0,n=count;print(a);cout请输入需删除学生的姓名:;cinname;while(strcmp(name,a[i].name)!=0&&in)i++;//找人if(i=n)cout查无此人!\n;else{for(;in-1;i++)a[i]=a[i+1];//删除count--;print(a);}}voidprint(studenta[]){cout\n最新学生信息:\n;for(inti=0;icount;i++)couta[i].name'\t'a[i].math'\n';}2.定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标点之间的距离。要求:编写函数求两坐标点之间的距离。#includeiostream.h#includemath.hstructpoint{doublex,y,z;};从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法3doubledistance(pointa,pointb);voidmain(){pointa,b;cout请分别输入两个点的坐标(x,y,z):\n;cina.xa.ya.z;cinb.xb.yb.z;couta点的坐标:a.x','a.y','a.z'\n';coutb点的坐标:b.x','b.y','b.z'\n';couta,b两点的距离是:distance(a,b)endl;}doubledistance(pointa,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:95100999697969797.00以下语句描述了包含数学成绩的学生信息结构体及其数组a:struct{charplayer_name[20];doublescore[7],aver;}PERSON[3];#includeiostream.hstructP{charname[20];doublescore[7],aver;}PERSON[3];doubledelmaxmin(doublea[7]){doubleaver=0,sum=0,max,min;max=min=a[0];for(inti=0;i7;i++){if(a[i]max)max=a[i];从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法if(a[i]min)min=a[i];aver+=a[i];}aver-=max+min;returnaver/5;}voidsort(Pp[3]){inti,j;Pa;for(i=0;i3;i++)for(j=i+1;j3;j++)//原程序:for(j=0;j3;j++)if(p[i].averp[j].aver)///原程序:if(p[i].averp[i+1].aver)a=p[i],p[i]=p[j],p[j]=a;}voidmain(){inti,j;cout请输入比赛选手的比赛数据:endl;for(i=0;i3;i++){cinPERSON[i].name;for(j=0;j7;j++)cinPERSON[i].score[j];}for(i=0;i3;i++)PERSON[i].aver=delmaxmin(PERSON[i].score);sort(PERSON);cout比赛成绩如下endl;for(i=0;i3;i++){coutPERSON[i].name'\t';for(j=0;j7;j++)coutPERSON[i].score[j]'\t';coutPERSON[i].averendl;}}第二周上机题1.查找并输出同时出现在两个一维数组中的整数,每个一维数组中的元素均按升序排列,并且每个数组中的元素没有重复值。函数intcoincidence_count(int*a,int*b;int*c)按上述要求在a数组和b数组上查找,将找到的数据保存到c所指向的的数组中。a数组中的数据:1,2,4,8,10,12,13,14,16,18从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法5b数组中的数据:3,4,7,8,9,10,12,13,16,19#includeiostream.hintcoincidence_count(int*a,int*b,int*c);voidprint(int*d,intn);voidmain(){inta[]={1,2,4,8,10,12,13,14,16,18};intb[]={3,4,7,8,9,10,12,13,16,19},c[10];intk=coincidence_count(a,b,c);cout原始数据:\n数组a:;print(a,10);cout\n数组b:;print(b,10);cout\n结果显示:\n数组c:;print(c,k);cout'\n';}intcoincidence_count(int*a,int*b,int*c){int*pa=a,*pb=b,*pc=c;while(paa+10&&pbb+10){if(*pa*pb)pa++;elseif(*pb*pa)pb++;else*pc++=*pa++;}return(pc-c);}voidprint(int*d,intn){int*pd=d;while(pdd+n){cout*pd++',';}}2.从键盘任意输入10个整数,用函数void(int*pa,int*pb)编程实现找出最大值和最小值,并通过指针pa,pb返回它们所在数组中的位置。主函数并通过屏幕输出结果(最大值,最大值在数组中的位置,最小值,最小值在数组中的位置,)。#includeiostream.h从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法voidmax_min(int*a,int*pa,int*pb);voidmain(){inta[10],max,min;max=min=0;int*pa=a;while(paa+10)cin*pa++;max_min(a,&max,&min);coutmax=a[max]在数组中位置是:maxendl;coutmin=a[min]在数组中位置是:minendl;}voidmax_min(int*a,int*pa,int*pb){intmax,min;max=min=*(a+0);for(inti=0;i10;i++,a++){if(*amax){max=*a,*pa=i;}elseif(*amin){min=*a,*pb=i;}从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法7}}附加题:3.25个人围成一个圈,从第1个人开始顺序报号(1,2,3……),凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。要求:函数voidseek(int*a,intn,int*pn)按上述要求在a数组,找出最后留在圈子中的人原来的序号并返回。主函数是:voidmain(){intn=3;intnum;inta[25],*p=a;for(inti=0;i25;i++)p[i]=i+1;seek(a,n,&num);cout”最后留在圈子中的人原来的序号是:”numendl;}*/#includeiostream.h#defineNUM10#includeiomanip.hvoidseek(int*a,intn,int*pn);voidmain(){intn=3;intnum;inta[NUM],*p=a;for(inti=0;iNUM;i++)p[i]=i+1;for(i=0;iNUM;i++)coutsetw(3)a[i];seek(a,n,&num);cout\n最后留在圈子中的人序号是:num+1endl;}voidseek(int*a,intn,int*pn){intnum=NUM;intk=1;inti;cout\n游戏中.......\n;while(num1){for(i=0;iNUM;i++){if(a[i]==0)continue;if(k++%3==0){a[i]=0;num--;从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法}else*pn=i;}for(i=0;iN
本文标题:C++上机题目及答案1
链接地址:https://www.777doc.com/doc-1832685 .html