1、n 3-结束nn请选择: ; cinn; if(n=1) dele(a); else if(n=2) add(a) ; else cout谢谢使用本系统!n while(n!=3);void add(student a10) student stu; int i=0,n=count; coutstu.namestu.math; while(stu.mathai.math & ii;n-) an=an-1; /腾位置 ai=stu; /插入 count+; print(a);void dele(student a10)请输入需删除学生的姓名:name; while(strcmp(name,ai.
2、name)!=0 &/找人 if(i=n) cout查无此人! else for(;in-1;i+) ai=ai+1; /删除 count-; print(a); void print(student a)n最新学生信息: n for(int i=0;count;i+)ai.nametai.mathstruct point double x,y,z;double distance(point a,point b); point a,b;请分别输入两个点的坐标(x,y,z):a.xa.ya.z;b.xb.yb.z;a点的坐标:a.x,a.ya.zb点的坐标:b.xb.yb.za,b两点的距离是:
3、distance(a,b)max) max=ai; if(aimin) min=ai; aver+=ai; aver-=max+min; return aver/5;void sort(P p3) int i,j; P a; for(i=0;3; for(j=i+1;jj+) /原程序:for(j=0;j+) if(pi.averpj.aver)/原程序: if(pi.averPERSONi.scorej; PERSONi.aver=delmaxmin(PERSONi.score); sort(PERSON);比赛成绩如下PERSONi.name coutPERSONi.scorejPERSO
4、Ni.aver第二周 上机题1.查找并输出同时出现在两个一维数组中的整数,每个一维数组中的元素均按升序排列,并且每个数组中的元素没有重复值。函数int coincidence_count ( int *a , int *b; int *c) 按上述要求在a数组和b数组上查找,将找到的数据保存到c所指向的的数组中。a数组中的数据:1,2,4,8,10,12,13,14,16,18b数组中的数据:3,4,7,8,9,10,12,13,16,19int coincidence_count(int *a,int*b,int *c);void print(int *d,int n); int a=1,2
5、,4,8,10,12,13,14,16,18; int b=3,4,7,8,9,10,12,13,16,19,c10; int k=coincidence_count(a,b,c);原始数据:n 数组a: print(a,10);n 数组b: print(b,10);n结果显示: n 数组c: print(c,k);int coincidence_count ( int*a,int*b,int*c) int *pa=a,*pb=b,*pc=c; while(paa+10 & pbb+10) if(*pa*pb)pa+; else if(*pb*pa) pb+; else *pc+=*pa+;
6、return (pc-c);void print(int *d,int n) int *pd=d; while(pdd+n)*pd+*pa+; max_min(a,&max,&min);max=amax 在数组中位置是:maxmin=aminminmax)max=*a,*pa=i; else if(*amin)min=*a,*pb=i;附加题:3.25个人围成一个圈,从第1个人开始顺序报号(1,2,3),凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。函数void seek( int *a , int n, int *pn) 按上述要求在a数组,找出最后留在圈子中的人原来的序
7、号并返回。主函数是:void main( )int n=3;int num;int a25,*p=a;for(int i=0;25; i+) pi=i+1;seek( a,n ,&num);cout” 最后留在圈子中的人原来的序号是: ”num void seek( int*a,int n,int *pn);int aNUM,*p=a;NUM;for(i=0;i+)coutsetw(3)ai;n最后留在圈子中的人序号是:num+1 1) for(i=0; if(ai=0) continue; if(k+%3=0) ai=0; num-; else *pn=i; if(ai!=0)cout第三周
8、上机题目题目:1从一个整型数组中删除所有小于数组元素平均值并且不是素数的那些整数。【编程要求】1)编写函数int del(int r , int n),计算r数组中前n个整数的平均值,删除数组中所有小于该平均值并且不是素数的那些数,函数返回r数组中剩余整数的个数。2)编写main函数,声明数组resource并用测试数据初始化,调用del函数处理数组resource中的数据,将resource数组中剩余的整数输出到屏幕。数组初始数据为: 17 5 6 18 8 28 17 5 18 28int del(int r , int n);int sh(int n); int resource=17,
9、5,6,18,8,28,n;6;resourcei n=del(resource,6);n运行结果:int del(int r , int n) int *p1=r,*p2=r,i=0; float avr=0; while(p1r+n)avr+=*p1+; avr/=6; p1=r;r+n) if(*p1avr & sh(*p1)=0) p1+;continue; *p2+=*p1+ ; return (p2-r);int sh(int n) int j; j=sqrt(n); for(int i=2;=j; if(n%i=0) break; if(i(j+1) return 0; retu
10、rn 1;2编程要求1)编写函数int find(char *a , char *b),函数被调用时,a指向的数组中已存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的功能找出字符数组a中字符串中最长的单词并存入b所指向的数组中,函数返回最长单词在字符串的起迭位置下标。2)编写main函数,接受键盘输入的一个英文句子。调用find函数找到该句子中最长的单词,将最长单词及其在字符串中的起始位置下标输出到屏幕。int find(char *a , char *b); char a80,b80; int n;请输入的一个英文句子: cin.getline(a,80);bn起始下标是:fi
11、nd(a,b)max) max=p1-p2; p3=p2; p2=p1; strncpy(b,p3,max); *(b+max)=0 return (p3-a);附加题3重新排列一维数组元素的顺序,使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。数组原始数据为:17 15 10 14 16 17 19 18 13 12输出结果:18 16 14 12 10 13 15 17 17 191)编写函数void resort(int *x, int n),使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。(
12、可根据编程需要增加函数)2)编写main函数,接受键盘输入数据,调用resort函数完成上述功能,并输出结果。void resort(int *x, int n);void sort(int *a,int n); int a10=0;请输入十个数据:i+)cini+) coutsetw(4) resort(a,10);n输出结果:void resort(int *x, int n) int a10,*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
13、+=*pa+; else *j-=*pa+;void sort(int *a,int n) int *i,*j,temp; for(i=a;a+n-1;a+n; if(*i*j) temp=*i,*i=*j,*j=temp;4【程序功能】生成一个n阶螺旋方阵,将其存放到一个二维数组中并输出。当n为5时,输出如下螺旋方阵:1)编写函数void rot( int matNN, int n) 生成一个n阶螺旋方阵,并存放到一个二维数组mat中;2)编写主函数,由主函数调用rot函数完成上述功能,并按行输出结果。#define N 7void rot( int matNN, int n); int a
14、NN=0,k=1; rot(a,N); int *p=a0; int n=1;p=&aN-1N-1;p+)setw(6)*p; if(k+%N=0)cout0) for(i=1;=4 & n0; if(i%2=1) x=-x;z=x;/(上下移动)向下-指针每次移动N位 向上-指针每次移动-N位 向左指针每次移动-1位 else n-;y=-y;z=y; /(左右移动)向右-指针每次移动+1位,向左-指针每次移动-1位 for(j=0;j+,p1+=z) *p1=num+; p1-=z; if(i%2=1)p1-=y; /调整起点位置 else p1-=x;第五周上机题目1编写一个求积分的函数
15、,该函数的原型如下: float Integral(int a, int b, float (*fun)(float); 该函数返回值为积分结果,形参a,b分别为积分上下限,fun是被积函数。 1)积分算法:将积分区域划分为若干个小区间,求出所有小区间中被积函数下的面积之和即为函数在积分区域内的积分值;小区间面积可用梯形近似;2) 用积分函数分别求解y=x2和y=2x+1两个函数在0,1区域内的积分值。float f1(float x) return x*x;float f2(float x) return (2*x+1);float Integral(int a, int b, float
16、(*fun)(float);第一个积分值:Integral(0,1,f1)第二个积分值:Integral(0,1,f2)float Integral(int a, int b, float (*fun)(float) float h,y; y=(fun(a)+fun(b)/2; h=(b-a)/1000.0; for(i=1;1000;i+)y+=fun(h*i); return (y*h);2编程题(20分)1)编写函数int fun(long *x),找出所有满足以下特性的六位整数:它是一个完全平方数(完全平方数是指该数是某个整数的平方);该数同时也是回文数(回文数是指该数等于它的反序数)。例如,是836的平方并且是回文数,因此是满足所给条件的六位整数。将所有满足上述条件的六位整数存入x指向的数组中,函数返回x指向的数组中整数的个数。2)编写main函数,声明result数组,调用fun函数将所有满足条件的六位整数存入result数组中,将result数组中的数据
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1