c语言程序:某班有10名同学,建立学生结构体类型,包括学号,姓名,3门课程的成绩,编写程序?

2024-10-29 09:53:36
推荐回答(2个)
回答1:

#include

#include"string.h"

#include

#define N 100000

struct st{

char a[15];

char b[20];

int x,y,z;

};

int fun1(int *x,int *y)

{

int t;

t=*x;

*x=*y;

*y=t;

}

int fun2(char *x,char *y)

{

char *t;

strcpy(t,x);

strcpy(x,y);

strcpy(y,t);

}

int main() {

/*_________________________________________________*/

    FILE *fp,*ok;

    char b[N + 1];

    //判断文件是否打开

    if ( (fp = fopen("D:\\操作文件1号.txt", "r")) == NULL )/*这里D:\\操作文件1号.txt 是路径;读取D盘下,名为(操作文件1号)的文本文件*/ 

{

        puts("操作文件1号读取失败!");

        exit(0);

    }

    else

    {

    puts("操作文件1号读取成功");

    puts("开始计算");

}

/*__________________________________________*/

struct st s[111];

char t[20],str[N];

int aver[111]={0};

for(int i=0;i<5;i++)

{

fscanf(fp,"%s%s%d%d%d",s[i].a,s[i].b,&s[i].x,&s[i].y,&s[i].z);

printf("%s %s %d %d %d\n",s[i].a,s[i].b,s[i].x,s[i].y,s[i].z);

}

printf("按平均成绩排序\n");  

for(int i=0;i<5;i++)

{

aver[i]=(s[i].x+s[i].y+s[i].z)*1.0/3;

}

printf("\n");

for(int i=0;i<5;i++)

{

for(int j=0;j<4-i;j++)

{

if(aver[j]

{

fun2(s[j].a,s[j+1].a);

fun2(s[j].b,s[j+1].b);

fun1(&aver[j],&aver[j+1]); 

fun1(&s[j].x,&s[j+1].x);

fun1(&s[j].y,&s[j+1].y);

fun1(&s[j].z,&s[j+1].z);

}

}

}

if ( (ok = fopen("D:\\操作文件2号.txt", "w")) == NULL )/*D:\\操作文件2号.txt 是路径;写入D盘下,名为(操作文件2号)的文本文件*/ 

{

        puts("操作文件2号写入失败!");

        exit(0);

    }

    else

    {

    puts("操作文件2号写入成功");

}

for(int i=0;i<5;i++)

{

fprintf(ok,"第%d名;%s %s %d %d %d\n",i+1,s[i].a,s[i].b,s[i].x,s[i].y,s[i].z);

printf("第%d名;%s %s %d %d %d\n",i+1,s[i].a,s[i].b,s[i].x,s[i].y,s[i].z);

}

/*___________________________________________*/   

    //结束关闭文件

    fclose(ok);

    fclose(fp);

    return 0;

}

我就写了5个人的,你在稍加修改就行了;

回答2:

#include
int main()
{ FILE *fp1,*fp2;
typedef struct stud
{ char id[10],name[11];
int a[3],rank;
float av;
} stu;
stu stud[10]= {},*t,*p[10];
int i,j,k,n=10;
fp1=fopen("student1.txt","r");
fp2=fopen("student2.txt","w");
for(i=0; i { p[i]=&stud[i];
fscanf(fp1,"%s%s%d%d%d",(*p[i]).id,(*p[i]).name,&(*p[i]).a[0],&(*p[i]).a[1],&(*p[i]).a[2]);
(*p[i]).av=((*p[i]).a[0]+(*p[i]).a[1]+(*p[i]).a[2])/3.0;
}
for(i=0; i for(j=0; j if((*p[j]).av<(*p[j+1]).av)
{ t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
(*p[0]).rank=1;
for(i=1; i (*p[i]).rank=(*p[i]).av==(*p[i-1]).av?(*p[i-1]).rank:i+1;
for(i=0; i { printf("%s\t%s\t%.1f\t%d\n",(*p[i]).id,(*p[i]).name,(*p[i]).av,(*p[i]).rank);
fprintf(fp2,"%s\t%s\t%.1f\t%d\n",(*p[i]).id,(*p[i]).name,(*p[i]).av,(*p[i]).rank);
}
fclose(fp1);
fclose(fp2);
return 0;
}