第一周上机题
以下语句描述了包含数学成绩的学生信息结构体及其数组a:
struct student{ char name[20]; float math; }; student a[10] = {{\张三\李四\王五\int count=3; // 数组中包含的学生数
编写两个函数分别实现在a数组中添加和删除学生信息。 要求:
1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2)以下数据用于添加:{\赵二\ {\钱六\,{\孙七\,80} 3) 注意:添加,删除后count数据要相应变化。
#include
struct student{ char name[20]; float math; };
int count=3;
void add(student a[10]); void dele(student a[10]); void print(student a[]);
void main(){ student a[10] = {{\张三\李四\王五\ int n=0; do{ cout<<\学生信息处理系统..................\ <<\ 1-删除\ <<\ 2-增加\ <<\ 3-结束\\n\ <<\请选择: \ cin>>n; if(n==1) dele(a); else if(n==2) add(a) ; else cout<<\谢谢使用本系统!\\n\ }while(n!=3); }
1
1.
void add(student a[10]){ student stu; int i=0,n=count; cout<<\请输入需增加的学生信息(姓名,成绩): \ cin>>stu.name>>stu.math; while(stu.mathi;n--) a[n]=a[n-1]; //腾位置 a[i]=stu; //插入 count++; print(a); }
void dele(student a[10]){ char name[20]; int i=0,n=count; print(a); cout<<\请输入需删除学生的姓名: \ cin>>name; while(strcmp(name,a[i].name)!=0 && i void print(student a[]){ cout<<\最新学生信息: \\n\ for(int i=0;i 点之间的距离。 要求: 编写函数求两坐标点之间的距离。 #include struct point{ double x,y,z; }; 2 double distance(point a,point b); void main(){ point a,b; cout<<\请分别输入两个点的坐标(x,y,z):\\n\ cin>>a.x>>a.y>>a.z; cin>>b.x>>b.y>>b.z; cout<<\点的坐标:\ cout<<\点的坐标:\ cout<<\两点的距离是:\} double distance(point a,point b){ double d; 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)); return d; } 3. 某市青年歌手大赛聘请7名评委打分,下列程序协助进行评分统计。函数delmaxmin 的功能是对一个选手的得分做以下计算:去掉一个最高分,去掉一个最低分,然后对剩余得分求平均分并保存。函数sort完成对n名选手的得分按平均分从高到低排序。 【测试数据与运行结果】 测试数据:程序中给定的初始化测试数据 运行结果: li: 94 97 98 96 100 99 97 97.40 zhang: 96 97 98 98 100 97 96 97.20 zhou: 95 100 99 96 97 96 97 97.00 以下语句描述了包含数学成绩的学生信息结构体及其数组a: struct{ char player_name[20]; double score[7],aver; }PERSON[3]; #include double delmaxmin(double a[7]){ double aver=0,sum=0,max,min; max=min=a[0]; for(int i=0;i<7;i++){ if(a[i]>max) max=a[i]; 3 if(a[i] void sort(P p[3]){ int i,j; P a; for(i=0;i<3;i++) for(j=i+1;j<3;j++) //原程序:for(j=0;j<3;j++) if(p[i].aver void main(){ int i,j; cout<<\请输入比赛选手的比赛数据:\ for(i=0;i<3;i++){ cin>>PERSON[i].name; for(j=0;j<7;j++) cin>>PERSON[i].score[j]; } for(i=0;i<3;i++) PERSON[i].aver=delmaxmin(PERSON[i].score); sort(PERSON); cout<<\比赛成绩如下\ for(i=0;i<3;i++){ cout< 25个人围成一个圈,从第1个人开始顺序报号(1,2,3……),凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。 要求: 函数void seek( int *a , int n, int *pn) 按上述要求在a数组,找出最后留在圈子中的人原 4 来的序号并返回。 主函数是: void main( ){ int n=3; int num; int a[25],*p=a; for(int i=0; i<25; i++) p[i]=i+1; seek( a,n ,&num); cout<<” 最后留在圈子中的人原来的序号是: ”< #include void seek( int*a,int n,int *pn); void main( ){ int n=3; int num; int a[NUM],*p=a; for(int i=0; i for(i=0;i void seek( int*a,int n,int *pn){ int num=NUM; int k=1; int i; cout<<\游戏中.......\\n\ while(num>1){ for(i=0;i 1) 编写函数int find(char *a , char *b),函数被调用时,a指向的数组中已 存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的 5