zoukankan      html  css  js  c++  java
  • 自动生成四则运算

    一.作业规范要求
    发布一篇随笔,使用markdown语法进行编辑
    文字准确,样式清晰
    请在本次及之后的每次作业随笔的最前面加上以下内容

    博客班级 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
    作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377
    作业目标 <编写一个可以自动生成支持整数和真分数的四则运算题目的程序;能够精准高效完成四则运算并输出结果;迅速理解需求定制功能>
    学号 <3180701121>

    二.题目要求

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

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

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

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

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

    三.代码提交

    头文件

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    int mark=0;
    

    整数加法

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

    整数减法

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

    整数乘法

    void zhengmul()
    {
    	int a,b,c;
    	a=rand()%100;
        b=rand()%100;
        printf("请输入你的答案: %d * %d = ",a,b);
        scanf("%d",&c);
        if(a*b==c)
          {
                printf("输入正确
    ");
    				mark++;
        
          }
          else
          {
                printf("输入错误
    ");
              
          }
    }
    

    整数除法

    void zhengdiv()
    {
    	 int a,b,c;
         a=rand()%100;
         b=rand()%100;
         printf("请输入你的答案: %d / %d = ",a,b);
         scanf("%d",&c);
         if(a/b==c)
          {
                printf("输入正确
    ");
               	mark++;
          }
          else
          {
                printf("输入错误
    ");
                
          }
    
    }
    

    约分

    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;
    }
    

    分数加法

    void fenadd()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;
    
    	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("输入正确
    ");
                	mark++;
          }
          else
          {
                printf("输入错误
    ");
    		
          }
    }
    

    分数减法

    void fensub()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;
    	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("输入正确
    ");
            	mark++;
          }
          else
          {
                printf("输入错误
    ");
    			
          }
    }
    

    分数乘法

    void fenmul()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;
    
    	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("输入正确
    ");
              	mark++;
          }
          else
          {
                printf("输入错误
    ");
    		
          }
    }
    

    分数除法

    void fendiv()
    {
    	int n1,n2,m1,m2,zuida,M1,M,N1,N;//
    	char v;//用来表示分数中的"/"
    
    	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("输入正确
    ");
            	mark++;
          }
          else
          {
                printf("输入错误
    ");
    		
          }
    }
    

    整数选择

    int zhengcount()
    {
    	int c1;
    
    	printf("选择你测试的运算:加:1 减:2 乘:3 除:4
    ");
    	scanf("%d",&c1);
    	switch(c1)
    	{
    	case 1:
    		zhengadd();
    		break;
    	case 2:
    		zhengsub();
    		break;
    	case 3:
    		zhengmul();
    		break;
    	case 4:
    		zhengdiv();
    		break;
    	default:
    		printf("输入错误!");
    		break;
    	
    	}
    	return 0;
    }
    

    分数选择

    int fencount()
    {
    	int c2;
    	printf("选择你测试的运算:加:1 减:2 乘:3 除:4
    ");
    	scanf("%d",&c2);
    	switch(c2)
    	{
    	case 1:
    		fenadd();
    		break;
    	case 2:
    		fensub();
    		break;
    	case 3:
    		fenmul();
    		break;
    	case 4:
    		fendiv();
    		break;
    	default:
    		printf("输入错误!");
    		break;
    	}	
    	return 0;
    }
    

    主函数

    void main()
    {
    	int c,s=1,sum,i=0;
    	printf("-----------四则运算--------------
    ");
    	printf("请生成题数:");
    	scanf("%d",&sum);
    	while(s)
    	{
    		if(s==1)
    		{
    			if(i==sum)
    			{
    				printf("
    答题结束!
    ");
    				break;
    			}
    			printf("
    整数运算还是真分数运算?
    整数运算1   真分数运算2  退出3  
    ");
    			printf("请输入: ");
    			scanf("%d",&c);
    			if(c==3)
    			{
    				s=0;
    				break;
    			}
    			switch(c)
    			{
    			case 1:
    				zhengcount();
    				i++;
    				break;
    			case 2:
    				fencount();
    				i++;
    				break;
    			default:
    				printf("错误输入项!");
    				s=0;
    				break;
    			}
    		}
    		if(s==0)
    			break;
    	}
    	printf("分数为%d",mark);
    }
    

    四.个人小结

    1)在软件开发中,掌握时间是一个很重要的技能,请通过psp表格做到:

    2)此次的博客园注册与作业的完成,都让我对于代码学习有了新的认识,通过博客园可以更好地总结自己所学习到的知识,四则运算的编写也是最为基础的算法,但是在写的时候,仍然会出现大量的问题,这些问题有大有小,都是值得自己关注的,比如对于整数进行约分,并且区分分数和整数的计算函数,自己还是要不断地来编写代码来提升自己的编程能力。

  • 相关阅读:
    Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator)
    Linux下DNS简单部署(主从域名服务器)
    MySQL 读写分离方案-MySQL Proxy环境部署记录
    Linux系统本地yum源环境配置记录
    Swarm基于多主机容器网络 (overlay networks )
    Docker管理工具
    Linux下相关性能指标数据采集
    Docker网络解决方案
    Java的接口和抽象类
    Java 8 lambda表达式示例
  • 原文地址:https://www.cnblogs.com/Alex-Mercer-zxy/p/13936170.html
Copyright © 2011-2022 走看看