| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 464 人关注过本帖
标题:学校的函数与结构体实验困惑求解
只看楼主 加入收藏
wjsgmhh
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-12-9
结帖率:80%
收藏
已结贴  问题点数:19 回复次数:4 
学校的函数与结构体实验困惑求解
有5个学生,每个学生的数据包括学号、姓名、3 门课的成绩(100分制),从键盘输入5个学生的信息。
 
要求:
定义表示至少包含上述学生信息的结构体,并用数组存放信息。
定义Input函数输入5个学生的数据,对输入成绩的合理性进行检查。
定义SortByScore函数,根据学生的平均成绩排序。
定义Output函数输出5个学生的数据。
定义SortByName函数,根据学生姓名排序。
main函数内依次调用Input,Output,SortByScore,Output,SortByName,Output函数,验证设计的正确性。

代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
    int num;
    double sub1,sub2,sub3,ave;
    char name[100];
}stu[5];
void Input()
{
    int i;
    printf("Please input 3 subjects' score of 5 students:\n");
    for(i=0;i<5;i++)
    {
        printf("Number:");
        scanf("%d",&stu[i].num);
        if(stu[i].num<=0||stu[i].num>5)
            continue;
        printf("Name:");
        scanf("%s",&stu[i].name);
        printf("Subject1:");
        scanf("%d",&stu[i].sub1);
        if(stu[i].sub1<=0||stu[i].sub1>100)
            continue;
        printf("Subject2:");
        scanf("%d",&stu[i].sub2);
        if(stu[i].sub2<=0||stu[i].sub2>100)
            continue;
        printf("Subject3:");
        scanf("%d",&stu[i].sub3);
        if(stu[i].sub3<=0||stu[i].sub3>100)
            continue;
        printf("\n");
    }
}
void SortByScore()
{
    int i,j,k=0;
    double temp;
    for(i=0;i<5;i++)
        stu[i].ave=(stu[i].sub1+stu[i].sub2+stu[i].sub3)/3;
    for(i=0;i<4;i++)
    {
        k=i;
        for(j=1;j<5;j++)
            if(stu[i].ave<stu[j].ave)
                k=j;
        if(k!=i)
        {
            temp=stu[i].ave;
            stu[i].ave=stu[k].ave;
            stu[k].ave=temp;
        }
    }
}
void SortByName()
{
    int i,j,k=0;
    char temp[100];
    for(i=0;i<4;i++)
    {
        for(j=1;j<5;j++)
        {
            k=i;
            if(strcmp(stu[j].name,stu[k].name)<0)
                k=j;
            if(k!=i)
            {
                strcpy(temp,stu[i].name);
                strcpy(stu[i].name,stu[k].name);
                strcpy(stu[k].name,temp);
            }
        }
    }
}
void Output()
{
    int i;
    printf("Valid\n");
    printf(" Number    Name    Subject1   Subject2   subject3   average\n");
    for(i=0;i<5;i++)
        printf("    %d           %s      %d          %d         %d       %d\n",stu[i].num,stu[i].name,stu[i].sub1,stu[i].sub2,stu[i].sub3,stu[i].ave);
    printf("\n");
}
int main()
{
    int i;;
    Input();
    SortByScore();
    Output();
    SortByName();
    Output();
    system("pause");
    return 0;
}
为什么我的第二科成绩和平均分全是0???
搜索更多相关主题的帖子: include 结构体 学校 键盘 信息 
2013-12-30 10:00
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
单步跟进去看看,估计是函数调用的时候没传值出来吧

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-12-31 07:10
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
double sub1,sub2,sub3,ave;
scanf("%d",&stu[i].sub2);
printf("    %d           %s      %d          %d         %d       %d\n",stu[i].num,stu[i].name,stu[i].sub1,stu[i].sub2,stu[i].sub3,stu[i].ave);

double型数据你都用%d,能没问题吗?别问怎么改,楼下某一层会有贱人告诉你的,我告诉你的就这么多了,想怎么改自己去查scanf,printf的用法

[ 本帖最后由 embed_xuel 于 2013-12-31 09:31 编辑 ]

总有那身价贱的人给作业贴回复完整的代码
2013-12-31 08:11
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:5 
回复 3楼 embed_xuel
大神。我鄙视你。严重鄙视你。祝你出门被钱砸。走路被幸运撞。

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-31 09:29
丶Super丶梦
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2013-11-14
收藏
得分:0 
你都是大神了   干嘛还要问我们?
2014-01-03 20:55
快速回复:学校的函数与结构体实验困惑求解
数据加载中...
 
   



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

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