| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:每日一题!NO.5(适合新手做练习)[学生管理系统](2楼已经给出答案)
只看楼主 加入收藏
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
结帖率:91.67%
收藏
已结贴  问题点数:5 回复次数:3 
每日一题!NO.5(适合新手做练习)[学生管理系统](2楼已经给出答案)
题目:编写一个学生系统,其中学生的信息有姓名(最多20个字符)、性别、(用1表示男,0表示女)、生日[19850101(年月日)]、身高[1.74(m)],还需要处理C语言、徽积分两门成绩、请编写实现以下功能:
   从键盘中输入学生的人数,然后输入学生的数据,输出每门课程的总成绩,最高分和最低分,以及获得最高分的学生的信息。需要注意的是某门课得最高分的学生可能不止一个。
————————————————————————————————————————————————————
   我是一只菜鸟,何时才能飞得高!
--------------------------------------------------
谢谢2楼的答案,由于考试临近,我想每日一题这个栏目要停止一断时间!谢谢这几期大家的参与!再次给大家说声对不起!


[ 本帖最后由 啊C 于 2011-6-9 22:14 编辑 ]
搜索更多相关主题的帖子: 管理系统 总成绩 C语言 键盘 
2011-06-08 22:31
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <string.h>
#define STUDENT_MAX 100

typedef struct {
    char name[21];    // 姓名
    int sex;          // 性别
    int birthday;     // 生日
    float height;     // 身高   
    float c_language; // C语言
    float calculus;   // 微积分
    float total;      // 成绩和
} Student;

select_sort_desc(Student * students, int size) {        // 降序排序
    int i, j, k;
    for(i = 0; i < size - 1; i++) {
        k = i;
        for(j = i + 1; j < size; j++) {
            if(students[k].total < students[j].total) {
                k = j;
            }
        }
        if(k != i) {
            Student temp = students[k];
            students[k] = students[i];
            students[i] = temp;
        }
    }
}

int main(void) {
    Student students[STUDENT_MAX];
    int n, i, tmp;
    char sex_tmp[3];
    printf("请输入学生人数:");
    fflush(stdout);
    while(!scanf("%d", &n) || (n > STUDENT_MAX || n < 1)) {        // 输入学生人数,如果不合法则继续
        printf("请输入学生人数:");
        fflush(stdout);
    }
    for(i = 0; i < n; i++) {    // 输入学生的信息,以空格分隔,如输入有错则重新输入当前学生的信息
        printf("输入%d名学生的信息(姓名、性别、生日、身高、C语言、微积分),输入用空格分隔:\n", i + 1);
        scanf("%s%s%d%f%f%f", &students[i].name, sex_tmp, &students[i].birthday, &students[i].height, &students[i].c_language, &students[i].calculus);
        students[i].sex = strcmp("", sex_tmp) ? 0 : 1;
        if(students[i].c_language < 0 || students[i].c_language > 100 ||
           students[i].calculus < 0 || students[i].calculus > 100) {
            printf("输入有误!\n");
            i--;
        }
    }
    printf("\n");
    for(i = 0; i < n; i++) {    // 输出每个学生对应的总成绩
        students[i].total = students[i].c_language;
        students[i].total += students[i].calculus;
        printf("%s的总成绩是:%.1f\n", students[i].name, students[i].total);
    }
    select_sort_desc(students, n);    // 降序排序,最高分在前面,最低分在后面
    printf("最高分是:%.1f\n", students[0].total);
    printf("最低分是:%.1f\n", students[n - 1].total);
    printf("\n");
    for(i = 0; i < n; i++) {
        printf("获得最高分的同学是:%s\n", students[i].name);    // 输出最高分同学的信息,如有多个并列第一则全部输出
        printf("性别:%s\n", (students[i].sex ? "" : ""));
        printf("生日:");
        tmp = 10000000;
        while(tmp > 0) {
            putchar((students[i].birthday / tmp % 10) + '0');
            tmp == 10000 && putchar('/');
            tmp == 100 && putchar('/');
            tmp /= 10;
        }
        printf("\n身高:%.2f m\n", students[i].height);
        printf("C语言:%.1f\n", students[i].c_language);
        printf("微积分:%.1f\n\n", students[i].calculus);
        if(students[i].total != students[i + 1].total)
            break;
    }
    return 0;
}   /* Output:
请输入学生人数:3
输入1名学生的信息(姓名、性别、生日、身高、C语言、微积分),输入用空格分隔:
小明 男 19941118 1.75 98.7 97.8
输入2名学生的信息(姓名、性别、生日、身高、C语言、微积分),输入用空格分隔:
小红 女 19940203 1.65 97.8 98.7
输入3名学生的信息(姓名、性别、生日、身高、C语言、微积分),输入用空格分隔:
小东 男 19930506 1.70 96.6 95.5

小明的总成绩是:196.5
小红的总成绩是:196.5
小东的总成绩是:192.1
最高分是:196.5
最低分是:192.1

获得最高分的同学是:小明
性别:男
生日:1994/11/18
身高:1.75 m
C语言:98.7
微积分:97.8

获得最高分的同学是:小红
性别:女
生日:1994/02/03
身高:1.65 m
C语言:97.8
微积分:98.7

Process returned 0 (0x0)   execution time : 66.875 s
Press any key to continue.
*/

My life is brilliant
2011-06-09 12:17
bc101
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-8
收藏
得分:0 
fflush(stdout);
C语言入门基础课本刚学完,其他的大体看得懂,不明白上面的函数,查了下  好像是清除缓存的,但还是不懂,请教下。没有这个会怎么样。
        另外高手们推荐下    C语言想继续学深点,该看什么书啊。(那个  string.h什么的库函数  基础书上好像都没怎么讲到。)
2011-06-09 18:38
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
这个问题和实现有关,如
int n;
printf("请输入一个整数:");
fflush(stdout);    // 如果没有这行,可能在终端或控制台不会出现上面打印的一串字符,但有了这句话后,就会被强制打印到终端或控制台。
scanf("%d", &n);

My life is brilliant
2011-06-09 20:33
快速回复:每日一题!NO.5(适合新手做练习)[学生管理系统](2楼已经给出答案)
数据加载中...
 
   



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

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