第一周上机题
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
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小时内删除。
发表评论