《软件工程》第二次作业

--题目:

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

--需求分析:

  • 编写小学四则运算的测试系统,该系统能完成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分钟
原文地址:https://www.cnblogs.com/0907zhoujing/p/4415766.html