欢迎光临散文网 会员登陆 & 注册

C语言练习

2022-10-27 18:18 作者:沐笙--ms  | 我要投稿


例11.6 有学生成绩数据文件score.dat文件,其格式为:


李小明 70

赵伟 65

刘春丽 90.5

……

请计算出平均分,并将结果写入到最后一行。形如:


平均分 86.3


#include <stdio.h>

main()

{ FILE *fp;

char name[20];

float score,sum=0;

int n=0;

fp=fopen("score.dat","r+");

while(fscanf(fp,"%s%f",name,&score)==2)

{ sum+=score;

n++;

}

fprintf(fp,"平均分\t%5.1f\n",sum/n);

fclose(fp);

}

例11.7 将给定的学生数据保存到“学生.dat”二进制文件中,然后将这些数据读出并显示在屏幕上。


#include <stdio.h>


struct STUDENT

{ int ID;

char name[10];

int age;

char addr[15];

};


int SaveToFile(struct STUDENT s[],int n)

{ int i;

FILE *f;

if((f=fopen("d:\\学生.dat","wb"))==NULL)

{

printf("学生.dat文件不能创建。\n");

return 0;

}

for(i=0;i<n;i++)

if(fwrite(&s[i],sizeof(struct STUDENT),1,f)!=1)

{

printf("在写入第%d名学生数据时发生错误,文件建立不完整。\n",i+1);

return i;

}

fclose(f);

return i;

}


int LoadAndDisplay()

{ struct STUDENT s;

int n=0;

FILE *f;

if((f=fopen("d:\\学生.dat","rb"))==NULL)

{

printf("学生.dat文件不能使用。\n");

return 0;

}

printf("学号\t姓名\t年龄\t地址\n");

while(fread(&s,sizeof(struct STUDENT),1,f)==1)

{

printf("%d\t%s\t%d\t%s\n",s.ID,s.name,s.age,s.addr);

n++;

}

fclose(f);

return n;

}


main()

{

struct STUDENT students[]=

{{1001,"李明",18,"北京"},

{1002,"王丽",19,"上海"},

{1003,"赵新欣",18,"天津"},

{1004,"陈浩然",20,"沈阳"}};


int stu_cnt=4,save_n,disp_n;


save_n=SaveToFile(students,stu_cnt);

if(save_n>0)

{

disp_n=LoadAndDisplay();

if(disp_n>0)

printf("\n共读入并显示了%d名学生的信息。\n",disp_n);

}

}

指针示例

#include <stdio.h>


main()

{

  int a[]={10,20,30,40,50};

  int *p,x;

  p=&a[0];

  printf("\n\n%d ",*p);

  printf("%d ",*p++);

  printf("%d ",(*p)++);

  printf("%d ",*(p++));

  printf("%d ",++*p);

  printf("%d ",++(*p));

  printf("%d ",*++p);

  printf("%d ",*(++p));

}


C语言练习的评论 (共 条)

分享到微博请遵守国家法律