第一周上机题
1. 以下语句描述了包含数学成绩的学生信息结构体及其数组a:
struct  student{    char name[20];    float  math; };
student  a[10] = {{"张三", 90},{"李四",85},{"王五",73}};
int      count=3;        // 数组中包含的学生数
编写两个函数分别实现在a数组中添加和删除学生信息。
要求:
1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;
2)以下数据用于添加:{"赵二", 96},  {"钱六",65},{"孙七",80}
3) 注意:添加,删除后count数据要相应变化。
#include<iostream.h>
#include<string.h>
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] = {{"张三", 90},{"李四",85},{"王五",73}};
    int n=0;
    do{
        cout<<".................学生信息处理系统.................."
            <<"\n            1-删除"
            <<"\n            2-增加"
            <<"\n            3-结束\n"
            <<"\n请选择:  ";
        cin>>n;
        if(n==1) dele(a);
        else if(n==2) add(a) ;
        else cout<<"谢谢使用本系统!\n";
    }while(n!=3);
}
void add(student a[10]){
    student stu;
    int i=0,n=count;
    cout<<"请输入需增加的学生信息(姓名,成绩):  ";
    cin>>stu.name>>stu.math;
    while(stu.math<a[i].math && i<n) i++;//插入的位置
    for(;n>i;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<n) i++;//人
    if(i>=n) cout<<"查无此人!\n";
    else {
        for(;i<n-1;i++) a[i]=a[i+1];        //删除
        count--;
        print(a);
    }
}
void print(student a[]){
    cout<<"\n最新学生信息: \n";
    for(int i=0;i<count;i++)
        cout<<a[i].name<<'\t'<<a[i].math<<'\n';
}
2. 定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标点之间的距离。
要求:
编写函数求两坐标点之间的距离。
#include<iostream.h>
#include<math.h>
struct point{
    double x,y,z;
};
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<<"a点的坐标:"<<a.x<<','<<a.y<<','<<a.z<<'\n';
    cout<<"b点的坐标:"<<b.x<<','<<b.y<<','<<b.z<<'\n';
    cout<<"a,b两点的距离是:"<<distance(a,b)<<endl;
}
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<iostream.h>
struct P{
    char name[20];
    double score[7],aver;
}PERSON[3];
指针与二维数组double delmaxmin(double a[7]){
    double aver=0,sum=0,max,min;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。