首页 > 个人作业1:小学四则运算——基于控制台

个人作业1:小学四则运算——基于控制台

 

a.需求分析:

  自动生成小学四则运算题目的命令行 “软件”,满足以下需求:   

    1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    2. 运算符为 +, −, ×, ÷
    3. 并且要求能处理用户的输入,并判断对错,打分统计正确率。
    4. 要求能处理用户输入的真分数, 如 1/2, 5/12 等
    5. 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目

      Myapp.exe -n 10

b.功能设计:

  生成整数四则运算和分数四则运算,并判断对错,打分统计正确率

c.设计实现:

  分函数zs()主要负责整数四则运算,随机产生两个随机数和随机运算符并计算;分函数gys是求最大公约数函数;分函数fs()主要负责分数四则运算随机产生两个随机数和随机运算符并调用第三个分函数gys()进行计算;主函数main()主要实现随机调用两个分函数zs()和fs()并统计正确率

d.代码说明:

#include "stdio.h"

#include "stdlib.h"

#include "time.h"
#include "string.h"
int gcd(int x,int y)
{
    int r;
    r=x%y;
    while(r!=0)
    {
        x=y;
        y=r;
        r=x%y;
    }
    return y;
}
int zhengshu(){

    int left,mid,right,result,int_number;
    srand((unsigned)time(NULL));
    left=rand()%10;
    mid=rand()%4;
    right=rand()%10;
    printf("%d",left);
    switch(mid)
    {
        case(0):result=left+right;
        printf(" + ");break;
        case(1):result=left-right; 
        printf(" - ");break;
        case(2):result=left*right;
        printf(" ×");break;
        case(3):result=left/right;
        printf(" ÷");break;
    }
    printf("%d =",right);
    scanf("%d",&int_number);
    if(int_number == result)
        {
            printf("回答正确!    下一题: ");
            score=score+1; 
        }
    else{
            printf("回答错误!    下一题: ");
        }
}
int fenshu(){

    int left_x,left_y,mid,right_x,right_y,x,y,GYS,int_number1,int_number2;
    srand((unsigned)time(NULL));
    do{
    left_x=rand()%10+1;
    left_y=rand()%10+1;
    mid=rand()%4;
    right_x=rand()%10+1;
    right_y=rand()%10+1;
    }while(!(left_x
    printf("%d/%d",left_x,left_y);
        switch(mid)
        {
            case(0):x=left_x*right_y+left_y*right_x;
                    y=left_y*right_y;
            printf(" + ");break;
            case(1):x=left_x*right_y-left_y*right_x;
                    y=left_y*right_y;  
            printf(" - ");break;
            case(2):x=left_x*right_x;
                    y=left_y*right_y;
            printf(" ×");break;
            case(3):x=left_x*right_y;
                    y=left_y*right_x;
            printf(" ÷");break;
        }
        printf("%d/%d =",right_x,right_y);
    GYS=gcd(x,y);
    x=x/GYS;
    y=y/GYS;
    scanf("%d/%d",&int_number1,&int_number2);
    if(int_number1==x&&int_number2==y)
    {
        printf("回答正确!    下一题: ");
        score=score+1; 
    }
    else{
        printf("回答错误!    下一题: ");
    }
}
int main(){

    int h,count;
int score=0;
    printf("请输入题目数?");
    scanf("%d",&count);
    for(int i=0;i
    {
        h=rand()%2;
        if(h==0)
        {zs();}
        else
        {fs();}
    }
    printf("正确率为:%lf",score*1.0/count);
}

转载于:https://www.cnblogs.com/Xshopping/p/6516924.html

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • 2. Stochastic Finite Horizon Problem 在这一节中主要介绍了随机DP算法来解决不确定性下的有限地范围问题,如Denition 1.4所述,它被表述为一个组合优化问题。众所周知,由于组合爆炸,它是一个极其困难的问题。为了从结构上缓解这种极端的复杂性,一种方法是对所有决策规则的空间进行建模,这样就可以在...

  • 先上实现了的C++代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 100; 7 int a[maxn],...