• 第二次作业(四则运算)


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

    -需求分析

         便于初涉四则运算的学生的加强锻炼,通过大量的四则运算练习达到熟练地效果。

    -基本要求:

         根据需要选择计算类型(加*、减-、乘*、除/)

         自己计算出答案,若果答案错误,系统将予以提示错误,并提示重做若答案正确则提示很好

         统计出所答对的题目个数

      -具体设计:

        算法较为简单,代码中已给出叫为详细的注释

     

      -代码:

              #include<stdio.h>
    #include<stdlib.h>  //包含rand,srand函数
    #include<time.h>   //用于计时
    float again_chu(int m,int n,int j)   /*除法重做函数,当结果小于0.001时重新取数*/

    {
     float i,b;
     m=rand()%100;n=rand()%99+1;    //取小于100的随机数,n大于0
     b=(int)(1000*m/(float)n)/1000.0;  //取结果b小数点后三位
     if(b>0)      //结果大于零时继续,否则重新执行again函数
     

     {
      

    printf("%d/%d=",m,n);scanf("%f",&i);
      if(i==b){printf("答案正确,很好! ");j++;

    }
         else printf("答案错误,重做 ");
       }

    else again_chu(m,n,j);
          return 0;
    }
    int jia(int m,int n)  //加法函数
    {
     int i,j=0,k;  //j用于记录正确题数
        srand(time(0));  //获得随机数种子,time(0)用于获取当前时间
     for(k=0;k<5;k++)
     {
      m=rand()%100;n=rand()%100;
      printf("%d+%d=",m,n);scanf("%d",&i);
      if(i==(m+n)){printf("答案正确,很好! ");j++;}
         else printf("答案错误,重做 ");
     }printf("做对了%d个 ",j);
     return 0;
    }
    int jian(int m,int n)  //减法函数
    {
     int i,j=0,k;
        srand(time(0));
     for(k=0;k<5;k++)
     {
      m=rand()%100;n=rand()%100;
    printf("%d-%d=",m,n);scanf("%d",&i);
      if(i==(m-n)){printf("答案正确,很好! ");j++;}
         else printf("答案错误,重做 ");
     }printf("做对了%d个 ",j);
     return 0;
    }
    int cheng(int m,int n)  //乘法函数
    {
     int i,j=0,k;
        srand(time(0));
     for(k=0;k<5;k++)
     {
      m=rand()%100;n=rand()%100;
      printf("%d*%d=",m,n);scanf("%d",&i);
      if(i==(m*n)){printf("答案正确,很好! ");j++;}
         else printf("答案错误,重做 ");
     }printf("做对了%d个 ",j);
     return 0;
    }                       
    float chu(int m,int n)  //除法函数
    {
     int j=0,k;float i,b;
        srand(time(0));
     printf("用去尾法取小数点后三位:如1/6=0.166 ");
     for(k=0;k<5;k++)
     { 
      m=rand()%100;n=rand()%99+1;
         b=(int)(1000*m/(float)n)/1000.0;
         if(b>0)
      {
       printf("%d/%d=",m,n);scanf("%f",&i);
          if(i==b){printf("答案正确,很好! ");j++;}
             else printf("答案错误,重做 ");
      }
      else again_chu(m,n,j);
     }printf("做对了%d个 ",j);
     return 0;
    }
    int main()
    {
     int m,n;
     char a;
     printf("请选择要做的题目类型(+,-,*,/):");
     scanf("%c",&a);
     if(a=='+')jia(m,n);
        else if(a=='-')jian(m,n);
        else if(a=='*')cheng(m,n);
        else chu(m,n);
        return 0;
    }

    -程序效果图:

    -PSP耗时统计:

    Personal Software Process Stages 时间 时间百分比
    需求分析 5 11.6%
    具体设计 5 11.6%
    生成文档 15 34.9%
    测试 10 23.2%  
     总结 8 18.6%

     

    -总结:

    基本知识掌握不够好,以至于写代码的时候屡次犯错,而且所设计的程序过于简单化,功能也不是很完善,自己都很不满意,十分汗颜。

     
  • 相关阅读:
    【MVC 4】7.SportsSore:完成购物车
    【MVC 4】6.SportsSore:导航
    【MVC 4】5.SportsSore —— 一个真实的应用程序
    【网络文摘】面试感悟:3年工作经验程序员应有的技能
    【网络文摘】一个大神程序员的使命感究竟应该是什么
    join的简单总结
    模块化(1):基本思路
    Android 9.0新特性
    DataBinding初认识
    Android 7.0 新特性
  • 原文地址:https://www.cnblogs.com/forever1999/p/4409579.html
Copyright © 2020-2023  润新知