24小时热门版块排行榜    

查看: 987  |  回复: 4
本帖产生 1 个 博学EPI ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
乐活人生: 金币+45, 博学EPI+1, ★★★很有帮助 2012-06-27 20:45:00
楼主的程序流程还算清晰,但是代码有不少问题
许多循环的地方应该用while/for,却用了if,体现在几个求最大值和平均分总分的函数中
排序的时候应该双循环排,需要2个指针,
前后数目不一致,有时候是3,有时候10,肯定出错
float初始化不要用整型的0,虽然不出错,但是不正规
格式上,写代码不要吝啬空白,在=,+等符号前后加上空白不会影响程序运行,但是可读性大大增强

ps.论坛帖代码最好用[code][/code]包围起来,否则可能会有表情符号出现

下面调试通过了
CODE:
#include
#include
using namespace std;

// 数据结构
struct guanli
{
    char xuehao[20];
    char xingming[20];
    char sex[20];
    char jiguan[20];
    float c,e,w,zong,pingjun;
    guanli *link;
};

//输入数据
guanli * shuru(int num)
{
    cout << "共需输入 " << num << " 条记录:\n";

        guanli *head,*p,*tail;
        head = new guanli;
        tail = head;
        for(int i=0;i         {
            cout << "\n请输入第 " << i+1 << "条记录:\n";
                p=new guanli;
                cout << "学号: ";
                cin >> p->xuehao;
                cout << "姓名: ";
                cin >> p->xingming;
                cout << "性别: ";
                cin >> p->sex;
                cout << "籍贯: ";
                cin >> p->jiguan;
                cout << "成绩(eg. 20.5 30.5 40): ";
                cin >> p->c >> p->e >> p->w;
                p->link = NULL;

                // 添加节点
                tail->link = p;
                tail = p;
    }

        return head;
}

//计算总成绩平均成绩
void jisuanzong(guanli *head)
{
        guanli *p = head->link;

        if(p!=NULL)
        {
                p->zong = p->c + p->e + p->w;
                p->pingjun = p->zong/3.0;
    }
}

// 计算最高成绩
void zuigao(guanli *head)
{
        guanli *p = head->link,*m = head->link;
        while (p)
        {
                if(m->zong < p->zong) m = p;
                p=p->link;
    }

        cout << m->xuehao << '\t' << m->xingming << '\t' << m->sex << '\t' << m->jiguan << '\t' << m->zong << endl;
}

//C单科平均成绩
void allc(guanli *head)
{
        guanli *p = head->link;
        float a = 0.0;
        while (p)
        {
                a += p->c;
                p = p->link;
    }
        cout << "C单科平均成绩: " << a << endl;
}

//英语单科平均成绩
void alle(guanli *head)
{
        guanli *p = head->link;
        float a = 0.0;
        while (p)
        {
                a += p->e;
                p = p->link;
    }
        cout << "英语单科平均成绩: " << a << endl;
}

//物理单科平均成绩
void allw(guanli *head)
{
        guanli *p = head->link;
        float a = 0.0;
        while (p)
        {
                a += p->w;
                p = p->link;
    }
        cout << "物理单科平均成绩: " << a << endl;
}

//C最高成绩
void czuigao(guanli *head)
{
        guanli *p = head->link,*m = head->link;
        while (p)
        {
            if (m->c < p->c) m = p;
            p = p->link;
        }
        cout << m->xuehao << '\t' << m->xingming << '\t' << m->c << endl;
}

//英语最高成绩
void ezuigao(guanli *head)
{
        guanli *p = head->link,*m = head->link;
        while (p)
        {
            if (m->e < p->e) m = p;
            p = p->link;
        }
        cout << m->xuehao << '\t' << m->xingming << '\t' << m->e << endl;
}

//物理最高成绩
void wzuigao(guanli *head)
{
        guanli *p = head->link,*m = head->link;
        while (p)
        {
            if (m->w < p->w) m = p;
            p = p->link;
        }
        cout << m->xuehao << '\t' << m->xingming << '\t' << m->w << endl;
}

//用姓名查询
void chaxinming(guanli *head,char *name)
{
        guanli *p = head->link;
        while(p && strcmp(p->xingming,name)!=0) p=p->link;
        if (p) cout << p->xuehao << '\t' << p->xingming << '\t' << p->sex << '\t' << p->jiguan << '\t' << endl;
}

//用学号查询
void chaxuehao(guanli *head,char *id)
{
        guanli *p = head->link;
        while(p && strcmp(p->xuehao,id)!=0) p=p->link;
        if (p) cout << p->xuehao << '\t' << p->xingming << '\t' << p->sex << '\t' << p->jiguan << '\t' << endl;
}

// 排序
guanli* paixu(guanli *head)
{
        guanli *p = head->link;
        guanli *q, *tail, *temp;
        while (p && p->link) { tail = p; p = p->link; }

        float y = p->zong, t = 0.0;
        p = head->link;
        for (p = head->link; p && p!=tail; p = p->link)
        {
            for (q = p->link; q; q = q->link)
            {
                if (q->zong > q->zong) { temp = p; p = q; q = temp; }
            }
        }

        return head;
}

// 删除
void shanchu(guanli *head,char *name)
{
        guanli *p = head->link;
        guanli *n = head;
        while (p)
        {
            if (0==strcmp(p->xingming,name))
            {
                n->link = p->link;
                delete p;
                p = NULL;
            }
            else
            {
                p = p->link;
                n = n->link;
            }
        }
}

// 主函数
void main()
{
        guanli *p;
        p = shuru(2);

    while (p && p->link)
        {
                p = p->link;
                cout << "\n学号: " << p->xuehao
                << "\n姓名: " << p->xingming
                << "\n性别: " << p->sex
                << "\n籍贯: " << p->jiguan
                << "\nC成绩: "<< p->c <<"\tE成绩: " << p->e << "\tW成绩: " << p->w << endl;
        }
}

运行结果:
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-06-27 20:40:46
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 乐活人生 的主题更新
信息提示
请填处理意见