标题:大神帮我改一下这个程序。。。先谢过
只看楼主
tudou2xigua
Rank: 2
等 级:论坛游民
帖 子:87
专家分:54
注 册:2011-3-20
结帖率:90.32%
已结贴  问题点数:30 回复次数:5 
大神帮我改一下这个程序。。。先谢过
有二十个学生 每个学生有6门课成绩(数学 语文 英语 化学 物理 生物) 从键盘上输入以上数据(包括学号 姓名 6门课成绩) 计算出每个人的总成绩 各科平均成绩 并按成绩排名。
#include<stdio.h>
struct student
{
    int num;
    char name[10];
    float math,yuwen,english,huaxue,physic,shengw;
    float sum1,average;
}stu[20];
void main()
{
    void sort(float*p);
    struct student*p1=stu;
    int i;
    float sum,aver;
    for(i=0;i<20;i++)
    {
        printf("学号:");
        scanf("%d",&p1->num);
        printf("姓名:");
        scanf("%s",p1->name);
        printf("各门成绩:");
        scanf("%f %f %f %f %f %f",&p1->math,&p1->yuwen,&p1->english,&p1->huaxue,&p1->physic,&p1->shengw);
    }
    for(p1=stu;p1<stu+20;p1++)
    {
        sum=p1->math+p1->yuwen+p1->english+p1->huaxue+p1->physic+p1->shengw;
        printf("总分:%f",sum);
        aver=sum/6;
        printf("平均分:%f",aver);
        sum=0;
    }
    for(i=0;i<20;i++)
    sort(p1->sum1);
    for(i=0;i<20;i++)
        printf("%d %s %f %f %f %f %f %f",p1->num,p1->name,p1->math,p1->yuwen,p1->english,p1->huaxue,p1->physic,p1->shengw);
}
void sort(struct student*p)
{
    int i,j;
    float swap;
    for(i=0;i<19;i++)
        for(j=i+1;j<20;j++)
            if(p[i]<p[j])
            {
                swap=p[i];
                p[i]=p[j];
                p[j]=swap;
            }
}
大神帮我改一下,谢谢啦,分不多,见谅,先谢过!
搜索更多相关主题的帖子: english huaxue 总成绩 英语 姓名 
2011-06-07 13:42
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
得分:0 
和我们的课程设计差不多啊?
2011-06-07 13:59
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
得分:0 
程序代码:
#include<stdio.h>

 struct student

 {
     int num;
     char name[10];
     float math,yuwen,english,huaxue,physic,shengw;
     float sum1,average;

 }stu[20];



 void main()

 {
     struct student p;
     int i,j;

 
     for(i=0;i<20;i++)
     {
         printf("学号:");
         scanf("%d",&stu[i].num);
         printf("姓名:");
         scanf("%s",&stu[i].name);
         printf("各门成绩:");
         scanf("%f %f %f %f %f %f",&stu[i].math,&stu[i].yuwen,&stu[i].english,&stu[i].huaxue,&stu[i].physic,&stu[i].shengw);
     }
     for(i=0;i<20;i++)
     {
         stu[i].sum1=stu[i].math+stu[i].yuwen+stu[i].english+stu[i].huaxue+stu[i].physic+stu[i].shengw;
         stu[i].average=stu[i].sum1/6;
         printf("学号:%d",stu[i].num);
         printf("姓名:%s",stu[i].name);
         printf("总分:%f",stu[i].sum1);
         printf("平均分:%f",stu[i].average);
     }
     for(i=0;i<20;i++)
     {
         for(j=i+1;j<20;j++)
             if(stu[i].sum1<stu[j].sum1)
             {
                 stu[i]=p;
                 p=stu[j];
                 stu[j]=p;
             }
     }
     for(i=0;i<20;i++)
         printf("%d %s %f %f %f %f %f %f",stu[i].num,stu[i].name,stu[i].math,stu[i].yuwen,stu[i].english,stu[i].huaxue,stu[i].physic,stu[i].shengw);

 }


 


改过,但是要你自己测试吧! 输入20组数据。。。
2011-06-07 16:21
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:30 
程序代码:
#include<stdio.h>
struct student
{
    int num;
    char name[10];
    float math,yuwen,english,huaxue,physic,shengw;
    float sum1,average;
}stu[20];
void main()
{
    void sort(struct student*p);
    struct student*p1=stu;
    int i;
    float sum,aver;
    /*
    1
    sdfsdf
    1 2 3 4 5 6
    2
    sdfsgg
    2 3 4 5 6 7
    3
    sdflkj
    4 5 6 7 8 9
    */
    for(p1=stu;p1<stu+3;p1++)
    {
        printf("学号:");
        scanf("%d",&p1->num);
        getchar();
        printf("姓名:");
        scanf("%s",p1->name);
        printf("各门成绩:");
        scanf("%f %f %f %f %f %f",&p1->math,&p1->yuwen,&p1->english,&p1->huaxue,&p1->physic,&p1->shengw);
    }
    for(p1=stu;p1<stu+3;p1++)
    {
        p1->sum1=p1->math+p1->yuwen+p1->english+p1->huaxue+p1->physic+p1->shengw;
        printf("总分:%f",p1->sum1);
        p1->average=p1->sum1/6;
        printf("平均分:%f",p1->average);
        printf("\n");
    }
    printf("\n");
    sort(stu);
    for(p1=stu;p1<stu+3;p1++)
        printf("%-5d %s %-5.1f %-5.1f %-5.1f %-5.1f %-5.1f %-5.1f\n",p1->num,p1->name,p1->math,p1->yuwen,p1->english,p1->huaxue,p1->physic,p1->shengw);
}
void sort(struct student*p)
{
    int i,j;
    student swap;
    for(i=0;i<19;i++)
        for(j=i+1;j<20;j++)
            if(p[i].sum1<p[j].sum1)
            {
                swap=p[i];
                p[i]=p[j];
                p[j]=swap;
            }
}

                                         
===========深入<----------------->浅出============
2011-06-07 16:37
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
得分:0 
程序代码:
#include <stdio.h>
#include <malloc.h>

typedef struct {
    int stu_no;
    char name[10];
    float math, chinese, english, chemistry, physics, biology, total, average;
} struct_stu;

int main() {
    struct_stu * student[20], * tmp;
    int i, j;
    for (i = 0; i < 20; i++) {
        student[i] = (struct_stu *) malloc(sizeof(struct_stu));
        printf("\n学号:");
        fflush(stdout);
        scanf("%d", &student[i]->stu_no);
        printf("姓名:");
        fflush(stdout);
        scanf("%s", &student[i]->name);
        printf("各门成绩:");
        fflush(stdout);
        scanf("%f %f %f %f %f %f",&student[i]->math, &student[i]->chinese, &student[i]->english,
              &student[i]->chemistry, &student[i]->physics, &student[i]->biology);
        student[i]->total = student[i]->math + student[i]->chinese + student[i]->english +
                            student[i]->chemistry + student[i]->physics + student[i]->biology;
        student[i]->average = student[i]->total / 6;
    }
    for (i = 0; i < 19; i++) {
        for (j = i + 1; j < 20; j++) {
            if (student[j]->total > student[i]->total) {
                tmp = student[i];
                student[i] = student[j];
                student[j] = tmp;
            }
        }
    }
    for (i = 0; i < 20; i++) {
        printf("\n%2d    ", i + 1);
        printf("学号:%-6d", student[i]->stu_no);
        printf("姓名:%-10s", student[i]->name);
        printf("各门成绩:%6.2f %6.2f %6.2f %6.2f %6.2f %6.2f",
                student[i]->math, student[i]->chinese, student[i]->english,
                student[i]->chemistry, student[i]->physics, student[i]->biology);
    }
    return 0;
}
    



[ 本帖最后由 voidx 于 2011-6-7 16:48 编辑 ]
2011-06-07 16:45
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
得分:0 
sort(p1->sum1);括号里面也应该是结构体类型吧
sum初始化下,因为没有初始化的值是不确定度 以防万一
sort(p1->sum1);
你前面不是定义了 里面是指针啊这里是指传递 不会改变实参
差不多就这些 自己在仔细看看吧
2011-06-07 18:10



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




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

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