zoukankan      html  css  js  c++  java
  • 《软件工程》第二次作业

    --题目:

    • 请编写一个能自动生成小学四则运算题目的软件;
    • 让程序能接受用户输入答案,并判定对错;
    • 最后给出总共 对/错的数量。

    --需求分析:

    • 编写小学四则运算的测试系统,该系统能完成100以内的加、减、乘、除运算;
    • 该系统能接受用户输入答案,并能自动判断对错;
    • 当对用户输入的答案进行判断时,对错误的题目给出正确的答案;
    • 在答题结束后,能自动输出用户答的总题数、答对题数、答错题数及所得分数。

    --设计:

    • 定义num表示系统内的题数,a[10]、b[10]表示自动生成的随机数,c[10]表示通过加、减、乘运算所得结果,d[10]为判断生成试题的运算,s表示通过除法运算所得结果;
    • result表示正确答案,add表示答题所得分数;
    • e为答错题目的数量,r为答对题目的数量;
    • 用一个主函数实现用户的输入,判段正误后系统自动给出正确答案,答题结束后并给出答题总数、答对题数、答错题数及答题所得分数。

    --代码实现:

    #include<stdlib.h>
    #include<stdio.h>
    #include<conio.h>
    #include<time.h>
    
    void main()
    {  
        int a[10],b[10],d[10],c[10],num=0,result,add=0;  
        double s; 
        int e=0,r=0;
        printf("欢迎来到小学四则运算测试系统!
    请认真完成以下题目!
    
    ");
        char f[5]={'+','-','*','/'};   
        srand((unsigned)time(NULL));  /* 出10道题 */  
        while(1) 
        {   
            d[num]=abs(rand())%4;/* 保证出题算法的随机性 */   
        while(1)   /* 保证出题成功 */   
        {   
            c[num]=-1;   
            a[num]=abs(rand())%100;   
            b[num]=abs(rand())%100;   
            if(d[num]==0) 
                c[num]=a[num]+b[num];   
            else if(d[num]==1) 
                c[num]=a[num]-b[num];  
            else if(d[num]==2) 
                c[num]=a[num]*b[num];   
            else if(d[num]==3)     
            {   
                if(b[num]>0)
                    s=(1.0*a[num]/b[num]);   
                else 
                    s=-1;    
            }  
            if(d[num]<=2)     
            {
                if(c[num]>=0 && c[num]<=100) /* 保证计算结果在0-100之间 */ 
                    break; 
            }else
            {
                if(a[num]==int(s)*b[num] && s>=0)       
                {
                    c[num]=int(s); 
                break;
                }       
            }   
        }
        num++;
        if(num==10) 
            break;
        }  /* 回答 */  
        num=0;  
        while(1)  
        {
            printf("%d %c %d= ",a[num],f[d[num]],b[num]);
            scanf("%d",&result);
            if(result==c[num])
            {
                r++;
                printf("回答正确!
    ");
                add+=10;
            }
            else{    
                e++;
                printf("错误,正确答案: %d
    ",c[num]);   
            }
            num++;      
            if(num==10) 
                break;    
        }  
        printf("
    您一共做了%d道题,其中正确的有%d道,错误的有%d道,总分为%d分
    ",e+r,r,e,add); 
        printf("答题结束,欢迎您再次光临!
    ");
        getch();
    }

     --测试:

    --事后分析和总结:

        1、在做题过程中,我意识到自己有很多不足;

        2、在写代码时,思路一定要清晰,保持清晰的头脑,才能高效的完成作业;

            在这实验中,我意识到自身的不足,在做题时一定要多思考,多分析,多理解;

       在做这次题目时,系统出现问题,让我写上去的东西全部消失了,这给了我一个经验,

      下次做题时,一定要记得先保存,这样可节约很多时间。

    --所耗时间:

    项目 时间
    需求分析 20分钟
    设计 30分钟
    代码 4.5小时
    测试 10分钟
    分析和总结 20分钟
  • 相关阅读:
    VS 对话框控件的Tab顺序问题
    基于OpenGL三维软件开发
    OpenGL 中的三维纹理操作
    VC 在桌面上绘制一些图形
    VC/MFC如何添加启动界面
    Cordova or Xamarin 用.net开发IOS和Android程序
    ASP.NET Web API
    软件项目如何选型
    CIO的职责、条件及价值
    Oracle日期周详解IW
  • 原文地址:https://www.cnblogs.com/0907zhoujing/p/4415766.html
Copyright © 2011-2022 走看看