| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:求助一个C语言随机函数的问题
只看楼主 加入收藏
天堂廉价
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-12
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
求助一个C语言随机函数的问题
有50名学生,学号与五门成绩随机生成,还要求总成绩和平均分。

搜索更多相关主题的帖子: C语言 总成绩 
2015-01-13 17:35
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:3 
用rand()不就行了吗?

一片落叶掉进了回忆的流年。
2015-01-13 17:42
潇湘书生
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:89
注 册:2014-12-9
收藏
得分:3 
再建立一个结构体数组,用来存放学生的信息
2015-01-13 18:21
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
收藏
得分:3 
回复 3楼 潇湘书生
这个用是能用结构体,但是也不是一定吧,成绩学号总分平均分什么的不都是整型的数据吗,用数组就可以了吧。

弹指一挥间
2015-01-13 19:29
潇湘书生
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:89
注 册:2014-12-9
收藏
得分:0 
回复 4楼 大爱CATs
平均分可能算出带小数,定义为浮点型更为精确,同时还有学号,如果学号中包含字母与数字,那么再用数组再表示这些信息就过为麻烦了吧,我感觉定义为结构体更为方便点。
2015-01-13 19:36
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
收藏
得分:0 
回复 5楼 潇湘书生
哈哈,按你这么说那也是不能再用数组了,我没有你想的那么细,尤其是学号的字母问题

弹指一挥间
2015-01-13 19:41
潇湘书生
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:89
注 册:2014-12-9
收藏
得分:0 
回复 6楼 大爱CATs
定义为结构体数组就行了,这不是关键,关键是满足他题目要求的随机产生的函数,调用随机函数就行了
2015-01-13 19:44
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <windows.h>
#include <time.h>
#define N  10 //学生人数
#define M 5 //课程数

typedef struct {
    int sn;
    double grade[M];
    double sum;
    double ave;
} STU;

//随机生成唯一学号
void initSn(STU *p) {
    int a[N], i, j, t, flag = 0;

    for(i = 0; i < N; i++) {
        a[i] = i + 1;
        flag += a[i];
    }

    while(flag) {
        t = 1 + (int)(N * rand() / (RAND_MAX + 1.0));

        for(j = 0; j < N; j++) {
            if(a[j] == t) {
                flag -= a[j];
                a[j] = 0;
                (p++)->sn = j + 1;
                break;
            }
        }
    }
}

//随机打分 求总分 求平均分
void rate(STU *p) {
    int i, j;
    double sum;

    for(i = 0; i < N; i++) {
        sum = 0;

        for(j = 0; j < M; j++) {
            p->grade[j] = 59 + (41.0 * rand() / (RAND_MAX + 1.0));
            sum +=  p->grade[j];
        }

        p->sum = sum;
        p->ave = sum / M;
        p++;
    }
}

//打印五门成绩
void prtRate(STU *p) {
    int i = 0;

    for(; i < M; i++) {
        printf("%.1f\t", p->grade[i]);
    }
}

//打印全部数据表单
void display(STU *p) {
    int i;
    printf("学号\t\t----- 成   绩 -----\t\t总分\t平均\n");

    for(i = 0; i < N; i++) {
        printf("%03d\t", (p + i)->sn);
        prtRate(p + i);
        printf("%.1f\t%.1f\n", (p + i)->sum, (p + i)->ave);
    }
}

int main(void) {
    STU stu[N], *pstu = stu;
    srand((unsigned int)time(NULL)); //以当前时间生成随机种子
    initSn(pstu);
    rate(pstu);
    display(pstu);
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-13 21:22
快速回复:求助一个C语言随机函数的问题
数据加载中...
 
   



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

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