软件工程课堂练习四则运算续篇

一、设计思想

根据题目的新要求我做了以下更改

1.为使用户可定制数量以及打印方式,可使用户输入打印方式、数量的参数来进行设置
2.参数设置:提示用户是否有乘除法运算,是/否用户可输入【1/0】表示。

提示用户是否有负数参与运算;

提示用户参与运算的数值范围;

提示用户输入出多少道题目;

提示用户输入题目输出列数;

二、源代码

  1 #include "stdafx.h"
  2 #include "stdio.h"
  3 #include "time.h"
  4 #include "stdlib.h"      //随机器函数头文件
  5
  6
  7 void print()
  8 {
  9     int num,numvalue,judear,judemd,linenum;  //变量含义分别为出题数目、数值范围、判断有无负数、判断有无乘除、输出列数
 10
 11     printf("请输入出题数目:");
 12     scanf("%d",&num);
 13     printf("请输入要输出的题目列数:");
 14     scanf("%d",&linenum);
 15     printf("加减有无负数?请输入【0/1】表示【是/否】:");
 16     scanf("%d",&judear);
 17     while(judear!=0 && judear!=1)                          //判断用户是否按要求输入
 18     {
 19         printf("sorry!输入错误,请按要求输入:");
 20         scanf("%d",&judear);
 21     }
 22     printf("请输入出题的范围绝对值(不考虑小数请输入整数):00-");
 23     scanf("%d",&numvalue);
 24     printf("出题是否含有乘除法?请输入【0/1】表示【是/否】:");
 25     scanf("%d",&judemd);
 26     while(judear!=0 && judear!=1)                         //判断用户是否按要求输入
 27     {
 28         printf("sorry!输入错误,请按要求输入:");
 29         scanf("%d",&judemd);
 30     }
 31         switch(judemd)
 32         {
 33                 case 0:{
 34                     int x,y;
 35                     if(judear==0){
 36                     srand((int)time(0));
 37                     for(int i=1;i<=num/linenum;i++)          //出题数量
 38                     {
 39                         for(int j=1;j<=linenum;j++)       //控制出题列数
 40                         {
 41
 42                         int a=rand()%numvalue;
 43                         int b=rand()%numvalue;
 44
 45                         x=1+rand()%10;     //随机产生10种类型的题目
 46                         switch (x)
 47                         {
 48                             case 1:
 49                                 {
 50                                     printf("%d+%d=\t",a,b);
 51                                     if(j%linenum==0)
 52                                         printf("\n");
 53                                     break;
 54                                 }
 55                             case 2:
 56                                 {
 57                                     printf("%d-%d=\t",a,b);
 58                                     if(j%linenum==0)
 59                                         printf("\n");
 60                                     break;
 61                                 }
 62                             case 3:
 63                                 {
 64                                     printf("-%d+%d=\t",a,b);
 65                                     if(j%linenum==0)
 66                                         printf("\n");
 67                                     break;
 68                                 }
 69                             case 4:
 70                                 {
 71                                     printf("%d+(-%d)=\t",a,b);
 72                                     if(j%linenum==0)
 73                                         printf("\n");
 74                                     break;
 75                                 }
 76                             case 5:
 77                                 {
 78                                     printf("-%d+(-%d)=\t",a,b);
 79                                     if(j%linenum==0)
 80                                         printf("\n");
 81                                     break;
 82                                 }
 83                             case 6:
 84                                 {
 85                                     printf("-%d-%d=\t",a,b);
 86                                     if(j%linenum==0)
 87                                         printf("\n");
 88                                     break;
 89                                 }
 90                             case 7:
 91                                 {
 92                                     printf("%d-(-%d)=\t",a,b);
 93                                     if(j%linenum==0)
 94                                         printf("\n");
 95                                     break;
 96                                 }
 97                             case 8:
 98                                 {
 99                                     printf("-%d-(-%d)=\t",a,b);
100                                     if(j%linenum==0)
101                                         printf("\n");
102                                     break;
103                                 }
104                             case 9:
105                                 {
106                                     printf("%d*%d=\t",a,b);
107                                     if(j%linenum==0)
108                                         printf("\n");
109                                     break;}
110                             case 10: {
111                                 if (b!=0)
112                                 {printf("%d/%d=\t",a,b);
113                                 if(j%linenum==0)
114                                     printf("\n");}
115                                 else
116                                 {
117                                     b=b+1;
118                                     printf("%d/%d=\t",a,b);
119                                     if(j%linenum==0)
120                                         printf("\n");
121                                 }
122                                 break;
123                                     }
124                             default:{"输出有误!";}
125                         }
126                     }
127                     }
128
129                     }
130                     else if(judear==1)
131                     {
132                         srand((int)time(0));
133                         for(int i=1;i<=num/linenum;i++)
134                         {
135                             for(int j=1;j<=linenum;j++){           //控制出题列数
136
137                             int a=rand()%100;
138                             int b=rand()%100;
139
140                             y=1+rand()%4;     //随机产生四种不同的题目
141                             switch (y)
142                             {
143                                 case 1:
144                                     {
145                                         printf("%d+%d=    \t",a,b);
146                                         if(j%linenum==0)
147                                         printf("\n");
148                                         break;
149                                     }
150                                 case 2:
151                                     {
152                                         printf("%d-%d=    \t",a,b);
153                                         if(j%linenum==0)
154                                         printf("\n");
155                                         break;
156                                     }
157                                 case 3:
158                                     {
159                                         printf("%d*%d=    \t",a,b);
160                                         if(j%linenum==0)
161                                         printf("\n");
162                                         break;
163                                     }
164                                 case 4: {
165                                     if (b!=0)
166                                     {printf("%d/%d=    \t",a,b);
167                                     if(j%linenum==0)
168                                         printf("\n");}
169                                     else
170                                     {
171                                         b=b+1;
172                                         printf("%d/%d=    \t",a,b);
173                                         if(j%linenum==0)
174                                         printf("\n");
175                                     }
176                                     break;
177                                         }
178                                 default:{"输出有误!";}
179                             }
180                         }
181                         }
182                     }
183                     else
184                         printf("出错!");
185                        break;
186                        default:{printf("出错!");}
187                        }
188                 case 1:{
189                     int q,w;
190                     if(judear==0)
191                     {
192                         srand((int)time(0));
193                         for(int i=1;i<=num/linenum;i++)
194                         {
195                             for(int j=1;j<=linenum;j++){     //控制出题列数
196                             int a=rand()%100;
197                             int b=rand()%100;
198
199                             q=1+rand()%8;         //随机产生8种不同的题型
200                             switch (q)
201                             {
202                             case 1:
203                                 {
204                                     printf("%d+%d=    \t",a,b);
205                                     if(j%linenum==0)
206                                         printf("\n");
207                                     break;
208                                 }
209                             case 2:
210                                 {
211                                     printf("%d-%d=    \t",a,b);
212                                     if(j%linenum==0)
213                                         printf("\n");
214                                     break;
215                                 }
216                             case 3:
217                                 {
218                                     printf("-%d+%d=   \t",a,b);
219                                     if(j%linenum==0)
220                                         printf("\n");
221                                     break;}
222                             case 4:
223                                 {
224                                     printf("%d+(-%d)= \t",a,b);
225                                     if(j%linenum==0)
226                                         printf("\n");
227                                     break;}
228                             case 5:
229                                 {
230                                     printf("-%d+(-%d)=\t",a,b);
231                                     if(j%linenum==0)
232                                         printf("\n");
233                                     break;}
234                             case 6:
235                                 {
236                                     printf("-%d-%d=   \t",a,b);
237                                     if(j%linenum==0)
238                                         printf("\n");
239                                     break;
240                                 }
241                             case 7:
242                                 {
243                                     printf("%d-(-%d)= \t",a,b);
244                                     if(j%linenum==0)
245                                         printf("\n");
246                                     break;
247                                 }
248                             case 8:
249                                 {
250                                     printf("-%d-(-%d)=\t",a,b);
251                                     if(j%linenum==0)
252                                         printf("\n");
253                                     break;
254                                 }
255                             default:{"输出有误!";}
256                             }
257                         }
258                         }
259                     }
260                     else if(judear==1)
261                     {
262                         srand((int)time(0));
263                         for(int i=1;i<=num/linenum;i++)
264                         {
265                             for(int j=1;j<=linenum;j++){         //控制出题列数
266
267                             int a=rand()%100;
268                             int b=rand()%100;
269
270                             w=1+rand()%2;     //随机产生2种不同的题型
271                             switch (w)
272                             {
273                                 case 1:
274                                     {
275                                         printf("%d+%d=    \t",a,b);
276                                         if(j%linenum==0)
277                                         printf("\n");
278                                         break;
279                                     }
280                                 case 2:
281                                     {
282                                         printf("%d-%d=    \t",a,b);
283                                         if(j%linenum==0)
284                                         printf("\n");
285                                         break;
286                                     }
287                                 default:{"输出有误!";}
288                             }
289                         }
290                         }
291
292                     }
293                     else
294                         printf("出错!");
295 }
296
297         }
298         }
299
300
301
302
303 int main(int argc, char* argv[])
304 {
305     printf("                         四则运算出题系统                      \n");
306     print();
307     return 0;
308 }

三、运行结果

四、心得体会

这次的四则运算出题系统是上一次的扩展,其实还有很多功能没能实现,是否支持小数(有效数值是多少位),是否支持有括号运算等等;

这次的程序写的很简单,把所有的功能都写在一个函数中了,没有分模块处理,因为我之前是利用的多个函数但涉及到传参问题,而我对他实在是没有办法,整理半天没整明白,所以最后只能用自己绝得简单的方法实现这个问题了

编程过程中也有出现过很多错误,如

1.在输出所有题目和列数时,把for语句的循环条件弄错,导致每一列输出了总题数

2.马虎大意漏写;号

3.if后面条件写错

五、psp0级相关日志

1.项目计划日志

周活动总结表

姓名:曹美娜                           日期:2015.03.15


日期/任务


听课


编写程序


阅读课本


准备考试


日总计


周二 3.10


200


30


230


周三 3.11


100


65


45


210


周四


200


102


302


周五


200


73


50


323


周六


120


120


周日 3.15


120


120


周总计


700


240


365

 1305

阶段时间和效率          周数(上一次周活动总结表的周数+1):1

不包括上一周在内的累计时间


总计


平均


最大


最小

以前个周的累计时间


总计


800


300


150


60


1310


平均


800


300


150


60  


1310


最大


800


300


150


60


1310


最小


800


300


150


60

 1310

2.时间记录日志

时间记录日志

学生  曹美娜                      日期  2015.03.10

教师  王建民                      课程  软件工程


日期


开始时间


结束时间


中断时间


净时间


活动


备注


3/10


3/11


16:20


17:40


15分钟


65


编写四则运算程序


中间电话插入


3/12


16:45


18:27


102


编程


19:30


21:30


120


自习


3/13


15:23


16:36


73


编程


3/15


9:10


11:00


110


看书

3.缺陷记录表

缺陷记录日志

学  生      曹美娜

日  期     2015.03.10

教  员      王建民

程序号


日期


编号


类型


引入阶段


排除阶段


修复时间


修复缺陷


3/10


3/11


0


编程


编译


3分钟


漏掉“;”


3/12


1


编程


5分钟


For循环条件出错


3/13


2


编程


2分钟


If语句条件错误

时间: 2024-10-07 04:02:04

软件工程课堂练习四则运算续篇的相关文章

软件工程课堂练习--四则运算(三)

一.设计思路 题目:可以答题并判断对错,最后显示做对几道题. 思路:在原来的基础上又添加了用户在系统上可选择直接答题模块,思路上上次的四则运算(二)大致相同,不过又添加了几个函数,经过调用实现操作. 二.程序代码 1 #include "stdafx.h" 2 #include "stdio.h" 3 #include "time.h" 4 #include "stdlib.h" //随机器函数头文件 5 6 int true

软件工程课堂练习--四则运算单元测试

一.测试计划 对系统所要实现的功能以及程序中的函数进行针对性的测试, 1.输入出题数目,看出题数目是否正确: 2.用户首先要选择有无负数参与运算,分别用[0/1]是或否表示,分别输入[0/1]看是否有无负数出现:其次如若输入其他字符或数字,则显示提示要求用户重新输入: 3.然后用户根据提示输入是否有无乘除法,测试方法同上: 4.测试用户在重复多次操作时是否会有重复运算出现: 5.输入出题数目,选择打印列数,看是否存在问题: 二.测试执行及结果 1.输入30道题目测试有30道输出,然后用分别测试了

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

软件工程结对作业 四则运算界面设计

软件工程结对作业 四则运算界面设计 康鑫  PB16060203 娄雨禛  PB16060356 一.项目分析 二.进度规划与完成情况 三.主要函数 四.简单的数据测试 五.编程困惑与心得 原文地址:https://www.cnblogs.com/RainLou/p/8735480.html

软件工程课堂练习-随机生成30道四则运算练习题

习题要求:随机生成30道四则运算题 以下是程序代码: 1 #include "stdafx.h" 2 #include "stdio.h" 3 #include "time.h" 4 #include "stdlib.h" //随机器函数头文件 5 6 void print() 7 { 8 srand((int)time(0)); 9 for(int i=0;i<=29;i++) 10 { 11 int x; 12 in

软件工程课堂作业(一)——随机产生四则运算题目

一.设计思想: 1.首先主函数只用来调用随机产生并输出运算题目函数,随机产生并输出这一部分功能用一个randout函数实现: 2.随机产生运算数这一功能,两个运算数可以用随机函数生成,并将它们控制在100以内.其中,考虑到除数不能为零,第二个运算数随机产生时+1: 3.随机产生运算法则这一功能,运算法则一共有4种,也可以随机产生0-4的数,分情况进行四则运算. 二.源代码: #include "stdafx.h" #include "stdlib.h" void r

软件工程--课堂练习之四则运算之续编

一.设计思想 在之前的基础上添加了如下功能: 1.为使用户可定制数量以及打印方式,用户自己输入 2.参数设置: 提示用户参与运算的数值范围: 提示用户输入出多少道题目: 提示用户输入题目输出列数: 提示用户是否有乘除法运算: 提示用户结果是否有负数: 二.代码 1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "time.h" 4 int main(){ 5 srand(time(NULL

软件工程课堂作业(二)——升级版随机产生四则运算题目设计思想

升级版随机产生四则运算题目要求: 1.避免题目重复: 2.可定制题目(题目数量.打印方式): 3.可以选择:是否有乘除法.是否有括号.定制数值范围.加减有无负数.除法有无余数.是否支持分数.是否支持小数.定制每行间隔等. ********************************************************************************************************* 设计思想: 1.避免重复:输出时,确定了运算符号,两个运算数都相同

软件工程——课堂改进意见

这学期有一门必修课程<软件工程>.老师是软件工程专业的系主任王建民老师.从上第一节<软件工程>课起.就发现了王老师讲课特点:1)上课不准睡觉,抓到睡觉的同学会提出批评.2)上课不准玩手机3)上课带电脑,会有相应的课堂练习4)讲课激情洋溢,上课氛围从不会沉闷.感觉课堂练习还是蛮重要的,像我们之前听的课或现在正在进行的课程,全都是老师在讲台上讲,同学们在下面死气沉沉的听,一节课下来几乎不动手,不动脑,就只是机械的抬头看黑板,看多媒体.由于大一的C++基础比较薄弱,加上学完这门课程后好久