| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 330 人关注过本帖
标题:帮看看那错啦
取消只看楼主 加入收藏
周嘉明
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-11-29
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:1 
帮看看那错啦
#include <stdio.h>
#define    SWN        3    /* 课程数 */
#define NAMELEN        20    /* 姓名最大字符数 */
#define CODELEN        10    /* 学号最大字符数 */
#define FNAMELEN    80    /* 文件名最大字符数 */
#define BUFLEN        80    /* 缓冲区最大字符数 */
/* 课程名称表 */
char schoolwork[SWN][NAMELEN+1] = {"Chinese","Mathematic","English"};
struct record
{
    char    name[NAMELEN+1];    /* 姓名 */
    char     code[CODELEN+1];    /* 学号 */
    int     marks[SWN];        /* 各课程成绩 */
    int total;            /* 总分 */
}stu;

struct node
{
    char    name[NAMELEN+1];    /* 姓名 */
    char     code[CODELEN+1];    /* 学号 */
    int     marks[SWN];        /* 各课程成绩 */
    int     total;            /* 总分 */
    struct    node *next;        /* 后续表元指针 */
}*head;    /* 链表首指针 */

int total[SWN];        /* 各课程总分 */
FILE *stfpt;        /* 文件指针 */
char stuf[FNAMELEN];    /* 文件名 */

/* 从指定文件读入一个记录 */
int readrecord(FILE *fpt,struct record *rpt)
{
    char buf[BUFLEN];
    int i;
    if(fscanf(fpt,"%s",buf)!=1)
        return 0;    /* 文件结束 */
    strncpy(rpt->name,buf,NAMELEN);
    fscanf(fpt,"%s",buf);
    strncpy(rpt->code,buf,CODELEN);
    for(i=0;i<SWN;i++)
        fscanf(fpt,"%d",&rpt->marks[i]);
    for(rpt->total=0,i=0;i<SWN;i++)
        rpt->total+=rpt->marks[i];
    return 1;
}
/* 对指定文件写入一个记录 */
writerecord(FILE *fpt,struct record *rpt)
{
    int i;
    fprintf(fpt,"%s\n",rpt->name);
    fprintf(fpt,"%s\n",rpt->code);
    for(i=0;i<SWN;i++)
        fprintf(fpt,"%d\n",rpt->marks[i]);
    return ;
}

/* 显示学生记录 */
displaystu(struct record *rpt)
{
    int i;
    printf("\nName   : %s\n",rpt->name);
    printf("Code   : %s\n",rpt->code);
    printf("Marks  :\n");
    for(i=0;i<SWN;i++)
        printf("       %-15s : %4d\n",schoolwork[i],rpt->marks[i]);
    printf("Total  : %4d\n",rpt->total);
}

/* 计算各单科总分 */
int totalmark(char *fname)
{
    FILE *fp;
    struct record s;
    int count,i;
    if((fp=fopen(fname,"r"))==NULL)
    {
        printf("Can't open file %s.\n",fname);
        return 0;
    }
    for(i=0;i<SWN;i++)
        total[i]=0;
    count=0;
    while(readrecord(fp,&s)!=0)
    {
        for(i=0;i<SWN;i++)
            total[i]+=s.marks[i];
        count++;
    }
    fclose(fp);
    return count;    /* 返回记录数 */
}

/* 列表显示学生信息 */
void liststu(char *fname)
{
    FILE *fp;
    struct record s;
    if((fp=fopen(fname,"r"))==NULL)
    {
        printf("Can't open file %s.\n",fname);
        return ;
    }
    while(readrecord(fp,&s)!=0)
    {
        displaystu(&s);
        printf("\n      Press ENTER to continue...\n");
        while(getchar()!='\n');
    }
    fclose(fp);
    return;
2010-12-01 15:13
周嘉明
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-11-29
收藏
得分:0 
能不能你帮我直接更改下呢!谢谢2楼的
2010-12-01 20:16
快速回复:帮看看那错啦
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046068 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved