C语言大作业.

内容如下:一个主函数里面包含3个函数(也就是四个函数)。程序中需要包括:数组,文件,循环,分支。
麻烦各位高手编写下(需要自编)。
谢谢了。

输入十名顾客的信息到结构体数组中,最后统计这十名中购买商品总额最大的顾客,将他的信息打印输出。
//并按照下列各式把信息存入到customer.txt中:
//0001 Kate 5 822.8
//0002 Jame 7 2761.9
//2011.1.11 11:37
#include<stdio.h>
#include<math.h>
#define CST_NUM 10//宏定义客户数目
struct customer
{
int num;
char name[20];
int amount;
float value;
}cst[CST_NUM];//定义结构体customer,并声明结构体数组cst[CST_NUM].
void printline(void);
void sort_cst(struct customer[],int);
void print_cst(struct customer[],int);
void main(void)
{
FILE *f1;//声明文件指针
int h=sin(0);//为编译器装载float类型
int i;
for(i=0;i<CST_NUM;i++)//从键盘读取客户信息
{
printline();
printf("请输入第%d名顾客的编号",i+1);
scanf("%d",&cst[i].num);
putchar('\n');
fflush(stdin);//清流
printf("请输入第%d名顾客的姓名",i+1);
scanf("%s",cst[i].name);
putchar('\n');
fflush(stdin);//清流
printf("请输入第%d名顾客的商品数量",i+1);
scanf("%d",&cst[i].amount);
putchar('\n');
printf("请输入第%d名顾客的商品总额",i+1);
scanf("%f",&cst[i].value);
putchar('\n');
fflush(stdin);//清流
}
sort_cst(cst,CST_NUM);//客户信息排序
print_cst(cst,CST_NUM);//将客户信息输出至屏幕
f1=fopen("customer.txt","w");//打开文件
fprintf(f1,"客户编号 客户姓名 商品数量 商品总额\n");
for(i=0;i<CST_NUM;i++)
{
fprintf(f1,"%5d%12s%10d%10.1f\n",cst[i].num,cst[i].name,cst[i].amount,cst[i].value);//存入客户信息

}
fclose(f1);//关闭文件
getch();
}
void sort_cst(struct customer cst[],int cst_num)//自定义函数:客户信息排序
{
int i,j;
struct customer temp;
for(i=0;i<cst_num;i++)
{
for(j=0;j<cst_num;j++)
{
if(cst[i].value>cst[j].value)
{
temp=cst[i];
cst[i]=cst[j];
cst[j]=temp;
}
} }
}
void print_cst(struct customer cst[],int cst_num)//自定义函数:客户信息显示
{
int i;
printline();
printf("客户编号 客户姓名 商品数量 商品总额\n");
for(i=0;i<cst_num;i++)
{
printf("%5d",cst[i].num);
printf("%12s",cst[i].name);
printf("%10d",cst[i].amount);
printf("%10.1f\n",cst[i].value);
}
printline();
}
void printline(void)//自定义函数:画线
{
int i;
printf("\n");
for(i=0;i<50;i++)
{
printf("_");
}
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-04
#define N 5
#include<stdio.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}stu[N],temp;
int paixu(struct student stu[N],struct student temp){
int i,j;
FILE *fp;
clrscr();
if((fp=fopen("stud.txt","rb"))==NULL)
{
printf("Cannot open the file!");
exit(0);
}
printf("\nFile 'stud.txt':");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\n%8s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%10.2f",stu[i].ave);
}
fclose(fp);
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(stu[i].ave<stu[i+1].ave)
{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
} printf("\nAfter sorted:\n");
fp=fopen("stu_sort.txt","wb");
for(i=0;i<N;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("stud_sort.txt","rb");
for(i=0;i<N;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%10.2f",stu[i].ave);
}
fclose(fp);
}void main()
{
int i,j,sum,k;
FILE *fp;
clrscr();
for(i=0;i<N;i++)
{
printf("\nInput score of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0;
}
fp=fopen("stud.txt","wb");
for(i=0;i<N;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("stud.txt","rb");
for(i=0;i<N;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%8d",stu[i].score[j]);
printf("%10.2f",stu[i].ave);
}fclose(fp);
paixu(stu,temp);
}希望符合要求。∩_∩本回答被网友采纳
相似回答