一道有关c++的编程基础题目~~ 100
将实践练习2中的第2题利用函数的思想进行修改,并将学生的成绩等信息输出到文件中。要求函数参数中包含结构体数组或指针。输出到ASCII文件的信息包括每个学生的学号、三门成绩...
将实践练习2 中的第2题利用函数的思想进行修改,并将学生的成绩等信息输出到文件中。要求函数参数中包含结构体数组或指针。输出到ASCII 文件的信息包括每个学生的学号、三门成绩和名次,每人一行
#include<stdio.h>
#include <stdlib.h>
#define SIZE 5
struct Student_type
{
int id ;
char name[5] ;
int math ;
int en ;
int ph ;
int sum ;
double aver ;
}stud [SIZE] ;
int save( )
{ FILE *fp; int i;
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\data.dat","w"))==NULL)
{ printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
fprintf(fp,"%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
fclose(fp);
return 0;
}
int n ;
int q ;
int sca(int n)
{
long int i ;
int ave() ;
int pr() ;
for(i = 0; i < n; i++)
{
scanf("%d%s" , &stud[i].id , &stud[i].name) ;
scanf("%d%d%d" , &stud[i].math , &stud[i].en , &stud[i].ph) ;
}
ave() ;
pr() ;
return 0 ;
}
int ave()
{
int i ;
for(i = 0; i< n; i++)
{
stud[i].sum = stud[i].math +stud[i].en + stud[i].ph ;
stud[i].aver = (double)stud[i].sum / 3 ;
}
return 0 ;
}
int pr()
{
int i ;
printf("名次 num name math eng phy total aver\n") ;
for(i = 0; i < n; i++)
{
printf(" %d %d %s " , i + 1 , stud[i].id , stud[i].name) ;
printf("%d %d %d " , stud[i].math , stud[i].en , stud[i].ph) ;
printf("%d %.2lf\n" ,stud[i].sum ,stud[i].aver) ;
}
return 0 ;
}
int check(int id)
{
int i ;
for(i = 0; i < n; i++)
{
if(id == stud[i].id)
{
printf("%d %d %s " , i + 1 , stud[i].id , stud[i].name) ;
printf("%d %d %d " ,stud[i].math , stud[i].en , stud[i].ph) ;
printf("%d %.2lf\n" , stud[i].sum ,stud[i].aver) ;
}
}
return 0 ;
}
int main()
{FILE *fp;
int i;
printf("输入学生人数\n") ;
scanf("%d" , &n) ;
sca(n) ;
/*printf("输入学生学号:\n") ;
scanf("%d" , &q) ;
check(q) ;*/
printf("enter data of students:\n");
for(i=0;i<5;i++)
{scanf("%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);}
save();
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\data.bat","r"))==NULL)
{printf("cannot open file\n"); exit(0); }
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
printf ("%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
}
fclose (fp);
}
实验二已做好,不过省略了排序
代码如上,为何我无法进行文件的写入? 展开
#include<stdio.h>
#include <stdlib.h>
#define SIZE 5
struct Student_type
{
int id ;
char name[5] ;
int math ;
int en ;
int ph ;
int sum ;
double aver ;
}stud [SIZE] ;
int save( )
{ FILE *fp; int i;
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\data.dat","w"))==NULL)
{ printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
fprintf(fp,"%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
fclose(fp);
return 0;
}
int n ;
int q ;
int sca(int n)
{
long int i ;
int ave() ;
int pr() ;
for(i = 0; i < n; i++)
{
scanf("%d%s" , &stud[i].id , &stud[i].name) ;
scanf("%d%d%d" , &stud[i].math , &stud[i].en , &stud[i].ph) ;
}
ave() ;
pr() ;
return 0 ;
}
int ave()
{
int i ;
for(i = 0; i< n; i++)
{
stud[i].sum = stud[i].math +stud[i].en + stud[i].ph ;
stud[i].aver = (double)stud[i].sum / 3 ;
}
return 0 ;
}
int pr()
{
int i ;
printf("名次 num name math eng phy total aver\n") ;
for(i = 0; i < n; i++)
{
printf(" %d %d %s " , i + 1 , stud[i].id , stud[i].name) ;
printf("%d %d %d " , stud[i].math , stud[i].en , stud[i].ph) ;
printf("%d %.2lf\n" ,stud[i].sum ,stud[i].aver) ;
}
return 0 ;
}
int check(int id)
{
int i ;
for(i = 0; i < n; i++)
{
if(id == stud[i].id)
{
printf("%d %d %s " , i + 1 , stud[i].id , stud[i].name) ;
printf("%d %d %d " ,stud[i].math , stud[i].en , stud[i].ph) ;
printf("%d %.2lf\n" , stud[i].sum ,stud[i].aver) ;
}
}
return 0 ;
}
int main()
{FILE *fp;
int i;
printf("输入学生人数\n") ;
scanf("%d" , &n) ;
sca(n) ;
/*printf("输入学生学号:\n") ;
scanf("%d" , &q) ;
check(q) ;*/
printf("enter data of students:\n");
for(i=0;i<5;i++)
{scanf("%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);}
save();
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\data.bat","r"))==NULL)
{printf("cannot open file\n"); exit(0); }
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
printf ("%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
}
fclose (fp);
}
实验二已做好,不过省略了排序
代码如上,为何我无法进行文件的写入? 展开
2个回答
展开全部
#include<stdio.h>
#include <stdlib.h>
#define SIZE 5
struct Student_type
{
int id ;
char name[5] ;
int math ;
int en ;
int ph ;
int sum ;
double aver ;
}stud [SIZE] ;
int save( )
{ FILE *fp; int i;
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\data.dat","w"))==NULL)
{ printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
fprintf(fp,"%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
fclose(fp);
return 0;
}
int n ;
int q ;
int sca(int n)
{
long int i ;
int ave() ;
int pr() ;
for(i = 0; i < n; i++)
{
scanf("%d%s" , &stud[i].id , &stud[i].name) ;
scanf("%d%d%d" , &stud[i].math , &stud[i].en , &stud[i].ph) ;
}
ave() ;
pr() ;
return 0 ;
}
int ave()
{
int i ;
for(i = 0; i< n; i++)
{
stud[i].sum = stud[i].math +stud[i].en + stud[i].ph ;
stud[i].aver = (double)stud[i].sum / 3 ;
}
return 0 ;
}
int pr()
{
int i ;
printf("名次 num name math eng phy total aver\n") ;
for(i = 0; i < n; i++)
{
printf(" %d %d %s " , i + 1 , stud[i].id , stud[i].name) ;
printf("%d %d %d " , stud[i].math , stud[i].en , stud[i].ph) ;
printf("%d %.2lf\n" ,stud[i].sum ,stud[i].aver) ;
}
return 0 ;
}
int check(int id)
{
int i ;
for(i = 0; i < n; i++)
{
if(id == stud[i].id)
{
printf("%d %d %s " , i + 1 , stud[i].id , stud[i].name) ;
printf("%d %d %d " ,stud[i].math , stud[i].en , stud[i].ph) ;
printf("%d %.2lf\n" , stud[i].sum ,stud[i].aver) ;
}
}
return 0 ;
}
int main()
{FILE *fp;
int i;
printf("输入学生人数\n") ;
scanf("%d" , &n) ;
sca(n) ;
/*printf("输入学生学号:\n") ;
scanf("%d" , &q) ;
check(q) ;*/
printf("enter data of students:\n");
for(i=0;i<5;i++)
{scanf("%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);}
save();
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\data.bat","w+"))==NULL)///////////////////这里是写
{printf("cannot open file\n"); exit(0); }
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
printf ("%d %s %d %d %d %f\n",stud[i].id,stud[i].name[i],
stud[i].math,stud[i].en,stud[i].ph,stud[i].sum,stud[i].aver);
}
fclose (fp);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询