标题:利用随机数生成计算题,有人帮帮我吗 [急哭 ]
只看楼主
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
 问题点数:0 回复次数:3 
利用随机数生成计算题,有人帮帮我吗 [急哭 ]
等级2那片儿是有什么问题嘛,为什么随即产出的第一位数sum1总是0呢?太巧了吧


程序代码:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
    int level;    //选择等级
    printf("\n\t\t===============你已进入到测试环节================");
    printf("\n\t\t\t   **本次测试的等级说明如下**\n");
    printf("\t      输入等级(1--8):一到两位数的加法为1级;\n");
    printf("\t                     一到两位数的减法为2级;\n");
    printf("\t                     一到两位数的乘法为3级;\n");
    printf("\t                     一到两位数的除法为4级;\n");
    printf("\t                     三到五位数的加法为5级;\n");
    printf("\t                     三到五位数的减法为6级;\n");
    printf("\t                     三到五位数的乘法为7级;\n");
    printf("\t                     三到五位数的除法为8级;\n");
    printf("\n请输入等级:\t");
    scanf("%d",&level);
    
    switch(level)
    {
        case 1: Level_1();  break;
        case 2: Level_2();  break;
    //    case 3: Level_3();  break;
    //    case 4: Level_4();  break;
    //    case 5: Level_5();  break;
    //    case 6: Level_6();  break;
    //    case 7: Level_7();  break;
    //    case 8: Level_8();  break;
        default: break;
    } 
    return 0; 
}

//1级

Level_1()
{
    int i,j; 
    int m,num[2];    //m是每次要做的题目数,num[]是产生的随机数    
    long sum=0,result;    //sum是机器的结果,result是学生自己输入的答案
    
    printf("\n\n请输入你想做的题目数 m=");
    scanf("%d",&m);
    srand((unsigned) time (NULL));
    for(i=0;i<m;i++)    //产生m个题目 
    {
        sum=0;
        for(j=0;j<2;j++)      //产生两个随机数 
        {
            num[j]=rand()%100;    //随即得到一个0到99的数 
            sum+=num[j];
        }
        printf("\n你要计算的题目为 %d+%d=\n",num[0],num[1]);
        printf("\n请输入你的答案:\t");
        scanf("%ld",&result);
        if(result==sum)
        {
            printf("\n你的第%d个测试题难度为1级,正确答案为%ld,你的计算结果正确!\n",i,sum);
        }
        else
        {
            printf("\n你的第%d个测试题难度为1级,正确答案为%ld,你的计算结果错误!\n",i,sum);
        }
    } 
} 

//2级

Level_2()
{
    int i,j; 
    int m,num[2];    //m是每次要做的题目数,num[]是产生的随机数    
    long sum1,sum2,sum,result;    //sum是机器的结果,result是学生自己输入的答案
    
    printf("\n\n请输入你想做的题目数 m=");
    scanf("%d",&m);
    srand((unsigned) time (NULL));
    for(i=0;i<m;i++)    //产生m个题目 
    {
        sum=0;
        sum1=0;
        sum2=0;
        for(j=0;j<2;j++)      //产生两个随机数 
        {
            num[j]=rand()%100;    //随即得到一个0到99的数 
            sum2=num[j];
            if(j=1)
            {
                break;
            }
            sum1=sum2;
            sum2=0;
        }
        sum=sum1-sum2;
        printf("\n你要计算的题目为 %ld-%ld=\n",sum1,sum2);
        printf("\n请输入你的答案:\t");
        scanf("%ld",&result);
        if(result==sum)
        {
            printf("\n你的第%d个测试题难度为1级,正确答案为%ld,你的计算结果正确!\n",i,sum);
        }
        else
        {
            printf("\n你的第%d个测试题难度为1级,正确答案为%ld,你的计算结果错误!\n",i,sum);
        }
    } 
} 


[此贴子已经被作者于2019-3-5 10:10编辑过]

搜索更多相关主题的帖子: 位数 sum printf break num 
2019-03-02 15:55
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
得分:0 
C标准库的随机数生成是伪随机数发生器,或者说,计算机自身是没法产生真正的随机数的,要获取无规律的随机数值,需要借助别的途径,简单的利用的话,你可以将系统时间或者其他途径获取的变化数值加入计算作为随机数的变量,要想达到完全随机的话单靠标准库的随机数生成是不行的。

如果你的PC是Intel的CPU你可以看看这个,这是借助物理层面的随机变化来达成获取随机数目的一种办法
https://software.
2019-03-13 03:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
因为 sum1=0; 之后你没能重新给它赋值
将 if(j=1) 改为 if(j==1) 再试试吧
2019-03-13 09:54
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
得分:0 
回复 3楼 rjsp
嗯嗯,我把j=1改成j==1后就好了,我懂了,那里本来是用来判断是否等于1的,我的j=1就变成了赋值了
谢谢!!!
2019-03-15 14:24



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




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

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