| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 464 人关注过本帖
标题:学校的函数与结构体实验困惑求解
取消只看楼主 加入收藏
wjsgmhh
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-12-9
结帖率:80%
收藏
已结贴  问题点数:19 回复次数:0 
学校的函数与结构体实验困惑求解
有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
快速回复:学校的函数与结构体实验困惑求解
数据加载中...
 
   



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

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