905853663 发表于 2020-12-14 23:04:18

加减运算

#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,故意做错也是如此,请问是哪里出了错误?

风过无痕1989 发表于 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);

}

905853663 发表于 2020-12-15 09:56:16

风过无痕1989 发表于 2020-12-15 00:21


这个的话输入n也不能结束程序是咋回事,就是输入n后又有题目出来了

风过无痕1989 发表于 2020-12-15 11:06:00

905853663 发表于 2020-12-15 09:56
这个的话输入n也不能结束程序是咋回事,就是输入n后又有题目出来了

可以呀。就是因为不能结束,昨天我调试节近3个小时

905853663 发表于 2020-12-15 11:52:18

风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时

太感谢了!!!

905853663 发表于 2020-12-15 11:52:50

风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时

我在试试

905853663 发表于 2020-12-15 11:55:39

风过无痕1989 发表于 2020-12-15 11:06
可以呀。就是因为不能结束,昨天我调试节近3个小时

确实不能结束哦,好奇怪,这里又发不了图片

bonst 发表于 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);

}

bonst 发表于 2020-12-15 18:21:53

我添加了一个op来判断循环

905853663 发表于 2020-12-15 21:50:15

bonst 发表于 2020-12-15 18:21
我添加了一个op来判断循环

这样可以,还有个就是,怎么输出100%,就是那个百分号

风过无痕1989 发表于 2020-12-15 22:42:53

905853663 发表于 2020-12-15 21:50
这样可以,还有个就是,怎么输出100%,就是那个百分号

% 我试过多种方法,都输不出来,不然我也肯定会写在程序里的

bonst 发表于 2020-12-15 23:03:12

兄弟,这个百度一下就知道了,也就是#include <stdio.h>

int main()
{
    int i = 520;

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

    return 0;
}
页: [1]
查看完整版本: 加减运算