20194580宝乐第二次作业自动生成四则运算作业

一、需求分析 

 随机四则运算生成小程序是一款非常实用的、给家里小孩出题的软件,设计这个小程序的初衷就是让家里小孩少看一点电视,就设计该软件让孩子做题,并且减少家长出题人力,软件可以生成100以内的加、减、乘、除,可以按需求添加乘除法,操作简单,用户界面简单,采用的是科学的随机性出题,很适合家长们给小孩出题使用。

二、功能设计

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内

(2)剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式

(3)题目数量可定制

(4)相关参数可控制

            是否包含乘法和除法

            操作数数值范围可控(如操作数 在100以内   还是1000以内)

            操作数是否含负数    

 (5)生成的运算题存储到外部文件result.txt中

三、设计实现

  这个小程序程序我用使用C语言来实现,其中包括while(),for()循环和switch()  if   else等语句实现包含加减,含正负,两个操作数的,选择乘除,操作数范围和题目数量并去掉重复的功能。数字的随机性利用的是rand()函数。

四、测试运行  

1、(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内。

     (2)剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式

     (3)题目数量可定制

     (4)相关参数可控制

            是否包含乘法和除法

            操作数数值范围可控(如操作数 在100以内   还是1000以内)

            操作数是否含负数    

 

 

 

 2、(1)生成的运算题存储到外部文件result.txt中

 

 

 

五、代码片段

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /)。

        t=rand()%al;//随机计算 
        if(t==0)//加法 
        {
        result=suiji_1+suiji_2;
        s='+';
        }
    else if(t==1)//减法 
        {
        result=suiji_1-suiji_2;
        s='-';
        }
    else if(t==2)//乘法 
        {
        result=suiji_1*suiji_2;
        s='*';
        }
    else  if(t==3)//除法 
        {
        result=suiji_1/suiji_2;
        s='/';
        }

 

(2)运算结果也在100以内

    if(result>100||result<-100)//判断结果是否在100范围内 
        { 
          i--; 
          continue;
        } 

(3) 剔除重复算式。

 for(a=i;a>0;a--)
        {
            if((cf_1[i]==cf_1[a-1])&&(low[i]==low[a-1])&&(cf_2[i]==cf_2[a-1]))
           {
              t=1;    
            }      
        }  
        if(t==1)//判断结果为重复,删除此题 
        { 
          i--; 
          continue;
        } 

(4)题目数量可定制

    while(1)
        {
       printf("请输入题目的数量(范围在10~100以内):\n");
       scanf("%d",&shuzi_1);
       if(shuzi_1>100||shuzi_1<10)
       printf("\n输入错误,重新输入\n\n");
       else break; 
    }

(5)是否包含乘法和除法

    while(1)
        {
    printf("题目是否需要乘除法(1:是 0:否):\n");
    scanf("%d",&shuzi_2);
    if(shuzi_2!=1&&shuzi_2!=0)
       printf("\n输入错误,请重新输入\n\n");
       else break; 
    } 

(6)操作数是否含负数

    while(1)
        {
    printf("该题目是否需要负数计算(1:是 0:否):\n");
    scanf("%d",&shuzi_4); 
    if(shuzi_4!=1&&shuzi_4!=0)
       printf("\n输入错误,请重新输入\n\n");
       else break; 
    } 


    srand(time(0));
    for(int i=0;i<shuzi_1;i++){
        if(shuzi_4==0){            
        suiji_1=rand()%shuzi_3+1;//正数随机操作数1 
        suiji_2=rand()%shuzi_3+1;//正数随机操作数2 
        }
    else if(shuzi_4==1){
        suiji_1=rand()%(2*shuzi_3+1)-shuzi_3;//负数随机操作数1 
        suiji_2=rand()%(2*shuzi_3+1)-shuzi_3;//负数随机操作数2 
    } 

(7)生成的运算题存储到外部文件result.txt中

1     FILE*fp;
2     fp=fopen("E:\\result.txt","w+");//创建文件;

 

六、总结

  最重要的是学习到了随机数是由一个rand()函数决定的。然后利用C语言的各种语句,把每个框架都写出来,然后进行调试,这样做程序还是比较高效的。

模块化的实现,首先把随机生成10个算数写出来,运算范围在0~100,然后在添加生成题目数。最后添加剔除重复和是否包含负数。

七、PSP

PSP2.1

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

10

6

·       Estimate

·  估计这个任务需要多少时间,并规划大致工作步骤

10

7

Development

开发

120

93

··       Analysis

  需求分析 (包括学习新技术)

10

6

·       Design Spec

·  生成设计文档

10

6

·       Design Review

·  设计复审 (和同事审核设计文档)

10

6

·       Coding Standard

  代码规范 (为目前的开发制定合适的规范)

10

5

·       Design

  具体设计

20

17

·       Coding

  具体编码

40

33

·       Code Review

·  代码复审

10

8

·       Test

·  测试(自我测试,修改代码,提交修改)

10

12

Reporting

报告

15

7

··       Test Report

·  测试报告

5

2

·       Size Measurement

  计算工作量

5

2

·       Postmortem & Process Improvement Plan

·  事后总结 ,并提出过程改进计划

5

3

转载于:https://www.cnblogs.com/bl1124/p/11527883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值