zoukankan      html  css  js  c++  java
  • 第一周代码(四则运算)

    对于这个程序,我只能写出整数,分数的运行和判断对错,支持多个运算符。但是对于累计分数,倒计时,支持括号,用户界面由用户选择用中文英文或日文的问题还不能解决。
    希望大神赐教,完善我的程序!!!


    #define _CRT_SECURE_NO_WARNINGS


    #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[])//* argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数

    argv[0]:指向程序的全路径名
    {
    int n = 0;
    for (int i = 0; i < strlen(argv[2]); i++) {
    n = n * 10 + (argv[2][i] - '0');
    }
    printf("%d ", n);
    srand(time(NULL));
    char input[100], ans1[100], ans2[100];
    while (n--) {
    memset(input, 0, sizeof(input));//memset函数用来对一段内存空间全部设置为某个字符,常用于内存空间初始化。
    memset(ans1, 0, sizeof(ans1));
    memset(ans2, 0, sizeof(ans2));
    fflush(stdin); //清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件
    printf("输入q退出,按其他任意键继续 ");
    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));//abs描述 返回数字的绝对值
    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(" + ");//op是一种二目运算符的简便用法
    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 ");
    cnt1++;
    }
    else {
    printf("wrong ");
    cnt2++;
    }

    }
    int zql;
    zql = (100 * cnt1) / (cnt1 + cnt2);
    printf("共答了%d道题,答对%d道题,答错%d道题,正确率为%d%%。 ", cnt1 + cnt2, cnt1, cnt2, zql);
    return 0;
    }

    来源:http://jingyan.baidu.com/article/d5a880ebb2b01a13f147cc93.html

  • 相关阅读:
    JS中prototype属性解释及常用方法
    HTML5 组件Canvas实现图像灰度化
    洛谷.5284.[十二省联考2019]字符串问题(后缀自动机 拓扑 DP)
    洛谷.5290.[十二省联考2019]春节十二响(贪心)
    洛谷.5283.[十二省联考2019]异或粽子(可持久化Trie 堆)
    SDOI2019 省选前模板整理
    完美理论(最大权闭合子图)
    BZOJ.3566.[SHOI2014]概率充电器(概率DP 树形DP)
    BZOJ.2616.SPOJ PERIODNI(笛卡尔树 树形DP)
    4.2模拟赛 wormhole(期望DP Dijkstra)
  • 原文地址:https://www.cnblogs.com/tgq0101457/p/7524096.html
Copyright © 2011-2022 走看看