欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构实验报告(预备实验)

程序员文章站 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函数中调用这些函数实现题目要求的功能:

  1. int getRecs(STUDENTS s[ ]);
    功能:从文件records.txt 中读数据到结构体数组s中,并返回人数n。
  2. 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内容及程序运行结果:
数据结构实验报告(预备实验)