数据结构实验报告(预备实验)
程序员文章站
2022-05-26 11:30:20
...
数据结构实验报告(预备实验)
数据结构实验报告(预备实验)
预备实验:C语言知识回顾
任务一:平均值和最近元素下标
题目要求:
输入n个整数,输出其中与平均值最接近的元素的值及下标。
要求定义下面功能函数,并在main函数中调用这些函数实现题目要求的功能:
1.double getAvg(int a[], int n)
功能:求数组a中n个数的平均值。
2.int getIndex(int a[], int n, double x)
功能:获取与x的值最接近的数组元素的下标。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double getAvg(int a[],int n){
double sum = 0;
for(int i=0;i<n;i++){
sum+=a[i];
}
double result = sum/n;
return result;
}
int getIndex(int a[], int n, double x){
int i=0,tmp,zhi,cha = 100;
for(i=0;i<n;i++){
tmp = abs(a[i]-x);
if(tmp<cha){
cha = tmp;
zhi = i+1;
}
}
return zhi;
}
int main(){
int str[100];
int num,tmp;
printf("请输入个数:");
scanf("%d",&num);
printf("请输入数组的元素:");
for(int i=0;i<num;i++){
scanf("%d",&str[i]);
}
printf("请输入你要查找到的元素:");
scanf("%d",&tmp);
int result2 = getIndex(str,num,tmp);
double result = getAvg(str,num);
printf("平均数是:%lf\n",result);
printf("与之最近的元素下标是:%d\n",result2);
return 0;
}
程序运行时的输入输出结果:
任务二:结构体数组排序
1.题目要求
若有一文本文件records.txt中已存储学生身高表,每个学生信息包括学号和身高两个数据项,编程要求从文件获取学生身高表后,按身高从低到高的顺序排序后在屏幕上打印学生身高表。
要求定义下面功能函数,并在main函数中调用这些函数实现题目要求的功能:
- int getRecs(STUDENTS s[ ]);
功能:从文件records.txt 中读数据到结构体数组s中,并返回人数n。 - void sort(STUDENTS s[ ], int n);
功能:对结构体数组s按身高从低到高排序。
2.学生信息类型定义及说明
typedef struct {
int xh; /* 学号 /
float sg; / 身高 */
} STUDENTS;
代码:
#include <stdio.h>
#include<stdlib.h>
typedef struct STUDENTS{
int xh; /*学号*/
float sg; /*身高*/
}STUDENTS;
int getRecs(STUDENTS s[]){
int i=0;
FILE *fp=fopen("D:\\hello\\records.txt","r");
if(fp==NULL)
{
printf("访问不到!");
return 0;
}
while(!feof(fp))
{
fscanf(fp,"%d%f",&s[i].xh,&s[i].sg);
i++;
}
return i;
}
void sort(STUDENTS s[ ], int n){
STUDENTS tmp;
float tmp_1,tmp_2;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(s[i].sg>s[j].sg){
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
}
int main()
{
STUDENTS s[10];
int num = getRecs(s);
printf("总共有%d人\n",num);
for(int i = 0;i<num;i++){
printf("%d %.2f\n",s[i].xh,s[i].sg);
}
printf("\n");
sort(s,num);
printf("按身高排序:\n");
for(int i = 0;i<num;i++){
printf("%d %.2f\n",s[i].xh,s[i].sg);
}
return 0;
}
原始数据文件records.txt内容及程序运行结果:
下一篇: List 遍历 中进行 删除操作 的做法