| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:随机产生加减乘除运算,如果两数除不尽应该重新选题。在堆出时给出评分,根 ...
只看楼主 加入收藏
会飞的猫猫
Rank: 1
来 自:星星
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-4
收藏
得分:0 
回复 9楼 azzbcc
可是当时14也错了
2014-04-05 15:02
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
问题还是那几个,不能用 = 做判断

printf ("%d/%d=",a, b!=0); 不对,应该是 printf("%d / %d = ", a, b);

if (ans =a/b) 也不对,应该用 if (ans * b == a)


[fly]存在即是合理[/fly]
2014-04-05 18:05
会飞的猫猫
Rank: 1
来 自:星星
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-4
收藏
得分:0 
回复 12楼 azzbcc
那样子改后为什么正确率总为0.000000,除不尽也没从新选题,也没有说给出n或N就退出?
2014-04-05 21:41
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
我不知道你代码现在是什么情况

自己写了一个你看看
程序代码:
#define _CRT_SECURE_NO_WARNINGS

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int Add()
{
    int ans;
    int a = rand() % 100;
    int b = rand() % 100;

    printf("%d + %d = ", a, b);
    scanf("%d", &ans);
    getchar();

    return a + b == ans;
}

int Sub()
{
    int ans;
    int a = rand() % 100;
    int b = rand() % 100;

    printf("%d - %d = ", a, b);
    scanf("%d", &ans);
    getchar();

    return a - b == ans;
}

int Mul()
{
    int ans;
    int a = rand() % 100;
    int b = rand() % 100;

    printf("%d * %d = ", a, b);
    scanf("%d", &ans);
    getchar();

    return a * b == ans;
}

int Div()
{
    int ans;
    int a = rand() % 100;
    int b = rand() % 10 + 1;

    a = a / b * b;

    printf("%d / %d = ", a, b);
    scanf("%d", &ans);
    getchar();

    return a == b * ans;
}

int main(void)
{
    int ch, questions = 0, rights = 0;

    srand(time(NULL));

    do 
    {
        questions += 1;
        switch (rand() % 4)
        {
        case 0:
            if (Add()) { rights += 1, puts("RIGHT!"); }
            else {    puts("ERROR!");    }
            break;
        case 1:
            if (Sub()) { rights += 1, puts("RIGHT!"); }
            else {    puts("ERROR!");    }
            break;
        case 2:
            if (Mul()) { rights += 1, puts("RIGHT!"); }
            else {    puts("ERROR!");    }
            break;
        case 3:
            if (Div()) { rights += 1, puts("RIGHT!"); }
            else {    puts("ERROR!");    }
            break;
        default:break;
        }

        printf("\n继续(Y) OR 结束(N)[Y]:");
        ch = getchar();
        if ('\n' == ch)    { ch = 'Y';    }
        else { getchar(); }        
    } while ('Y' == ch || 'y' == ch);

    printf("%.2f%%\n", rights * 100.0 / questions);

    return 0;
}


[fly]存在即是合理[/fly]
2014-04-05 22:54
会飞的猫猫
Rank: 1
来 自:星星
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-4-4
收藏
得分:0 
回复 14楼 azzbcc
好厉害,编译运行都没错误,高手大侠
不过int b = rand() % 10 + 1;为什么加1?
define,return还没学,虽然寒假自学过,但是它和getchar怎么隔那么远?
好像不用用到getchar()啊
我改了一些,还是有些问题,向老师求救了,呵呵
2014-04-06 23:14
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
因为 0 不能做除数,所以 +1 避免 b=0

getchar 怎么说呢,吸收回车符。


[fly]存在即是合理[/fly]
2014-04-06 23:25
快速回复:随机产生加减乘除运算,如果两数除不尽应该重新选题。在堆出时给出评分 ...
数据加载中...
 
   



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

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