zoukankan      html  css  js  c++  java
  • 四则运算

    一、作业信息

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
    这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377
    这个作业的目标 能对需求进行分析并实现;编码格式规范;学习博客撰写
    学号 3180701305

    二、作业要求

    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

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

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

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

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

    三、代码部分

    3.1整数的四则运算

    3.1.1整数加法

    void int_add()
    {
        int a,b,c;
        a=rand()%100;//随机取数
        b=rand()%100;
        printf("请输入你的答案:%d + %d = ",a,b);
        scanf("%d",&c);
        if(a+b==c)
          {
                printf("答案正确,得分+1!
    ");
                right++;
                all++;
          }
        else
          {
                printf("答案错误,得分-1!
    ");
    	    wrong++;
    	    all--;
          }
    }
    

    3.1.2整数减法

    void int_sub()
    {
        int a,b,c;
        a=rand()%100;
        b=rand()%100;
        printf("请输入你的答案:%d - %d = ",a,b);
        scanf("%d",&c);
        if(a-b==c)
          {
                printf("答案正确,得分+1
    ");
                right++;
    	    all++;
          }
        else
          {
                printf("答案错误,得分-1
    ");
                wrong++;
    	    all--;
          }
    }
    

    3.1.3整数乘法

    void int_mul()
    {
        int a,b,c;
        a=rand()%100;
        b=rand()%100;
        printf("请输入你的答案: %d * %d = ",a,b);
        scanf("%d",&c);
        if(a*b==c)
          {
                printf("答案正确,得分+1
    ");
                right++;
    	    all++;
          }
        else
          {
                printf("答案错误,得分-1
    ");
                wrong++;
    	    all--;
          }
    }
    

    3.1.4整数除法

    void int_div()
    {
         int a,b;
         float c;
         a=rand()%100;
         b=rand()%100+1;
         printf("请输入你的答案: %d / %d = ",a,b);
         scanf("%f",&c);
         if(a/b==c)
          {
                printf("答案正确,得分+1
    ");
                right++;
    	    all++;
          }
          else
          {
                printf("答案错误,得分-1
    ");
                wrong++;
    	    all--;
          }
    }
    

    3.2真分数四则运算

    3.2.1分数加法

    void eig_add()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;               //用来表示分数中的"/",n是分子,m是分母,N是最终结果分子,M是最终结果分母
    	n1=rand()%100;
            m1=n1+rand()%100+1;
    	n2=rand()%100;
    	m2=n2+rand()%100+1;
    	M=m1*m2;
    	N=n1*m2+n2*m1;
    	//化简分数
    	zuida=yuefen(N,M);
    	if(zuida!=1)
    	{
    		N=N/zuida;
    		M=M/zuida;
    	}
    	//判断答案
           printf("请输入你的答案:%d/%d + %d/%d = ",n1,m1,n2,m2);
           scanf("%d%c%d",&N1,&v,&M1);
        if(N==N1&&M==M1)
          {
                printf("答案正确,得分+1!
    ");
                right++;
    	    all++;
          }
        else
          {
                printf("答案错误,得分-1!
    ");
    	    wrong++;
    	    all--;
          }
    }
    

    3.2.2分数减法

    void eig_sub()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;         //用来表示分数中的"/",n是分子,m是分母,N是最终结果分子,M是最终结果分母
    	n1=rand()%100;
            m1=n1+rand()%100+1;
    	n2=rand()%100;
    	m2=n2+rand()%100+1;
    	M=m1*m2;
    	N=n1*m2-n2*m1;
    	//化简分数
    	zuida=yuefen(N,M);
    	if(zuida!=1)
    	{
    		N=N/zuida;
    		M=M/zuida;
    	}
    	//判断答案
            printf("请输入你的答案:%d/%d - %d/%d = ",n1,m1,n2,m2);
            scanf("%d%c%d",&N1,&v,&M1);
            if(N==N1&&M==M1)
             {
                printf("答案正确,得分+1!
    ");
                right++;
    	    all++;
          }
          else
          {
                printf("答案错误,得分-1!
    ");
    	    wrong++;
                all--;
          }
    }
    

    3.2.3分数乘法

    void eig_mul()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;//用来表示分数中的"/"
    	//n是分子,m是分母,N是最终结果分子,M是最终结果分母
    	n1=rand()%100;
            m1=n1+rand()%100+1;
    	n2=rand()%100;
    	m2=n2+rand()%100+1;
    	M=m1*m2;
    	N=n1*n2;
    	//化简分数
    	zuida=yuefen(N,M);
    	if(zuida!=1)
    	{
    		N=N/zuida;
    		M=M/zuida;
    	}
    	//判断答案
            printf("请输入你的答案:%d/%d * %d/%d = ",n1,m1,n2,m2);
            scanf("%d%c%d",&N1,&v,&M1);
            if(N==N1&&M==M1)
            {
                printf("答案正确,得分+1!
    ");
                right++;
    			all++;
            }
            else
            {
                printf("答案错误,得分-1!
    ");
    	    wrong++;
    	    all--;
            }
    }
    

    3.2.4分数除法

    void eig_div()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;//用来表示分数中的"/"
    	//n是分子,m是分母,N是最终结果分子,M是最终结果分母
    	n1=rand()%100;
            m1=n1+rand()%100+1;
    	n2=rand()%100;
    	m2=n2+rand()%100+1;
    	M=m1*n2;
    	N=n1*m2;
    	//化简分数
    	zuida=yuefen(N,M);
    	if(zuida!=1)
    	{
    		N=N/zuida;
    		M=M/zuida;
    	}
    	//判断答案
            printf("请输入你的答案:%d/%d / %d/%d = ",n1,m1,n2,m2);
            scanf("%d%c%d",&N1,&v,&M1);
            if(N==N1&&M==M1)
            {
                printf("答案正确,得分+1!
    ");
                right++;
    			all++;
            }
            else
            {
                printf("答案错误,得分-1!
    ");
    			wrong++;
    			all--;
            }
    }
    

    3.3其他函数

    3.3.1主函数

    int main(void)
    {
    	int c,s=1,tishu,i=0;
    	printf("生成题数为:");
    	scanf("%d",&tishu);
    	while(s)
    	{
    		if(s==1)
    		{
    			if(i==tishu)
    			{
    				printf("
    答题结束!
    ");
    				break;
    			}
    			printf("
    整数运算还是真分数运算?
    整数运算--1,真分数运算--2,退出--3
    ");
    			printf("请输入: ");
    			scanf("%d",&c);
    			if(c==3)
    			{
    				s=0;
    				break;
    			}
    			switch(c)
    			{
    			case 1:
    				int_count();
    				i++;
    				break;
    			case 2:
    				eig_count();
    				i++;
    				break;
    			default:
    				printf("错误输入项!");
    				s=0;
    				break;
    			}
    		}
    		if(s==0)
    			break;
    	}
    	printf("
    答题正确数:%d
    答题错误数:%d
    最终得分为:%d分
    ",right,wrong,all);
    }
    

    3.3.2求最大公约数

    int yuefen(int fenzi,int fenmu)
    {
    	int da=fenzi,xiao=fenmu;
    	if(da<xiao)
    	{
    		int t=da;
    		da=xiao;
    		xiao=t;
    	}
    	while(da%xiao!=0)
    	{
    		da=da/xiao;
    		if(da<xiao)
    		{
    			int t=da;
    			da=xiao;
    			xiao=t;		
    		}
    	}
    	return xiao;
    }
    

    四、运行截图

    4.1加法

    整数加法

    真分数加法

    4.2减法

    整数减法

    真分数减法

    4.3乘法

    整数乘法

    真分数乘法

    4.4除法

    整数除法

    真分数除法

    4.5其他

    五、个人小结

    5.1小结

    通过阅读与修改代码,实现了作业要求的功能,同时也增强了自己的动手能力。在这个过程中,体会到程序编写的乐趣,当然也伴随有挫败感。但是,当看到程序输出了自己想要的结果的时候,却也有一种由衷的成就感。同时也认识到,程序的规则是死的,是严格定义的,只要花时间总是能掌握的,因此不必有太多的畏惧之心。继续加油!!!

    5.2psp表格

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 30 25
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 5
    Development 开发 120 148
    Analysis 需求分析(包括学习新技术) 20 15
    Design Spec 生成设计文档 20 20
    Design Review 设计复审 15 10
    Coding Standard 代码规范 10 10
    Design 具体设计 20 20
    Coding 具体编码 40 45
    Code Review 代码复审 9 10
    Test 测试(自我测试,修改代码,提交修改) 40 45
    Reporting 报告 10 20
    Test Report 测试报告 5 5
    Size Measurement 计算工作量 10 10
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 10 10
  • 相关阅读:
    centos7安装pcntl扩展
    MySQL_数据库命名规范及约定
    tp5命名规范
    PHP易混淆函数的区别及用法汇总(函数和方法的区别)
    Mysql密码安全策略修改
    linux mysql 允许进行远程连接 比如 navicat
    解决 docker run 报错 oci runtime error
    如何删除Git中缓存的用户名和密码
    PHP heredoc 用法
    python日志模块
  • 原文地址:https://www.cnblogs.com/wangalong/p/13944382.html
Copyright © 2011-2022 走看看