鱼C论坛

 找回密码
 立即注册
查看: 950|回复: 11

[已解决]加减运算

[复制链接]
发表于 2020-12-14 23:04:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
        int a,b,numOfQues=0,numOfRignt=0;
        char inquiry;
        srand(time(NULL));
        printf("***欢迎你来做两位数的加减法***\n");
        do
        {
                int temp=rand()%2;
                a=rand()%100;
                b=rand()%100;
                switch(temp)
                {
                        case 0:
                        {
                                int ans;
                                printf("%d+%d=",a,b);
                                scanf("%d",&ans);
                                if (ans==a+b)
                                {
                                        numOfRignt++;
                                        printf("恭喜!答对了!\n");
                                }
                                else
                                printf("答错了,再接再厉!\n");
                                }
                        case 1:
                        {
                                int ans;
                                printf("%d-%d=",a,b);
                                scanf("%d",&ans);
                                if (ans==a-b)
                                {
                                        numOfRignt++;
                                        printf("恭喜!答对了!\n");
                                }
                                else
                                printf("答错了,再接再厉!\n");
                                        }               
                }
                numOfQues++;fflush(stdin);
                printf("你还要做一题吗?(N表示不要)");
                scanf("%c",&inquiry);
        }while(!('N'==inquiry||'n'==inquiry));
        printf("你的答题正确率为%d。再见!\n",numOfRignt/numOfQues);
       
}




代码如上,其它都没有问题,就是最后这个正确率,总是1,故意做错也是如此,请问是哪里出了错误?
最佳答案
2020-12-15 18:21:02
因为你的getchar和scanf冲突了,要输入两次,我改了一下
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
        int a, b, numOfQues = 0, numOfRignt = 0;
        char inquiry;
        int op;
        srand(time(NULL));
        printf("***欢迎你来做两位数的加减法***\n");
        do
        {
                int temp = rand() % 2;
                
                a = rand() % 100;
                b = rand() % 100;
                switch (temp)
                {
                case 0:
                {
                        int ans;
                        printf("%d + %d = ", a, b);
                        scanf("%d", &ans);
                        if (ans == a + b)
                        {
                                printf("恭喜!答对了!\n");
                                numOfRignt++;
                        }
                        else
                        {
                                printf("答错了,再接再厉!\n");
                    }
                }
                numOfQues++;       // 统计做题次数

                case 1:
                {
                        int ans;
                        printf("%d - %d = ", a, b);
                        scanf("%d", &ans);
                        if (ans == a - b)
                        {
                                printf("恭喜!答对了!\n");
                                numOfRignt++;
                        }
                        else
                        {
                                printf("答错了,再接再厉!\n");
                        }
                }
                }
                numOfQues++;       // 统计做题次数

                fflush(stdin);
                printf("你还要做一题吗?(N表示不要):\n");
                // getchar();
                scanf("%c", &inquiry);
                printf("%c\n", inquiry);
                op = (inquiry == 'N' || inquiry == 'n')?0:1;
        } while (op);
        printf("你的答题正确率为 %.2f 。再见!\n", 100.0 * (float)numOfRignt / (float)numOfQues);

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-15 00:21:43 | 显示全部楼层
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
        int a, b, numOfQues = 0, numOfRignt = 0;
        char inquiry;
        srand(time(NULL));
        printf("***欢迎你来做两位数的加减法***\n");
        do
        {
                int temp = rand() % 2;
                a = rand() % 100;
                b = rand() % 100;
                switch (temp)
                {
                case 0:
                {
                        int ans;
                        printf("%d + %d = ", a, b);
                        scanf("%d", &ans);
                        if (ans == a + b)
                        {
                                printf("恭喜!答对了!\n");
                                numOfRignt++;
                        }
                        else
                        {
                                printf("答错了,再接再厉!\n");
                    }
                }
                numOfQues++;       // 统计做题次数

                case 1:
                {
                        int ans;
                        printf("%d - %d = ", a, b);
                        scanf("%d", &ans);
                        if (ans == a - b)
                        {
                                printf("恭喜!答对了!\n");
                                numOfRignt++;
                        }
                        else
                        {
                                printf("答错了,再接再厉!\n");
                        }
                }
                }
                numOfQues++;       // 统计做题次数

                fflush(stdin);
                printf("你还要做一题吗?(N表示不要):\n");
                getchar();
                scanf("%c", &inquiry);
        } while (!('N' == inquiry || 'n' == inquiry));
        printf("你的答题正确率为 %.2f 。再见!\n", 100.0 * (float)numOfRignt / (float)numOfQues);

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 09:56:16 | 显示全部楼层

这个的话输入n也不能结束程序是咋回事,就是输入n后又有题目出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 11:06:00 | 显示全部楼层
905853663 发表于 2020-12-15 09:56
这个的话输入n也不能结束程序是咋回事,就是输入n后又有题目出来了

可以呀。就是因为不能结束,昨天我调试节近3个小时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 11:52:18 | 显示全部楼层
风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时

太感谢了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 11:52:50 | 显示全部楼层
风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时

我在试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 11:55:39 | 显示全部楼层
风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时

确实不能结束哦,好奇怪,这里又发不了图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 18:21:02 | 显示全部楼层    本楼为最佳答案   
因为你的getchar和scanf冲突了,要输入两次,我改了一下
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
        int a, b, numOfQues = 0, numOfRignt = 0;
        char inquiry;
        int op;
        srand(time(NULL));
        printf("***欢迎你来做两位数的加减法***\n");
        do
        {
                int temp = rand() % 2;
                
                a = rand() % 100;
                b = rand() % 100;
                switch (temp)
                {
                case 0:
                {
                        int ans;
                        printf("%d + %d = ", a, b);
                        scanf("%d", &ans);
                        if (ans == a + b)
                        {
                                printf("恭喜!答对了!\n");
                                numOfRignt++;
                        }
                        else
                        {
                                printf("答错了,再接再厉!\n");
                    }
                }
                numOfQues++;       // 统计做题次数

                case 1:
                {
                        int ans;
                        printf("%d - %d = ", a, b);
                        scanf("%d", &ans);
                        if (ans == a - b)
                        {
                                printf("恭喜!答对了!\n");
                                numOfRignt++;
                        }
                        else
                        {
                                printf("答错了,再接再厉!\n");
                        }
                }
                }
                numOfQues++;       // 统计做题次数

                fflush(stdin);
                printf("你还要做一题吗?(N表示不要):\n");
                // getchar();
                scanf("%c", &inquiry);
                printf("%c\n", inquiry);
                op = (inquiry == 'N' || inquiry == 'n')?0:1;
        } while (op);
        printf("你的答题正确率为 %.2f 。再见!\n", 100.0 * (float)numOfRignt / (float)numOfQues);

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 18:21:53 | 显示全部楼层
我添加了一个op来判断循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 21:50:15 | 显示全部楼层
bonst 发表于 2020-12-15 18:21
我添加了一个op来判断循环

这样可以,还有个就是,怎么输出100%,就是那个百分号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 22:42:53 | 显示全部楼层
905853663 发表于 2020-12-15 21:50
这样可以,还有个就是,怎么输出100%,就是那个百分号

% 我试过多种方法,都输不出来,不然我也肯定会写在程序里的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 23:03:12 | 显示全部楼层
兄弟,这个百度一下就知道了,也就是
#include <stdio.h>

int main()
{
    int i = 520;

    printf("%d%%\n",i);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 09:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表