zoukankan      html  css  js  c++  java
  • 个人作业-四则运算题目生成程序

    博客班级 班级链接
    作业要求 作业链接
    作业目标 培养编程能力和学用markdown
    学号 3180701111

    题目要求

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

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

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

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

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

    代码

    求最大公约数

    int gys(int a,int b)
    {
    	int i,n=a;
    	if(n>b)
    		n=b;
    	for(i=n;i>=1;i--)
    	{
    		if(a%i==0&&b%i==0)
    		break;
    	}
    	return i;
    }
    

    整数加法

    void add() //整数的加法
    {
          int a,b,c;
          a=rand()%100; //随机生成
          b=rand()%100;
          printf("请回答:
    		 %d + %d = ",a,b);
          scanf("%d",&c);
          if(a+b==c)
          {
                printf("回答正确!
    ");
                right++;
          }
          else
          {
                printf("回答错误!
    ");
    			printf("正确答案为:%d",a+b);
                wrong++;
          }
    }
    

    真分数加法

    void Add() //真分数的加法
    {
          int fm1=0, fz1=0, fm2=0, fz2=0;
          int a,b,c,d,t,i=0;
    
          fm1=1+rand()%10;
          fz1=0+rand()%10;
    
          if(fm1<fz1)
          {
              
    		  t=fz1;
              fz1=fm1;
    		  fm1=t;
          }
    
          fm2=1+rand()%10;
          fz2=0+rand()%10;
    
          if(fm1<fz1)
          {
              fm1=t;
              fz1=fm1;
    		  t=fz1;
          }
          printf("请回答:
    		 %d / %d + %d / %d = ",fz1,fm1,fz2,fm2);
          scanf("%d/%d",&c,&d);
    	  a=fm1*fm2;
    	  b=fz1*fm2+fz2*fm1;
          i=gys(a,b);
    	  a=a/i,b=b/i;
          if(a==d&&b==c)
          {
              printf("回答正确!
    ");
              right++;
          }
          else
          {
              printf("回答错误!
    ");
    		  printf("正确答案为:%d/%d",b,a);
              wrong++;
          }
    }
    

    整数减法

    void sub() //整数减法
    {
          int a,b,c;
          a=rand()%100;
          b=rand()%100;
          printf("请回答:
    		 %d - %d = ",a,b);
          scanf("%d",&c);
          if(a-b==c)
          {
          printf("回答正确!
    ");
          right++;
          }
          else
          {
          printf("回答错误!
    ");
    	  printf("正确答案为:%d",a-b);
          wrong++;
          }
    }
    

    真分数减法

    void Sub() //真分数的减法
    {
          int fm1=0, fz1=0, fm2=0, fz2=0;
          int a,b,c,d,t,i=0;
    
          fm1=1+rand()%10;
          fz1=0+rand()%10;
    
          if(fm1<fz1)
          {
              
    		  t=fz1;
              fz1=fm1;
    		  fm1=t;
          }
    
          fm2=1+rand()%10;
          fz2=0+rand()%10;
    
          if(fm1<fz1)
          {
              fm1=t;
              fz1=fm1;
    		  t=fz1;
          }
          printf("请回答:
    		 %d / %d + %d / %d = ",fz1,fm1,fz2,fm2);
          scanf("%d/%d",&c,&d);
    	  a=fm1*fm2;
    	  b=fz1*fm2-fz2*fm1;
          i=gys(a,b);
    	  a=a/i,b=b/i;
          if(a==d&&b==c)
          {
              printf("回答正确!
    ");
              right++;
          }
          else
          {
              printf("回答错误!
    ");
    		  printf("正确答案为:%d/%d",b,a);
              wrong++;
          }
    }
    

    整数乘法

    void mul() //整数乘法
    {
          int a,b,c;
          a=rand()%100;
          b=rand()%100;
          printf("请回答:
    		 %d * %d = ",a,b);
          scanf("%d",&c);
          if(a*b==c)
          {
          printf("回答正确!
    ");
          right++;
          }
          else
          {
          printf("回答错误!
    ");
    	  printf("正确答案为:%d",a*b);
          wrong++;
          }
    }
    

    真分数乘法

    void Mul() //真分数的乘法
    {
          int fm1=0, fz1=0, fm2=0, fz2=0;
          int a,b,c,d,t,i=0;
    
          fm1=1+rand()%10;
          fz1=1+rand()%10;
    
          if(fm1<fz1)
          {
    		  t=fz1;
              fz1=fm1;
    		  fm1=t;
          }
    
          fm2=1+rand()%10;
          fz2=0+rand()%10;
    
          if(fm1<fz1)
          {
              fm1=t;
              fz1=fm1;
    		  t=fz1;
          }
          printf("请回答:
    		 %d / %d * %d / %d = ",fz1,fm1,fz2,fm2);
          scanf("%d/%d",&c,&d);
    	  a=fm1*fm2;
    	  b=fz1*fz2;
          i=gys(a,b);
    	  a=a/i,b=b/i;
          if(a==d&&b==c)
          {
              printf("回答正确!
    ");
              right++;
          }
          else
          {
              printf("回答错误!
    ");
    		  printf("正确答案为:%d/%d",b,a);
              wrong++;
          }
    }
    

    整数除法

    void di() //整数除法
    {
          int a,b;
    	  float c,t;
          a=rand()%100;
          b=rand()%100;
          printf("请回答:
    		 %d / %d = ",a,b);
          scanf("%f",&c);
    	  t=(float)a/b;
    	  a=(int)((t+0.005)*100);
    	  b=(int)(c*100);
          if(a==b)
          {
          printf("回答正确!
    ");
          right++;
          }
          else
          {
          printf("回答错误!
    ");
          printf("正确答案为:%f",t);
          wrong++;
          }
    }
    

    真分数除法

    void Di() //真分数的除法
    {
          int fm1=0, fz1=0, fm2=0, fz2=0;
          int a,b,c,d,t,i=0;
    
          fm1=1+rand()%10;
          fz1=0+rand()%10;
    
          if(fm1<fz1)
          {
              
    		  t=fz1;
              fz1=fm1;
    		  fm1=t;
          }
    
          fm2=1+rand()%10;
          fz2=1+rand()%10;
    
          if(fm1<fz1)
          {
              fm1=t;
              fz1=fm1;
    		  t=fz1;
          }
          printf("请回答:
    		 %d / %d / %d / %d = ",fz1,fm1,fz2,fm2);
          scanf("%d/%d",&c,&d);
    	  a=fm1*fz2;
    	  b=fz1*fm2;
          i=gys(a,b);
    	  a=a/i,b=b/i;
          if(a==d&&b==c)
          {
              printf("回答正确!
    ");
              right++;
          }
          else
          {
              printf("回答错误!
    ");
    		  printf("正确答案为:%d/%d",b,a);
              wrong++;
          }
    }
    

    主函数

    int main(void)
    {
          int choise,bot;
    	  int con=0;
          srand(time(NULL)); //随机数每次循环都不一样
          printf("
    			小学简易四则运算
    
    ");
          while(1)
          {
          if(con==0)
          {
                printf("	请选择:
    
    ");
                printf("			1.整数计算
    
    			2.真分数计算
    ");
                scanf("%d",&choise);
    			system("cls");
                switch(choise)
                {
                case 1:
                printf("			 1.加法运算
    
    ");
                printf("			 2.减法运算
    
    ");
                printf("			 3.乘法运算
    
    ");
                printf("			 4.除法运算
    
    ");
                printf("			 5.退出运算
    
    ");
                scanf("%d", &bot);
    			system("cls");
                switch(bot)
                {
                case 1:
                add();
                break;
                case 2:
                sub();
                break;
                case 3:
                mul();
                break;
                case 4:
                di();
                break;
                case 5:
                return 0; 
                }
          break;
                case 2:
                printf("			 1.加法运算
    
    ");
                printf("			 2.减法运算
    
    ");
                printf("			 3.乘法运算
    
    ");
                printf("			 4.除法运算
    
    ");
                printf("			 5.退出运算
    
    ");
                scanf("%d", &bot);
    			system("cls");
                switch(bot)
                {
                case 1:
                Add();
                break;
                case 2:
                Sub();
                break;
                case 3:
                Mul();
                break;
                case 4:
                Di();
                break;
                case 5:
                return 0; 
                }
          break;
              }
          }
          if(con==1)
        {
            switch(choise)
              {
                  case 1:
                      printf("			  1.加法运算
    
    ");
                      printf("			  2.减法运算
    
    ");
                      printf("			  3.乘法运算
    
    ");
                      printf("			  4.除法运算
    
    ");
                      printf("			  5.退出运算
    
    ");
                      scanf("%d", &bot);
    				  system("cls");
                      switch(bot)
                      {
                          case 1:
                              add();
                               break;
                          case 2:
                               sub();
                              break;
                          case 3:
                               mul();
                               break;
                          case 4:
                               di();
                               break;
                          case 5:
                               return 0;    
                    }
                    break;
                case 2:
                      switch(bot)
                      {
                          case 1:
                              Add();
                               break;
                          case 2:
                               Sub();
                              break;
                          case 3:
                               Mul();
                               break;
                           case 4:
                               Di();
                               break;
                          case 5:
                               return 0;    
                    }
                    break;
    
              }
        }
          printf("
    			1.继续运算?
    
    ");
          printf("
    			2.重新选择?
    
    ");
          printf("
    			3.退出运算?
    
    ");
          scanf("%d",&con);
    	  system("cls");
          if(con==1)
               con=1;
          else if(con==2)
               con=0;
          else if(con==3)
               break;
          else
               printf("抱歉!,你输入的指令有误!请重新输入!
    ");
    }
    system("cls");
    printf("您总共完成了 %d 道题
    
    正确 %d 道
    
    错误 %d 道
    
    ",right+wrong,right,wrong);
    return 0;
    }
    

    运行界面

    选择界面


    整数、真分数加法界面


    整数、真分数除法界面


    退出界面

    作业小结

    psp表格

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

    心得和体会

    在编辑本次作业过程中,我遇到了许多问题,在不断的修正过程中,发现了自己的许多不足,但这也训练了我的编程能力,
    同时也学会了Markdown编辑规范,而且对此很感兴趣,希望在之后的编程中能继续提高。

  • 相关阅读:
    day06 字典、元组、set的方法及常用操作
    python makestrans translate
    python 中locals() 和 globals()
    threading.local()
    进程 线程 协程
    微信机器人
    flask
    python is ==
    Beautiful Soup 4.4.0 基本使用方法
    12306
  • 原文地址:https://www.cnblogs.com/alesoso/p/13944585.html
Copyright © 2011-2022 走看看