标题:请高手为小弟编个程序(无限感激)
只看楼主
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:2 
你不是要帮忙吗?

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-29 00:53
简安
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:25
专家分:17
注 册:2010-11-26
得分:2 
这种类型的题目,
  老师在教数组的时候讲了,
就是太复杂了,自己解决吧。
 同是新手,多动手才好啦~!
2010-11-30 15:52
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
得分:2 
我这有一个挺合你,你自己再改一下吧

/*
学生成绩管理程序
编制一个统计学生考试分数的管理程序。
设学生成绩已以一个学生一个记录的形式存储在文件中,
每位学生记录包含的信息有:姓名,学号和各门功课的成绩。
程序具有以下几项功能:求出各门课程的总分,平均分,按姓名,
按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。
*/

#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-11-30 16:01
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:2 
这个,很简单

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-11-30 17:24
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:2 
哈哈。
我怎么老觉得楼上的很眼熟..你是不是跟某个人纠结过????
2010-11-30 17:26
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
莫名其妙的帖子
2010-11-30 17:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-327160-1-1.html




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

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