二柱子疑难杂症第二部

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h> 
#include <conio.h>
#include <math.h>
  int cnt1, cnt2;
  int gcd(int a, int b)
  {
    if (b == 0)
      return a;
    return gcd(b, a % b);
  }
  int main(int argc, char const *argv[])
  {
    int n = 0;
    for (int i = 0; i < strlen(argv[2]); i++) {
      n = n * 10 + (argv[2][i] - '0');
      }
    printf("%d\n", n);
    srand(time(NULL));
    char input[100], ans1[100], ans2[100];
    while (n--) {
      memset(input, 0, sizeof(input));
      memset(ans1, 0, sizeof(ans1));
      memset(ans2, 0, sizeof(ans2));
      fflush(stdin);
      printf("输入q退出,按其他任意键继续\n");
      char ch = getch();
      if (ch == 'q') {
            break;
        }
      int a, b, c, d, op;
      a = rand() % 100;
      while (1) {
        b = rand() % 100;
        if (b != 0) {
            break;
          }
      }
      c = rand() % 100;
      while (1) {
         d = rand() % 100;
          if (d != 0) {
            break;
            }
        }
      op = rand() % 4;

      int tmp = abs(gcd(a, b));
      a /= tmp;
      b /= tmp;

      tmp = abs(gcd(c, d));
      c /= tmp;
      d /= tmp;

      printf("%d", a);
      if (b != 1) {
        printf("/%d", b);
        }
      if (op == 0) printf(" + ");
      else if (op == 1) printf(" - ");
      else if (op == 2) printf(" * ");
      else printf(" / ");
      printf("%d", c);
      if (d != 1) {
        printf("/%d", d);
        }
      printf(" = ");
      int m, n;
      if(op == 0){
        m = a * d + b * c;
        n = b * d;
       }
      else if (op == 1) {
        m = a * d - b * c;
        n = b * d ;
       }
      else if (op == 2) {
        m = a * c;
        n = b * d;
       }
      else {
        m = a * d;
        n = b * c;
       }
      tmp = abs(gcd(m, n));
      m /= tmp;
      n /= tmp;

      sprintf(ans1, "%d", m);
      if (n != 1) {
        sprintf(ans2, "/%d", n);
      }
      strcat(ans1, ans2);
      gets(input);
      puts(ans1);
      if (strcmp(ans1, input) == 0) {
        printf("right\n");
        cnt1++;
        } else {
          printf("wrong\n");
          cnt2++;
        }
   }
    int zql;
    zql = (100 * cnt1) / (cnt1 + cnt2);
    printf("共答了%d道题,答对%d道题,答错%d道题,正确率为%d%%。\n", cnt1 + cnt2, cnt1, cnt2, zql);
    return 0;

猜你喜欢

转载自www.cnblogs.com/980412peanut/p/9787587.html