电脑显示屏19寸多大:C程序题解答

来源:百度文库 编辑:查人人中国名人网 时间:2024/03/29 23:00:42
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

#include<stdio.h>
#include<conio.h>
struct stu //创建学生所需的结构体
{
char stuname[10]; //存储学生姓名
int stunum; //存储学生编号
float fir,sec,thi,ave; //存储学生成绩
};
add() //写入文件所需的函数
{
FILE *fp;
struct stu addstu;
float flag='y';
if((fp=fopen("stud.txt","a+f"))==NULL) //判断文件是否存在,a+f追加或创建文件读或写操作
{
printf("文件未找到.");
getch();
return;
}
printf("请输入学生信息\n");
while(flag=='y') //循环接收学生信息
{
printf("请输入学生编号:");
scanf("%d",&addstu.stunum);

printf("学生姓名:");
scanf("%s",addstu.stuname);

printf("第一门成绩:");
scanf("%f",&addstu.fir);
printf("第二门成绩:");
scanf("%f",&addstu.sec);
printf("第三门成绩:");
scanf("%f",&addstu.thi);
addstu.ave=(addstu.fir+addstu.sec+addstu.thi)/3;
printf("平均成绩为:%.2f",addstu.ave);
fwrite(&addstu,sizeof(struct stu),1,fp);
printf("\n是否继续(y/n):");
scanf(" %c",&flag);

}
fclose(fp);
}
void main()
{
add(); //直接调用函数
}

你看看符合你的要求吗?

楼主也太小气了。才5分,我前些时候问C问题,没有少于50分的。
这个是我以前写的。放上来吧。

#include <stdio.h>
#define ZF 5
int i;
typedef struct student
{
char name[8];
int kc1;
int kc2;
float ave;
}st;
main()
{
FILE *fp;
st stu[ZF];
int sum=0;
if((fp=fopen("d:\\student.txt","w+"))==NULL)
{
printf("Can't open file!\n");
for(i=0;i<10;i++) putchar(7);
exit(0);
}
for(i=0;i<ZF;i++)
{
printf("Please Input name:");scanf("%s",stu[i].name);
printf("Please Input kc1:");scanf("%d",&stu[i].kc1);
printf("Please Input kc2:");scanf("%d",&stu[i].kc2);
}
for(i=0;i<ZF;i++)
fwrite(&stu[i],sizeof(st),1,fp);
for(i=0;i<ZF;i++)
{
fread(&stu[i],sizeof(st),1,fp);
printf("\n%s\t%d\t%d\n",stu[i].name,stu[i].kc1,stu[i].kc2);
}
rewind(fp);
for(i=0;i<ZF;i++)
{
sum=stu[i].kc1+stu[i].kc2;
stu[i].ave=sum/2;
}

if((fp=fopen("d:\\stu.txt","w+"))==NULL)
{
printf("Can't open file!\n");
for(i=0;i<10;i++) putchar(7);
exit(0);
}
rewind(fp);
printf("-------------------------------------\n");
printf("Name Score No.1 Score No.2 Average\n");
for(i=0;i<ZF;i++)
{
fread(&stu[i],sizeof(st),1,fp);
printf("\n%s\t %d\t\t%d\t\t%.2f\n",stu[i].name,stu[i].kc1,stu[i].kc2,stu[i].ave);
}
fwrite(&stu[i],sizeof(st),1,fp);
fclose(fp);
getch();}

#include<iostream.h>
#include<stdio.h>
#include<windows.h>
struct student
{
char num[8]; //////定义为字符形可以以0为学号开头
char name[8];
int chengji[4]; ////0为总分,1,2,3分别为你要输入的科目成绩
int average;
}stu[5];

//////////////////
void save()
{
FILE *fp;
if((fp=fopen("student.txe","wb"))==NULL)
{
cout<<"文件不存在"<<endl;
exit(0);
}
fwrite(stu,sizeof(student),6,fp);
fclose(fp);
}
///////////////////存储文件
void main()
{
int i;
for(i=1;i<=5;i++) ///输入5个学生数据
{
cout<<"你正在输入第"<<i<<"个学生数据"<<endl;
cout<<endl;
cout<<"请输入学号:";
cin>>stu[i].num;
cout<<"请输入姓名:";
cin>>stu[i].name;
int k=0;
for(k=1;k<=3;k++)
{
cout<<"请输入第"<<k<<"科成绩:";
cin>>stu[i].chengji[k];
}
stu[i].chengji[0]=stu[i].chengji[1]+stu[i].chengji[2]+stu[i].chengji[3];
stu[i].average=stu[i].chengji[0]/3;
save();
}
}

已调试

自己动手才能学到东西
这个题目并不难
自己想想,翻翻书
我不想害了你

楼上怎么用C++。。。。?