#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;
}
追问太太太感谢您啦
本回答被提问者采纳