C语言 补充函数

2024-11-19 01:45:17
推荐回答(2个)
回答1:

/* 请在此文件中完成以下两个函数实现,并调试程序,实现程序功能 */
/* int readFile( struct stuinfo stu[] ); */
/* void input_high( struct stuinfo stu[], float high[], int n ) */
/* */
/* 其它函数内容请勿更改 */

#include
#include
#include

struct stuinfo{
int serial; //学生编号
char name[10]; //学生姓名
};

int readFile( struct stuinfo stu[] );
void input_high( struct stuinfo stu[], float high[], int n );
void write_data();

void main()
{

struct stuinfo stu[30];
float stuHigh[30];
int stuNum;
int topStu=0;

// write_data();
stuNum = readFile( stu );
input_high( stu, stuHigh, stuNum );

return ;
}

/* 从文件"StuInfo.dat"中读出各位学生记录,以及记录个数 */
/* 学生记录存放在数组 stu中,函数返回学生人数 */
int readFile( struct stuinfo stu[] )
{
FILE *fp;
struct stuinfo *p;
int i=0;
if( (fp = fopen("StuInfo.dat", "rb+" )) == NULL)
{
printf("file canot read!\n");
exit(1);
}
p=(struct stuinfo *)malloc(sizeof(struct stuinfo));
while(fread( p, sizeof(struct stuinfo), 1, fp)!=0)
{
stu[i]=*p;
i++;
p=(struct stuinfo *)malloc(sizeof(struct stuinfo));
}
fclose(fp);
return i;
}

/* 输入每个学生的身高信息 */
/* 显示每位同学基本信息后,输入该同学的身高 */
/* 计算并显示所有同学的平均身高 */
void input_high( struct stuinfo stu[], float high[], int n )
{
int i;
float sum=0;
for(i=0;i {
printf("Student %d serial, name:%s\n",i+1,stu[i].name);
printf("Please input student's height:");
scanf("%f",&high[i]);
sum+=high[i];
}
printf("student's average height:%f",sum/n);
}

/* 从键盘上输入学生信息,保存到StuInfo.dat文件中 */
void write_data( )
{
FILE *fp;
struct stuinfo stu[30];
int i, stuNum=0;

printf("Please input student number(<30): ");
scanf("%d",&stuNum);

if( stuNum > 30 )
{
printf("data error");
exit(1);
}

for( i=0; i {
printf("Please input Student %d serial, name:\n", i+1 );
scanf("%d", &stu[i].serial);
scanf("%s",stu[i].name);
}

if( (fp = fopen("StuInfo.dat", "wb+" )) == NULL)
{
printf("file canot write!\n");
exit(1);
}

fwrite( stu, sizeof(struct stuinfo), stuNum, fp);

fclose( fp );

return;
}

回答2:

这些东西你还是自己在网上找一些类似的看看,然后自己写,对你有很大好处