20194605-自动生成四则运算题第一版报告

一、需求分析

因为使用程序来出题可以为用户带来很大的便捷,使老师在给同学出题时更加方便、快捷、简单。

二、功能设计

基本功能:

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

扩展功能:

    -(1)剔除重复算式。2 + 3 =    和2 + 3 =     是重复算式 2 + 3 =   和3 + 2 =  不属于重复算式
    -(2)题目数量可定制
    -(3)以下相关参数可控制
         是否包含乘法和除法
        操作数数值范围可控(如操作数 在100以内   还是1000以内)
        操作数是否含负数    
    -(4)生成的运算题存储到外部文件result.txt中

三、设计实现

我仅使用了主函数来控制整体程序的运行,通过使用循环语句、判断语句,来使自动生成的随机数进行运算以及判断条件是否成立。

四、测试运行

五、代码片段

-1.题目数量可定制;且判断定制数目是否超过10,超过规定范围显示输入错误。

            printf("请输入你要定制的题目数量(最大数量为10):"); 
        scanf("%d",&d); 
        if(d>10){   //判断输入是否超额 
                    printf("输入错误\n");
                    return 0;
                    }

-2.进行是否可以出现包含正负号的随机数

        for(i=0;i<d;i++){
    if(zf==1){
        a[i]=rand()%(2*max+1)-100;
        b[i]=rand()%(2*max+1)-100;
    }   
    else{
        a[i]=rand()%max; 
        b[i]=rand()%max;
    }
        f[i]=rand()%4;
        erze[i]=rand()%2;
-**3.四则运算输出代码**

            switch(f[i]){
            case 0:c[i]=a[i]+b[i];
                if(c[i]<max){
                    fprintf(fp,"%d+%d=%d\n",a[i],b[i],c[i]);break;}
            case 1:c[i]=a[i]-b[i];
                if(c[i]<max){
                    fprintf(fp,"%d-%d=%d\n",a[i],b[i],c[i]);break;}
                 
            case 2:c[i]=a[i]*b[i];
                if(c[i]<max){
                    fprintf(fp,"%d*%d=%d\n",a[i],b[i],c[i]);break;}
                
            case 3:c[i]=a[i]/b[i];
                if(c[i]<max){
                fprintf(fp,"%d/%d=%d\n",a[i],b[i],c[i]);break;}
                            
        }

-4.将输出数据导入文本中

        FILE *fp;
        fp=fopen("result.txt","w");
-**5.将输出数据导入文本中**

            for(j=0;j<i;j++){//剔除重复算式 
        if(a[i]==a[j]&&b[i]==b[j]&&(f[i]==f[j]||erze[i]==erze[j])){
        return 0; 
            }

六、总结

在完成的过程中,我总是看一个要求完成一项功能,没有事先将整体构思好,以至于后期改动整个程序完成相关功能的时候很麻烦。此次程序意识到了自己的问题,下次我会努力改进。

七、撰写PSP

猜你喜欢

转载自www.cnblogs.com/980504yuwei/p/11508328.html