#include<stdio.h>
#include<stdlib.h>
#define N 30
typedef struct student
{
long id;
char name[20];
int score[4];
}STUDENT;
void write(STUDENT stu[],int num,int x);
void read(STUDENT s[],int num);
void print(STUDENT s[],int num);
void px(STUDENT s[],int num);
void copy(STUDENT s[],int num);
int main()
{
STUDENT s[N];
int n,num=5;
printf("1:創建學生資訊檔案并輸出;\n2:按學號排序并輸出;\n3:按姓名排序并輸出;\n4:增加學生資訊;\n5:洗掉某學生的資料;\n");
do{
scanf("%d",&n);
switch(n)
{
case 1:
read(s,num);
print(s,num);
break;
case 2:
px(s,num);
print(s,num);
break;
}
}while(n!=6);
return 0;
}
void write(STUDENT stu[],int num,int x)
{
FILE *fp;
int i,j ;
if(x=1)
{
if((fp=fopen("E:\\c語言作業寒假\\student.data","w"))==NULL)
{
printf("錯誤\n");
exit(0);
}
}
else
{
if((fp=fopen("E:\\c語言作業寒假\\sno.data","w"))==NULL)
{
printf("錯誤\n");
exit(0);
}
}
for(i=0;i<num;i++)
{
fprintf(fp,"%010ld%8s",stu[i].id,stu[i].name);
for(j=0;j<4;j++)
{
fprintf(fp,"%4d",stu[i].score[j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
void read(STUDENT s[],int num)
{
FILE *fp;
int i,j;
if((fp=fopen("E:\\c語言作業寒假\\student.data","r"))==NULL)
{
printf("錯誤\n");
exit(0);
}
for(i=0;i<num;i++)
{
fscanf(fp,"%ld",&s[i].id);
fscanf(fp,"%s",s[i].name);
for(j=0;j<4;j++)
{
fscanf(fp,"%d",&s[i].score[j]);
}
}
fclose(fp);
}
void print(STUDENT s[],int num)
{
int i,j;
printf(" 學號\t\t姓名\t數學\t語文\t英語\t總成績\n");
for(i=0;i<num;i++)
{
printf("%010ld%10s",s[i].id,s[i].name);
for(j=0;j<4;j++)
{
printf("%8d",s[i].score[j]);
}
printf("\n");
}
}
void px(STUDENT s[],int num)
{
int i,j,k;
STUDENT team;
for(i=0;i<num;i++)
{
k=i;
for(j=i+1;j<num;j++)
{
if(s[k].id>s[j].id)
{
k=j;
}
}
if(k!=i)
{
team=s[i];
s[i]=s[j];
s[j]=team;
}
}
write(s,num,2);
}
排序會出現這個
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94452.html
標籤:C語言
上一篇:小白求大神幫助!輸入精度e,用泰勒公式計算cosx的值,精確到最后一項的絕對值小于e。要求定義和呼叫函式funcos(e,x)求余弦函式的近似值。
下一篇:nrf2401無線通信
