• 《构建之法》第二次作业


    题目:

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

    需求分析:

    进行小学数学简单的加减乘除计算

    设计:

    根据用户的需求,检查输入的结果的对与错,错了指出并给出正确答案

    代码实现:

      1 #include<stdio.h> 
      2 
      3 #include<stdlib.h>
      4 
      5  #include<time.h> 
      6 
      7 #include<string.h> 
      8 
      9 int scan()
     10 
     11  {  char s[100];
     12 
     13   int i,t,z=0; 
     14 
     15  do  {   z=0;
     16 
     17           gets(s);  
     18 
     19           for(i=0;s[i]!='';i++)  
     20 
     21            if(s[i]<'0' || s[i]>'9') break; 
     22 
     23           if(i>=strlen(s))   
     24 
     25            for(t=0;s[t]!='';t++)    
     26 
     27             z=z*10+((int)s[t]-48);   
     28 
     29       else   
     30 
     31         printf("您的输入有误,请重新输入"); 
     32 
     33      } 
     34 
     35      while(i<strlen(s));   
     36 
     37      return(z); 
     38 
     39     }
     40 
     41     int x=1,y=1,choice=0,sum=0,right=0,z=0,answer;
     42 
     43     float precent;
     44 
     45     char fuhao;
     46 
     47     void suiji() 
     48 
     49    {
     50 
     51       srand(time(NULL)); 
     52 
     53      x=rand()%100+1; 
     54 
     55      y=rand()%100+1; 
     56 
     57   }
     58 
     59   void choose() 
     60 
     61   { 
     62 
     63      int yunsuan(int,int,int); 
     64 
     65      if(sum==0) precent=0.0;  
     66 
     67      else precent=(float)right/sum; 
     68 
     69      printf("
    如需进行加减乘除运算测试,请分别输入1、2、3、4
    "); 
     70 
     71      printf("如需退出请输入5
    "); 
     72 
     73      choice=scan();  
     74 
     75      switch(choice)
     76 
     77     { 
     78 
     79       case 1:printf("欢迎来到加法运算测试系统,如需退出请输入esc
    ");fuhao='+';break;   
     80 
     81       case 2:printf("欢迎来到减法运算测试系统,如需退出请输入esc
    ");fuhao='-';break;   
     82 
     83       case 3:printf("欢迎来到乘法运算测试系统,如需退出请输入esc
    ");fuhao='*';break;
     84 
     85       case 4:printf("欢迎来到除法运算测试系统,如需退出请输入esc
    ");fuhao='/';break;   
     86 
     87       case 5:printf("本次测试愉快,欢迎下次再来测试
    ");    
     88 
     89          printf("本次共做%d道题,其中%d道正确,正确率为%f
    ",sum,right,precent); break;  
     90 
     91       default:printf("您的输入有误,请重新输入
    ");choose(); 
     92 
     93      }
     94 
     95    }
     96 
     97    int ans(int x,int y,int choice)
     98 
     99   { 
    100 
    101      switch(choice) 
    102 
    103      {  
    104 
    105       case 1:z=x+y;break; 
    106 
    107       case 2:z=x-y;break;
    108 
    109       case 3:z=x*y;break; 
    110 
    111       case 4:z=x/y;break; 
    112 
    113       }  
    114 
    115       return(z);
    116 
    117     }
    118 
    119     void yunsuan() 
    120 
    121     {
    122 
    123        suiji(); 
    124 
    125       printf("%d%c%d=",x,fuhao,y); 
    126 
    127       z=ans(x,y,choice); 
    128 
    129       answer=scan(); 
    130 
    131       if  (z==answer) 
    132 
    133      {  
    134 
    135        printf("正确
    ");  
    136 
    137        right++;sum++; 
    138 
    139        yunsuan();  
    140 
    141      } 
    142 
    143     else if(answer==9999) choose();  
    144 
    145     else
    146 
    147     { 
    148 
    149       printf("不正确, 正确答案为%5d
    ",z);  
    150 
    151       sum++;     
    152 
    153       yunsuan(); 
    154 
    155      } 
    156 
    157   } 
    158 
    159   void main() 
    160 
    161    {
    162 
    163       printf("欢迎来到四则运算测试系统
    "); 
    164 
    165       choose();
    166 
    167       while(choice!=5)
    168 
    169       yunsuan();
    170 
    171    }


     

    事后分析和总结:

    编写程序的能力不够,很多语法也忘记了。以后的学习多多努力

  • 相关阅读:
    工厂模式一
    面向对象的简单理解二
    工厂模式三
    线程的简单学习
    nyoj35 表达式求值
    nyoj305 表达式求值
    poj1298 The Hardest Problem Ever
    poj1363 Rails
    hdu2036 改革春风吹满地
    nyoj467 中缀式变后缀式
  • 原文地址:https://www.cnblogs.com/yueqing/p/4412325.html
Copyright © 2020-2023  润新知