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
    这个作业的目标 能对需求进行分析并实现;编码格式规范;学习博客撰写
    学号 3180701307

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

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

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

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

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

    三、代码提交与运行截图
    1、源代码

    #include <stdlib.h>
    #include <windows.h>
    
    //加法
    void ADD()
    {
    	int ts,b,c,d;
    	int scr=0;
    	int daan[100];
    	int daan1[100];
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		b=rand()%100+1;
    		c=rand()%100+1;
    		printf("%d+%d=  
    ",b,c);
    		d=b+c;
    		daan[i]=d;
    	}
    	printf("请输入答案:
    ");
    	for(i=0;i<ts;i++)
    	{
    		scanf("%d",&daan1[i]);
    		if(daan1[i]==daan[i])
    		{
    			printf("回答正确!
    ");
    			scr=scr+1;
    		}
    		else
    			printf("回答错误!正确答案为%d
    ",daan[i]);
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    void ZADD()
    {
    	int a,b,c,d,ts;
    	int scr=0;
    	int j,k,m;
    	char l;
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    
    	for(i=0;i<ts;i++)
    	{
    		a=rand()%10;
    		b=rand()%10+1;
    		do
    		{
    			b=rand()%10+1;
    		}while(a>=b);
    		c=rand()%10;
    		d=rand()%10+1;
    		do
    		{
    			d=rand()%10+1;
    		}while(c>=d);
    		printf("%d/%d+%d/%d=  
    ",a,b,c,d);
    
    		a=(a*d)+(c*b);
    		b=b*d;
    
    		//化简
    		if(a<b)
    		{
    			for(m=a;m>=1;m--)
    			{
    				if((a%m==0)&&(b%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    		else if(a==b)
    		{
    			scanf("%d",&j);
    			if(j==1)
    			{
    				printf("回答正确!
    ");
    				scr=scr+1;
    			}
    			else
    				printf("回答错误!正确答案为1
    ");
    		}
    		else
    		{
    			for(m=b;m>=1;m--)
    			{
    				if((b%m==0)&&(a%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    
    //减法
    void SUB()
    {
    	int ts,b,c,d;
    	int scr=0;
    	int daan[100];
    	int daan1[100];
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		b=rand()%100+1;
    		c=rand()%100+1;
    		printf("%d-%d=  
    ",b,c);
    		d=b-c;
    		daan[i]=d;
    	}
    	printf("请输入答案:
    ");
    	for(i=0;i<ts;i++)
    	{
    		scanf("%d",&daan1[i]);
    		if(daan1[i]==daan[i])
    		{
    			printf("回答正确!
    ");
    			scr=scr+1;
    		}
    		else
    		{
    			printf("回答错误!正确答案为%d
    ",daan[i]);
    		}
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    void ZSUB()
    {
    	int a,b,c,d,ts;
    	int scr=0;
    	int j,k,m;
    	char l;
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		a=rand()%10;
    		b=rand()%10+1;
    		do
    		{
    			b=rand()%10+1;
    		}while(a>=b);
    		
    		c=rand()%10;
    		d=rand()%10+1;
    		do
    		{
    			d=rand()%10+1;
    		}while(c>=d);
    		printf("%d/%d-%d/%d=  
    ",a,b,c,d);
    
    		a=(a*d)-(c*b);
    		b=b*d;
    
    		//化简
    		if(a<b)
    		{
    			for(m=a;m>=1;m--)
    			{
    				if((a%m==0)&&(b%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    		else if(a==b)
    		{
    			scanf("%d",&j);
    			if(j==1)
    			{
    					printf("回答正确!
    ");
    					scr=scr+1;
    			}
    			else
    				printf("回答错误!正确答案为1
    ");
    		}
    		else
    		{
    			for(m=b;m>=1;m--)
    			{
    				if((b%m==0)&&(a%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    
    //乘法
    void MCL()
    {
    	int ts,b,c,d;
    	int scr=0;
    	int daan[100];
    	int daan1[100];
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		b=rand()%100+1;
    		c=rand()%100+1;
    		printf("%d×%d=  
    ",b,c);
    		d=b*c;
    		daan[i]=d;
    	}
    	printf("请输入答案:
    ");
    	
            //输出分数
            for(i=0;i<ts;i++)
    	{
    		scanf("%d",&daan1[i]);
    		if(daan1[i]==daan[i])
    		{
    			printf("回答正确!
    ");
    			scr=scr+1;
    		}
    		else
    			printf("回答错误!正确答案为%d
    ",daan[i]);
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    void ZMCL()
    {
    	int a,b,c,d,ts;
    	int scr=0;
    	int j,k,m;
    	char l;
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		a=rand()%10;
    		b=rand()%10+1;
    		do
    		{
    			b=rand()%10+1;
    		}while(a>=b);
    		
    		c=rand()%10;
    		d=rand()%10+1;
    		do
    		{
    			d=rand()%10+1;
    		}while(c>=d);
    		printf("%d/%d×%d/%d=  
    ",a,b,c,d);
    
    		a=a*c;
    		b=b*d;
    
    		//化简
    		if(a==0)
    		{
    			scanf("%d",&j);
    			if(j==0)
    			{
    				printf("回答正确!
    ");
    				scr=scr+1;
    			}
    			else
    				printf("回答错误!正确答案为0
    ");
    		}
    		else if(a<b)
    		{
    			for(m=a;m>=1;m--)
    			{
    				if((a%m==0)&&(b%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    		else if(a==b)
    		{
    			scanf("%d",&j);
    			if(j==1)
    			{
    				printf("回答正确!
    ");
    				scr=scr+1;
    			}
    			else
    				printf("回答错误!正确答案为1
    ");
    		}
    		else
    		{
    			for(m=b;m>=1;m--)
    			{
    				if((b%m==0)&&(a%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    
    //除法
    void DIV()
    {
    	int ts,b,c;
    	int scr=0;
    	double d,d1;
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		b=rand()%100+1;
    		c=rand()%100+1;
    		printf("%d÷%d=  
    ",b,c);
    		d=(double)b/(double)c;
    		
    		printf("请输入答案:
    ");
    		scanf("%f",&d1);
    		if(d=d1)
    		{
    			printf("回答正确!
    ");
    			scr=scr+1;
    		}
    		else
    			printf("回答错误!正确答案为%f
    ",d);
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    void ZDIV()
    {
    	int a,b,c,d,ts;
    	int scr=0;
    	int j,k,m;
    	char l;
    	int i;
    	printf("生成题数:");
    	scanf("%d",&ts);
    	
            for(i=0;i<ts;i++)
    	{
    		a=rand()%10;
    		b=rand()%10+1;
    		do
    		{
    			b=rand()%10+1;
    		}while(a>=b);
    		
    		c=rand()%10+1;
    		d=rand()%10+1;
    		do
    		{
    			d=rand()%10+1;
    		}while(c>=d);
    		printf("%d/%d÷%d/%d=  
    ",a,b,c,d);
    
    		a=a*d;
    		b=b*c;
    
    		//化简
    		if(a==0)
    		{
    			scanf("%d",&j);
    			if(j==0)
    			{
    				printf("回答正确!
    ");
    				scr=scr+1;
    			}
    			else
    				printf("回答错误!正确答案为0
    ");
    		}
    		else if(a<b)
    		{
    			for(m=a;m>=1;m--)
    			{
    				if((a%m==0)&&(b%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    		else if(a==b)
    		{
    			scanf("%d",&j);
    			if(j==1)
    			{
    				printf("回答正确!
    ");
    				scr=scr+1;
    			}
    			else
    				printf("回答错误!正确答案为1
    ");
    		}
    		else
    		{
    			for(m=b;m>=1;m--)
    			{
    				if((b%m==0)&&(a%m==0))
    				{
    					a=a/m;
    					b=b/m;
    				}
    			}
    			scanf("%d%c%d",&j,&l,&k);
    			if(l=='/')
    			{
    				if(j==a&&k==b)
    				{
    					printf("回答正确!
    ");
    					scr=scr+1;
    				}
    				else
    					printf("回答错误!正确答案为%d/%d
    ",a,b);
    			}
    		}
    	}
    	printf("您的得分为:%d
    ",scr);
    }
    
    //主函数
    void main()
    {
    	while(1)
    	{
    		int a;
    		printf("选择运算类型:
    ");
    		printf("1.整数运算
    ");
    		printf("2.真分数运算
    ");
    		scanf("%d",&a);
    		if(a==1)
    		{
    			printf("1.加法
    ");
    			printf("2.减法
    ");
    			printf("3.乘法
    ");
    			printf("4.除法
    ");
    			printf("请选择运算:
    ");
    			scanf("%d",&a);
    			switch(a)
    			{
    				case 1:
    					ADD();
    					break;
    				case 2:
    					SUB();
    					break;
    				case 3:
    					MCL();
    					break;
    				case 4:
    					DIV();
    					break;
    				default:
    					printf("选择错误!
    ");
    					break;
    			}
    		}
    		else if(a==2)
    		{
    			printf("1.加法
    ");
    			printf("2.减法
    ");
    			printf("3.乘法
    ");
    			printf("4.除法
    ");
    			printf("请选择运算:
    ");
    			scanf("%d",&a);
    			switch(a)
    			{
    				case 1:
    					ZADD();
    					break;
    				case 2:
    					ZSUB();
    					break;
    				case 3:
    					ZMCL();
    					break;
    				case 4:
    					ZDIV();
    					break;
    				default:
    					printf("选择错误!
    ");
    					break;
    			}
    		}
    		else
    			printf("选择错误!
    ");
    	}
    }
    

    2、运行截图
    (1)、加法


    (2)、减法


    (3)、乘法


    (4)、除法

    四、个人小结
    第一次接触markdown,感觉还行,跟word大差不差,用的话没遇到什么困难。关于这个题目,时间太仓促,关于运行速度和界面美化没有优化,观感一般,但要求所需要的点基本一应俱全。

    (psp表格)

    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
  • 相关阅读:
    WindowXP 下Android 开发环境搭建
    机房收费系统个人版——DataGridView控件怎么用?
    IOS开发(64)之GCD任务最多只执行一次
    第八学 linux内核——内存寻址——段机制(2)
    Git clone远程仓库
    vi中如何跳转到指定行数
    _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc637612fae5a3b585.php
    git 报错:没有权限 remote: error: unable to unlink old 'README.md' (Permission denied)
    mytop安装,使用mytop监控MySQL性能 (总结)
    一起谈.NET技术,如何解决“呈现控件时出错”的问题 狼人:
  • 原文地址:https://www.cnblogs.com/lushuning/p/13940650.html
Copyright © 2011-2022 走看看