鱼C论坛

 找回密码
 立即注册
查看: 880|回复: 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冲突了,要输入两次,我改了一下
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. void main()
  5. {
  6.         int a, b, numOfQues = 0, numOfRignt = 0;
  7.         char inquiry;
  8.         int op;
  9.         srand(time(NULL));
  10.         printf("***欢迎你来做两位数的加减法***\n");
  11.         do
  12.         {
  13.                 int temp = rand() % 2;
  14.                
  15.                 a = rand() % 100;
  16.                 b = rand() % 100;
  17.                 switch (temp)
  18.                 {
  19.                 case 0:
  20.                 {
  21.                         int ans;
  22.                         printf("%d + %d = ", a, b);
  23.                         scanf("%d", &ans);
  24.                         if (ans == a + b)
  25.                         {
  26.                                 printf("恭喜!答对了!\n");
  27.                                 numOfRignt++;
  28.                         }
  29.                         else
  30.                         {
  31.                                 printf("答错了,再接再厉!\n");
  32.                     }
  33.                 }
  34.                 numOfQues++;       // 统计做题次数

  35.                 case 1:
  36.                 {
  37.                         int ans;
  38.                         printf("%d - %d = ", a, b);
  39.                         scanf("%d", &ans);
  40.                         if (ans == a - b)
  41.                         {
  42.                                 printf("恭喜!答对了!\n");
  43.                                 numOfRignt++;
  44.                         }
  45.                         else
  46.                         {
  47.                                 printf("答错了,再接再厉!\n");
  48.                         }
  49.                 }
  50.                 }
  51.                 numOfQues++;       // 统计做题次数

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

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

使用道具 举报

发表于 2020-12-15 00:21:43 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. void main()
  5. {
  6.         int a, b, numOfQues = 0, numOfRignt = 0;
  7.         char inquiry;
  8.         srand(time(NULL));
  9.         printf("***欢迎你来做两位数的加减法***\n");
  10.         do
  11.         {
  12.                 int temp = rand() % 2;
  13.                 a = rand() % 100;
  14.                 b = rand() % 100;
  15.                 switch (temp)
  16.                 {
  17.                 case 0:
  18.                 {
  19.                         int ans;
  20.                         printf("%d + %d = ", a, b);
  21.                         scanf("%d", &ans);
  22.                         if (ans == a + b)
  23.                         {
  24.                                 printf("恭喜!答对了!\n");
  25.                                 numOfRignt++;
  26.                         }
  27.                         else
  28.                         {
  29.                                 printf("答错了,再接再厉!\n");
  30.                     }
  31.                 }
  32.                 numOfQues++;       // 统计做题次数

  33.                 case 1:
  34.                 {
  35.                         int ans;
  36.                         printf("%d - %d = ", a, b);
  37.                         scanf("%d", &ans);
  38.                         if (ans == a - b)
  39.                         {
  40.                                 printf("恭喜!答对了!\n");
  41.                                 numOfRignt++;
  42.                         }
  43.                         else
  44.                         {
  45.                                 printf("答错了,再接再厉!\n");
  46.                         }
  47.                 }
  48.                 }
  49.                 numOfQues++;       // 统计做题次数

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

  56. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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冲突了,要输入两次,我改了一下
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. void main()
  5. {
  6.         int a, b, numOfQues = 0, numOfRignt = 0;
  7.         char inquiry;
  8.         int op;
  9.         srand(time(NULL));
  10.         printf("***欢迎你来做两位数的加减法***\n");
  11.         do
  12.         {
  13.                 int temp = rand() % 2;
  14.                
  15.                 a = rand() % 100;
  16.                 b = rand() % 100;
  17.                 switch (temp)
  18.                 {
  19.                 case 0:
  20.                 {
  21.                         int ans;
  22.                         printf("%d + %d = ", a, b);
  23.                         scanf("%d", &ans);
  24.                         if (ans == a + b)
  25.                         {
  26.                                 printf("恭喜!答对了!\n");
  27.                                 numOfRignt++;
  28.                         }
  29.                         else
  30.                         {
  31.                                 printf("答错了,再接再厉!\n");
  32.                     }
  33.                 }
  34.                 numOfQues++;       // 统计做题次数

  35.                 case 1:
  36.                 {
  37.                         int ans;
  38.                         printf("%d - %d = ", a, b);
  39.                         scanf("%d", &ans);
  40.                         if (ans == a - b)
  41.                         {
  42.                                 printf("恭喜!答对了!\n");
  43.                                 numOfRignt++;
  44.                         }
  45.                         else
  46.                         {
  47.                                 printf("答错了,再接再厉!\n");
  48.                         }
  49.                 }
  50.                 }
  51.                 numOfQues++;       // 统计做题次数

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

  60. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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 | 显示全部楼层
兄弟,这个百度一下就知道了,也就是
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i = 520;

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 05:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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