📄 chengjiguanli.txt
字号:
#include<stdio.h>
#define MAXNUM 5
void
main()
{ FILE *fp1,*fp2;
struct student {
char name[20];
int number,english,match,computer,sum;
} stu[MAXNUM],t; /*可以输入n个学生的数据段,n由预处理完成*/
/*.........输入文件处理段......*/
int i,j;
char o,ch,filemane[10];
printf("输入文件名: ");
scanf("%s",filemane);
getchar();
printf("输入新数据请按a,输出数据请按b,按任意键退出: ");
o=getchar();
switch(o)
{
case 'a':
/*............................*/
/* ....接受数据处.....*/
for(i=0;i<MAXNUM;i++)
{
printf("请输入第%d个学生的信息: ",i+1);
printf("姓名: ");
scanf("%s",stu[i].name);
printf("学号: ");
scanf("%d",&stu[i].number);
printf("英语: ");
scanf("%d",&stu[i].english);
printf("数学: ");
scanf("%d",&stu[i].match);
printf("计算机: ");
scanf("%d",&stu[i].computer);
stu[i].sum=stu[i].english+stu[i].match+stu[i].computer;
}
/*......把数据放入文件中.......*/
if((fp1=fopen(filemane,"wb"))==NULL)
{
printf("无法打开 ");
break;
}
ch=getchar();
for(i=0;i<MAXNUM;i++)
fwrite(&stu[i],sizeof(struct student),1,fp1);
fclose(fp1);
printf("即将打开文件:y/n,(注:y打开n退出) ");
if((ch=getchar())=='n')
{
break;
}
case 'b':
/*.....读入磁盘文件段.....*/
fp2=fopen(filemane,"rb");
if(fp2==NULL)
{
printf("open for read is error ");
break;
}
for(i=0;i<MAXNUM;i++)
{
fread(&stu[i],sizeof(struct student),1,fp2);
}
/*计算总分排放到结构??
/*....冒泡比较排序由大到小...*/
for(i=0;i<MAXNUM;i++)
/*每一次内层循环的结果是把当次最小的防在最后面*/
for(j=0;j<MAXNUM-i-1;j++)
{
if(stu[j].sum<=stu[j+1].sum)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}/*.........输出文件处理段......*/
printf("所有学生的信息: ");
for(i=0;i<MAXNUM;i++)
{
printf(" 姓名:%s 学号:%d 英语:%d 数学:%d 计算机:%d 总分:%d ",
stu[i].name,stu[i].number,stu[i].english,stu[i].match,stu[i].computer,stu[i].sum);
}
fclose(fp2);
break;
/*......................................................*/
default: break;}
}
程序的作用是把N个学生的成绩输入,然后把总分加和,排出名次而已了
可是这样的功能用EXCEL就OK了
不过,如果没EXCEL到是可以考虑用这个程序实现.程序有个优点就是可以
把输入的数据存盘
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -