c语言程序

c语言程序1、从键盘录入n(n<100)位同学的考试分数,从高到低排序,并从键盘录入一个分数,将该分数插入该序列,保证插入后,依然有序,最后在序列中查询是否存在某一个分数(由键盘输入),将最后的n+1位同学的成绩存入student_score.txt文件保存。 要求:用C语言编写sort函数完成排序功能,insert函数完成插入功能,find函数完成查询功能,save函数完成存入文件保存的功能。主函数依次调用上述函数,完成综合实验要求。
报酬可以私信我哦

第1个回答  2018-06-25
#include<stdio.h>
void sort(float *a, int n){
int i,j;
float t;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[j]>a[i]) {t=a[i];a[i]=a[j];a[j]=t;};
}
void insert(float *a,float x,int n)
{
int i,m;
if (x<=a[n-1]){a[n]=x;}
else if (x>=a[0]){
for (i=n;i>0; i--) a[i]=a[i-1]; a[0]=x;
} else {
for (i=0;i<n-1;i++) if (x<=a[i] && x>=a[i+1]){ m=i;break;};
for (i=n-1;i>m;i--) a[i+1]=a[i];a[m+1]=x;
};
}
int find(float *a,float y,int n){
int flag= -99,i;
for (i=0;i<n;i++) if (a[i]==y){flag=i; break;};
return flag; //找到则返回下标号,没找到为负值
}
void save(float *a, int n){
FILE *fp;
int i;
fp=fopen("student_score.txt","w");
for (i=0;i<n;i++) fprintf(fp,"%g\n",a[i]);
fclose(fp);
printf("saved in student_score.txt\n");
}
int main() {
float s[101],x,y;
int i,n,fd;
printf("input n: "); scanf("%d",&n);
printf("\ninput %d scores: ",n);
for (i=0;i<n;i++) scanf("%f",&s[i]);
printf("\ninput one extra score x: ");
scanf("%f",&x);
sort(s,n);
insert(s,x,n);
printf("input score y which you want to find:\n");
scanf("%f",&y);
fd=find(s,y,n+1);
if ( fd< 0 ) printf("Not find\n"); else printf("find at %d\n",fd);
save(s,n+1);
//for (i=0;i<n+1;i++) printf("%g\n",s[i]);
return 0;
}追问

太太太感谢您啦

本回答被提问者采纳
相似回答