• 小学四则运算



    博客班级 AHPU软件工程
    作业要求 实现小学四则运算
    作业目标
    学号 3180701211

    一、题目要求

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

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

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

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

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

    二、代码

    1.整数加法

    void add()
    {
    	int s=0;
    	int a,b,c,n;
    	//输入要生成的题目数量
    	printf("	请输入要生成的题目数量:");
    	scanf("%d",&n);
    	while(s<n)
    	{
    		srand(time(0));
    		a=rand()%100;
    		b=rand()%100;
    		c = a + b ;
    		printf("	%d+%d=",a,b);
    		scanf("%d",&sum);
    		if(sum==c)
    		{
    			printf("	回答正确!
    ");
    			right++;
    		}
    		else
    		{
    			printf("	回答错误!
    ");
    			wrong++;
    		}
    		s++;
    	}
    	printf("	答对了%d题,打错了%d题
    ",right,wrong);
    }
    

    2.整数减法

    void sub()
    {
    	int s=0;
    	int a,b,c,n,q;
    	//输入要生成的题目数量
    	printf("	请输入要生成的题目数量:");
    	scanf("%d",&n);
    	while(s<n)
    	{
    		srand(time(0));
    		a=rand()%100;
    		b=rand()%100;
    		if(a<b)
    		{
    			q=a;
    			a=b;
    			b=q;
    		}
    		c = a - b ;
    		printf("	%d-%d=",a,b);	
    		scanf("%d",&sum);	
    		if(sum==c)	
    		{
    			printf("	回答正确!
    ");	
    			right++;	
    		}	
    		else	
    		{	
    			printf("	回答错误!
    ");	
    			wrong++;	
    		}
    		s++;
    	}
    	printf("	答对了%d题,打错了%d题
    ",right,wrong);
    }
    

    3.整数乘法

    void mul()
    {
    	int s=0;
    	int a,b,c,n;
    	//输入要生成的题目数量
    	printf("	请输入要生成的题目数量:");
    	scanf("%d",&n);
    	while(s<n)
    	{
    		srand(time(0));
    		a=rand()%11;
    		b=rand()%11;
    		c = a * b;
    		printf("	%d*%d=",a,b);	
    		scanf("%d",&sum);	
    		if(sum==c)	
    		{
    			printf("	回答正确!
    ");	
    			right++;	
    		}	
    		else	
    		{	
    			printf("	回答错误!
    ");	
    			wrong++;	
    		}
    		s++;
    	}
    	printf("	答对了%d题,打错了%d题
    ",right,wrong);
    }
    

    4.整数除法

    void chu()
    {
    	int s=0;
    	int a,b,n,q;
    	float c;
    	//输入要生成的题目数量
    	printf("	请输入要生成的题目数量:");
    	scanf("%d",&n);
    	while(s<n)
    	{
    		srand(time(0));
    		a=rand()%100;
    		b=rand()%100;
    		if(a<b)
    		{
    			q=a;
    			a=b;
    			b=q;
    		}
    		c = a / b;
    		printf("	%d/%d=",a,b);
    		scanf("%d",&sum);
    		if(sum==c)
    		{
    			printf("	回答正确!
    ");
    			right++;
    		}
    		else
    		{
    			printf("	回答错误!
    ");
    			wrong++;
    		}
    		s++;
    	}
    	printf("	答对了%d题,打错了%d题
    ",right,wrong);
    }
    

    5.真分数运算

    最大公倍数

    int gcd(int a,int b)
    { 
         if(a%b==0)
         return b;
             else;
             return gcd(b,a%b);
    } 
    

    真分数运算

    void zhenfenshu()
    {   int s=0;
    	int e,f,k,c,d,n,p;
    	int gxs;
    	char answer[10];
    	int ansz,ansm;
    	char a1[12],a2[12];
    	//输入要生成的题目数量
    	printf("	请输入要生成的题目数量:");
    	scanf("%d",&n);
    	while(s<n)
    	{
    		srand(time(0));
    		e=rand()%9+1;
    		f=rand()%9+1;
    		k=rand()%4+1;
    		if(e>=f)
    		{
    			p=e;
    			e=f;
    			f=p;
    		}
    		c=rand()%9+1;
    		d=rand()%9+1;
    		if(c>=d)
    		{
    			p=c;
    			c=d;
    			d=p;
    		}
    		switch(k)
    		{
    		case 1:
    			ansz=e*d+c*f;
    			ansm=f*d;
    			gxs=gcd(ansz,ansm);
    			ansz/=gxs;
    			ansm/=gxs;
    			itoa(ansz,a1,10);
    	        itoa(ansm,a2,10);
    	        strcat(a1,"/");
    	        strcat(a1,a2);
    			printf("	%d/%d+%d/%d=",e,f,c,d);
                scanf("%s",answer);
    		    if(strcmp(a1,answer)==0)
    			{
    			printf("	回答正确!
    ");
    			right++;
    			}
    		    else
    			{
    			printf("	回答错误!
    ");
    			wrong++;
    			}
    			break;
    		case 2:
    		    ansz=e*d-c*f;
    			ansm=f*d;
    			gxs=gcd(ansz,ansm);
    			ansz/=gxs;
    			ansm/=gxs;
    			itoa(ansz,a1,10);
    	        itoa(ansm,a2,10);
    	        strcat(a1,"/");
    	        strcat(a1,a2);
    			printf("	%d/%d-%d/%d=",e,f,c,d);
                scanf("%s",answer);
    		    if(strcmp(a1,answer)==0)
    			{
    			printf("	回答正确!
    ");
    			right++;
    			}
    		    else
    			{
    			printf("	回答错误!
    ");
    			wrong++;
    			}
    			break;
    		case 3:
    			ansz=e*c;
    			ansm=f*d;
    			gxs=gcd(ansz,ansm);
    			ansz/=gxs;
    			ansm/=gxs;
    			itoa(ansz,a1,10);
    	        itoa(ansm,a2,10);
    	        strcat(a1,"/");
    	        strcat(a1,a2);
    			printf("	%d/%d*%d/%d=",e,f,c,d);
                scanf("%s",answer);
    		    if(strcmp(a1,answer)==0)
    			{
    			printf("	回答正确!
    ");
    			right++;
    			}
    		    else
    			{
    			printf("	回答错误!
    ");
    			wrong++;
    			}
    			break;
    		case 4:
    	    	ansz=e*d;
    			ansm=f*c;
    			gxs=gcd(ansz,ansm);
    			ansz/=gxs;
    			ansm/=gxs;
    			itoa(ansz,a1,10);
    	        itoa(ansm,a2,10);
    	        strcat(a1,"/");
    	        strcat(a1,a2);
    			printf("	%d/%d / %d/%d=",e,f,c,d);
                scanf("%s",answer);
    		    if(strcmp(a1,answer)==0)
    			{
    			printf("	回答正确!
    ");
    			right++;
    			}
    		    else
    			{
    			printf("	回答错误!
    ");
    			wrong++;
    			}
    			break;
    		}
    		s++;
    	}
    	printf("	答对了%d题,打错了%d题
    ",right,wrong);
    }
    

    6.主函数

    int main()
    {
    	int n,t;//n 题数 t 运算类型编号
    	while(1){
    	//输入产生的运算类型
    	printf("
    
    	*****小学四则运算****
    
    "); 
    	printf("请选择以下的题目类型:
    ");
    	printf("1.加法运算
    ");
    	printf("2.减法运算
    ");
    	printf("3.乘法运算
    ");
    	printf("4.除法运算
    ");
    	printf("5.真分数运算
    ");
    	printf("请选择题目类型(0-5):");
    	scanf("%d",&t);
    	   switch(t)
    		{
    		case 1:
    			add();
    			break;
    		case 2:
    			sub();
    			break;
    		case 3:
    			mul();
    			break;
    		case 4:
    			chu();	
    			break;
    		case 5:
    			zhenfenshu();
    			break;	
    		default:
    		    printf("输入错误! 请重新选择!");
    		    break;
    		}
       } 
    	return 0;
    }
    

    三、运行界面


    四、个人小结

    1.psp表格

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 200 240
    Development 开发 100 150
    Analysis 需求分析(包括学习新技术) 30 40
    Design Spec 生成设计文档 30 50
    Design Review 设计复审 5 15
    Coding Standard 代码规范 3 10
    Design 具体设计 10 15
    Coding 具体编码 36 26
    Code Review 代码复审 5 20
    Test 测试(自我测试,修改代码,提交修改) 10 30
    Reporting 报告 9 30
    Test Report 测试报告 3 30
    Size Measurement 计算工作量 2 10
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 10

    2.心得和经验

    通过本次作业,我学会了熟练使用markdown编辑器,同时也锻炼了我的代码编写能力。

  • 相关阅读:
    Sql server 2005 restore failed
    使用Windows Live Writer发布到cnblogs
    IE7 Tab problem
    转: 编码,charset,乱码,unicode,utf8与net简单释义(续)
    移动12.1号动感地带寻宝答案
    转: 各种 lightbox 实现
    Cannot connect windows 2003 server remotely by mstsc
    boost asio 网络编程案例简单改写
    读书笔记之《程序员的自我修养链接、装载与库》
    基于OpenSSL简单实现Shamir基于身份的数字签名算法
  • 原文地址:https://www.cnblogs.com/lsy1451525172/p/13942358.html
Copyright © 2020-2023  润新知