《构建之法》第二次作业

题目:

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

需求分析:

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

设计:

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

代码实现:

  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    }


 

事后分析和总结:

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

原文地址:https://www.cnblogs.com/yueqing/p/4412325.html