• 四则运算


    一、作业信息

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
    这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377
    这个作业的目标 <学会编写四则运算,及使用博客>
    学号 <3180701210>
    二、作业要求
    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

    1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

    2)程序要求能处理用户的输入,判断对错,累积分数

    3)程序支持可以由用户自行选择加、减、乘、除运算

    4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

    三、代码提交与运行截图
    1、源代码
    include <stdio.h>
    include <stdlib.h>
    include <time.h>
    include <math.h>

    int gcd(int a,int b)
    {
    int t;
    if (a>b){
    t=a;
    a=b;
    b=t;
    }
    while (a!=0){
    t=a;
    a=b%a;
    b=t;
    }
    return b;
    }

    int lcm(int a,int b, int g)
    {
    return a*b/g;
    }

    int main()
    {
    while (1){
    int i=0;
    int n=0;
    int x=0;
    int type;
    int t;
    int count=0;
    char flag;
    int left, right;
    float result;
    srand((unsigned)time(NULL));//srand(seed)的随机数种子不同,rand()的随机数值就不同
    printf("请输入要出的题目数量 ");
    scanf("%d",&n);
    while(x<n)
    {
    int f;
    printf("请选择:1、整数 2、真分数 ");
    x++;
    scanf("%d",&f);
    if (f==1){//整数四则运算
    printf("请选择:1、加法 2、减法 3、乘法 4、除法 ");
    scanf("%d",&type);
    type--;
    left = rand() % 100;
    right = rand() % 100;
    int s=0;
    switch(type)
    {
    case 0:
    printf("%d + %d = ", left, right);
    s = left + right;
    break;
    case 1:
    printf("%d - %d = ", left, right);
    s =left - right;
    break;
    case 2:
    printf("%d * %d = ", left, right);
    s = left * right;
    break;
    case 3:
    printf("%d / %d = ", left, right);
    s = left / right;
    break;
    }
    printf("请输入答案:");
    int temp;
    scanf("%d",&temp);
    if (temp == s){
    printf("答案正确! ");
    count++;
    }
    else{
    printf("答案错误!!正确答案为:%d ",s);
    }
    }
    else{//真分数的四则运算
    printf("请选择:1、加法 2、减法 3、乘法 4、除法 ");
    scanf("%d",&type);
    type--;
    int g,l,temp_g;
    int a1,a2,a3,a4;
    a1=rand()%10+1;
    a2=a1+rand()%10+1;//保证分母大于分子
    a3=rand()%10+1;
    a4=a3+rand()%10+1;//保证分母大于分子
    int s1,s2;//保存结果的分子和分母
    switch(type)
    {
    case 0:
    printf("%d/%d + %d/%d = ", a1, a2, a3, a4);
    g = gcd(a2,a4);//保存分母的最小公倍数
    l = lcm(a2,a4,g);//求分子分母的最大公约数
    a1 = l / a2 * a1;
    a3 = l / a4 * a3;
    a2 = a4 = l;
    s2 = l;
    s1 = a1 + a3;
    temp_g = gcd(s1,s2);
    s1 /= temp_g;//求分子分母的最简整数比
    s2 /= temp_g;//求分子分母的最简整数比
    break;
    case 1:
    printf("%d/%d - %d/%d = ", a1, a2, a3, a4);
    g = gcd(a2,a4);
    l = lcm(a2,a4,g);
    a1 = l / a2 * a1;
    a3 = l / a4 * a3;
    a2 = a4 = l;
    s2 = l;
    s1 = a1 - a3;
    int temp_g = abs(gcd(s1,s2));//保证结果的分子和分母的最大公因数为正
    s1 /= temp_g;
    s2 /= temp_g;
    break;
    case 2:
    printf("%d/%d * %d/%d = ", a1, a2, a3, a4);
    s1 = a1 * a3;
    s2 = a2 * a4;
    temp_g = gcd(s1,s2);
    s1 /= temp_g;
    s2 /= temp_g;
    break;
    case 3:
    printf("%d/%d / %d/%d = ", a1, a2, a3, a4);
    s1 = a1 * a4;
    s2 = a2 * a3;
    temp_g = gcd(s1,s2);
    s1 /= temp_g;
    s2 /= temp_g;
    break;
    }
    printf("请输入答案:");
    int temp_s1,temp_s2;
    scanf("%d/%d",&temp_s1,&temp_s2);
    if (temp_s1 == s1 && temp_s2 == s2){
    printf("答案正确! ");
    count++;
    }
    else{
    printf("答案错误!!答案为:%d/%d ",s1,s2);
    }
    }
    }
    printf("一共对了%d题! ",count);
    printf(" ");
    printf("是否继续?(Y/N):");
    char flag1;
    getchar();
    flag1 = getchar();
    if (flag1 == 'n' || flag1 == 'N')
    break;
    }
    }
    截图如下

    四、个人总结
    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 15 12
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 8 8
    Development 开发 120 130
    Analysis 需求分析(包括学习新技术) 12 15
    Design Spec 生成设计文档 5 6
    Design Review 设计复审 5 5
    Coding Standard 代码规范 3 4
    Design 具体设计 12 16
    Coding 具体编码 35 40
    Code Review 代码复审 5 6
    Test 测试(自我测试,修改代码,提交修改) 10 15
    Reporting 报告 10 12
    Test Report 测试报告 6 12
    Size Measurement 计算工作量 20 25
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 5

  • 相关阅读:
    【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
    Go语言基础之函数参数
    Go语言基础之函数定义
    Go语言基础之map
    Go语言基础之切片
    Go语言基础之数组
    Go中nil的定义
    复合数据类型介绍
    Go语言基础之流程控制goto
    Go语言基础之流程控制switch分支
  • 原文地址:https://www.cnblogs.com/wo201314/p/13943031.html
Copyright © 2020-2023  润新知