#include "stdio.h" struct BOOK {char name[30]; double price; char issn[30]; }; void sort(struct BOOK a[] ,int n); void TestFunc(); void sort(struct BOOK a[] ,int n) /* 对n个结构变量按price成员排序:从大到小 */ { int i,j; struct BOOK t; /* t为用于交换的中间变量 */ /*********Begin**********/ /********** End **********/ } main() {struct BOOK aa[10]={{"C++",38.5,"97870654"},{"python",40.0,"97970658"},{"java",18.9,"97870655"}}; int n=3,i; sort(aa,n); for(i=0;i<n;i++) printf("%s %.2f %s\n",aa[i].name,aa[i].price,aa[i].issn); TestFunc(); } void TestFunc() /* 此函数无需改动 */ { FILE *IN,*OUT; int j; struct BOOK i[3]; IN=fopen("in.dat","r"); if(IN==NULL) {printf("Read File Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) {printf("Write File Error"); } for(j=0;j<3;j++) /* 读入,用于测试 */ { fscanf(IN,"%s%lf%s",i[j].name,&i[j].price,i[j].issn); } sort(i,3); for(j=0;j<3;j++) fprintf(OUT,"%s %.2f %s,",i[j].name,i[j].price,i[j].issn); fclose(IN); fclose(OUT); }补全该程序
时间: 2024-01-17 15:40:45 浏览: 20
补全程序如下:
```c
#include <stdio.h>
struct BOOK {
char name[30];
double price;
char issn[30];
};
void sort(struct BOOK a[], int n);
void TestFunc();
void sort(struct BOOK a[], int n) {
int i, j;
struct BOOK t; /* t为用于交换的中间变量 */
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (a[i].price < a[j].price) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
int main() {
struct BOOK aa[10] = {{"C++", 38.5, "97870654"},
{"python", 40.0, "97970658"},
{"java", 18.9, "97870655"}};
int n = 3, i;
sort(aa, n);
for (i = 0; i < n; i++)
printf("%s %.2f %s\n", aa[i].name, aa[i].price, aa[i].issn);
TestFunc();
return 0;
}
void TestFunc() {
FILE *IN, *OUT;
int j;
struct BOOK i[3];
IN = fopen("in.dat", "r");
if (IN == NULL) {
printf("Read File Error");
}
OUT = fopen("out.dat", "w");
if (OUT == NULL) {
printf("Write File Error");
}
for (j = 0; j < 3; j++) /* 读入,用于测试 */
{
fscanf(IN, "%s%lf%s", i[j].name, &i[j].price, i[j].issn);
}
sort(i, 3);
for (j = 0; j < 3; j++)
fprintf(OUT, "%s %.2f %s,", i[j].name, i[j].price, i[j].issn);
fclose(IN);
fclose(OUT);
}
```
这是一个结构体数组的排序程序,按照结构体成员变量 price 的值从大到小排序。同时还包括了一个用于测试的函数 TestFunc,该函数从文件中读入数据,调用 sort 函数进行排序,然后将排序后的结果输出到另一个文件中。