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

一、设计思想

在之前的基础上添加了如下功能:

1.为使用户可定制数量以及打印方式,用户自己输入

2.参数设置: 提示用户参与运算的数值范围;

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

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

                  提示用户是否有乘除法运算;

                  提示用户结果是否有负数;

  二、代码                                

  1 #include "stdio.h"
  2 #include "stdlib.h"
  3 #include "time.h"
  4 int main(){
  5     srand(time(NULL));
  6     int a,b,c,cheng,i,j,n,m,x,y,konghang;    //a,b为运算数,c为选择哪个运算符,i为循环次数
  7     printf("欢迎使用四则运算出题系统\n");
  8     printf("我们提供一下功能:\n");
  9     printf("    1.题目的数值范围(暂不支持小数)\n");
 10     printf("    2.题目的数量                    \n");
 11     printf("    3.打印时每行题的数量            \n");
 12     printf("    4.答案中会不会出现负数的结果    \n");
 13     printf("    5.题目中是否会出现乘除运算      \n");
 14     printf("    6.打印时每行的间隔              \n");
 15     printf("请输入数值范围:");
 16     scanf("%d",&x);
 17     printf("请选择出题数量:");
 18     scanf("%d",&j);   //j为题目数量
 19     printf("请输入每行题的数量:");
 20     scanf("%d",&n);    //n为每行题的数量
 21     printf("答案是否有负数(1为有,0为没有):");
 22     scanf("%d",&m);
 23     while(m!=0 && m!=1)                          //判断用户是否按要求输入
 24      {
 25          printf("sorry!输入错误,请按要求输入:");
 26          scanf("%d",&m);
 27      }
 28 
 29     printf("是否有乘除运算(1为有,0为没有):");
 30     scanf("%d",&cheng);
 31     while(cheng!=0 && cheng!=1)                          //判断用户是否按要求输入
 32      {
 33          printf("sorry!输入错误,请按要求输入:");
 34          scanf("%d",&cheng);
 35      }
 36     printf("中间有几个空行:");
 37     scanf("%d",&konghang);
 38     if(cheng==1)
 39     {
 40         if(m==0)
 41         {
 42             for(i=1;i<=j;i++)
 43             {
 44                 a=rand()%x;
 45                 b=rand()%x;
 46                 c=rand()%4;
 47                 printf("(%d)",i);
 48                 switch(c)
 49                 {
 50                 case 0:
 51                     printf("%d+%d=\t",a,b);
 52                     break;
 53                 case 1:
 54                     if(a>=b)
 55                         printf("%d-%d=\t",a,b);
 56                     else
 57                         printf("%d-%d=\t",b,a);
 58                     break;
 59                 case 2:
 60                     printf("%d*%d=\t",a,b);
 61                     break;    
 62                 case 3:
 63                     if(b==0)
 64                         printf("%d/%d=\t",b,a);
 65                     else
 66                         printf("%d/%d=\t",a,b);
 67                     break;
 68                 default:
 69                     {
 70                         printf("出错啦~~~");
 71                     }
 72                 }
 73                 if(i%n==0)
 74                 {
 75                     for(int p=1;p<konghang;p++)
 76                     {
 77                          printf("\n");
 78                     }
 79                 }
 80             }
 81             
 82         }
 83     else
 84     {
 85         for(i=1;i<=j;i++)
 86         {
 87             a=rand()%x;
 88             b=rand()%x;
 89             c=rand()%4;
 90             printf("(%d)",i);
 91             switch(c)
 92             {
 93             case 0:
 94                 printf("%d+%d=\t",a,b);
 95                 break;
 96             case 1:
 97                 printf("%d-%d=\t",a,b);
 98                 break;
 99             case 2:
100                 printf("%d*%d=\t",a,b);
101                 break;
102             case 3:
103                 if(b==0)
104                     printf("%d/%d=\t",b,a);
105                 else
106                     printf("%d/%d=\t",a,b);
107                 break;
108             default:
109                     {
110                         printf("出错啦~~~");
111                     }
112             }
113             if(i%n==0)
114                 {
115                     for(int p=1;p<konghang;p++)
116                     {
117                          printf("\n");
118                     }
119                 }
120         }
121     }
122     
123     }
124     else
125     {
126         if(m==0)
127         {
128         for(i=1;i<=j;i++)
129         {
130             a=rand()%x;
131             b=rand()%x;
132             c=rand()%2;
133             printf("(%d)",i);
134             switch(c)
135             {
136             case 0:
137                 printf("%d+%d=\t",a,b);
138                 break;
139             case 1:
140                 if(a>=b)
141                     printf("%d-%d=\t",a,b);
142                 else
143                     printf("%d-%d=\t",b,a);
144                 break;
145             default:
146                     {
147                         printf("出错啦~~~");
148                     }
149             }
150             if(i%n==0)
151                 {
152                     for(int p=1;p<konghang;p++)
153                     {
154                          printf("\n");
155                     }
156                 }
157         }
158         
159     }
160     else
161     {
162         for(i=1;i<=j;i++)
163         {
164             a=rand()%x;
165             b=rand()%x;
166             c=rand()%2;
167             printf("(%d)",i);
168             switch(c)
169             {
170             case 0:
171                 printf("%d+%d=\t",a,b);
172                 break;
173             case 1:
174                 printf("%d-%d=\t",a,b);
175                 break;
176             default:
177                     {
178                         printf("出错啦~~~");
179                     }
180             }
181                 if(i%n==0)
182                 {
183                     for(int p=1;p<konghang;p++)
184                     {
185                          printf("\n");
186                     }
187                 }
188         }
189     }
190     
191     }
192     printf("\n");
193     
194     return 0;
195 }

三、运行结果截图:

 四、PSP0表

 

项目计划总结:

 

周活动总结表

姓名:袁亚姣                                          日期:

日期       任务

听课

编写程序

阅读课本

准备考试

 

 

日总计

周日

 

 

 

 

 

 

 

周一

 

 

 

 

 

 

 

周二

 400

 

 20

 

 

 

 480

周三

 100

 60

 40

 

 

 

 200

周四

 200

 90

 

 

 

 

 260

周五

 200

 60

 60

 

 

 

 330

周六

 

 20

 20

 

 

 

 40

周总结

 900

 230

 140

 

 

 

 1270

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

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

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

以前各周的累计时间                                                                                    

总计

 900

 230

 140

 

 

 

1270 

平均

 900

 230

 140

 

 

 

1270

最大

 900

 230

 140

 

 

 

1270

最小

 900

 230

140 

 

 

 

1270

二、时间记录表:

学生      袁亚姣                                              日期     2015.03.15    

教师        王建民                                             课程           PSP       

日期

开始时间

结束时间

中断时间

净时间

活动

备注

 15/3/11

 8:00

 9:50

 10

 100

 上课

 课间休息

 

 10:00

 10:40

 

 40

 阅读

 《梦断代码》

 

 20:00

 21:20

 20

 60

 编程

 与同学讨论

 15/3/12

 10:10

12:00 

 10

 100

 上课

 课间休息

 

 14:00

 15:50

 10

 100

 上课

 课间休息

 

 20:00

 21:30

 

 90

 编程

 

15/3/13

8:00

12:00

40

200

上课

课间休息

 

20:00

21:30

30

60

编程

与同学讨论

 

22:00

23:00

 

60

阅读

 

15/3/14

10:00

10:20

 

20

优化代码

 

 

11:00

11:20

 

20

阅读

 

 

三、缺陷记录日志:

学生        袁亚姣   

日期        15.3.15 

教员       王建民   

程序号                

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 15/3/11

 1

 

 编码

 编译

 5min

 

 描述:%d,&不会使用,傻傻分不清

 15/3/12

 2

 

 编码

 编译

 1min

 

 描述:忘记写;

 15/3/13

 3

 

 编码

 编译

 1min

 

 描述:加了一个if语句,忘记右边的”}”了

 五、心得体会

程序仅仅实现了几个功能,还不完善。而且,我把所有的程序都写到主函数里面了,维护起来相当困难,但是由于不太会使用函数调用,也就没有改进。

刚刚拿到题目是,很头疼,不知道怎么去写,后来,真正去写的时候,从每个小问题开始实现,发现并没有我想象中的那么困难,所以以后要改正逃避的毛病,多练,多写,多看

其他的功能,我日后也会慢慢的去实现。

posted @ 2015-03-15 11:41  YTester  阅读(148)  评论(0编辑  收藏  举报