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

一、设计思想

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

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语句,忘记右边的”}”了

五、心得体会

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

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

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

时间: 2024-08-04 10:55:36

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

软件工程课堂作业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

软件工程课堂练习-随机生成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.为使用户可定制数量以及打印方式,可使用户输入打印方式.数量的参数来进行设置2.参数设置:提示用户是否有乘除法运算,是/否用户可输入[1/0]表示. 提示用户是否有负数参与运算: 提示用户参与运算的数值范围: 提示用户输入出多少道题目: 提示用户输入题目输出列数: 二.源代码 1 #include "stdafx.h" 2 #include "stdio.h" 3 #include "time.h"

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

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

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

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

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

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

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

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

【现代软件工程】结对编程 —— 四则运算UI

结对作业 -- 用户界面设计 徐楠青 PB16120408 王馨儿 PB16060765 项目简介: 本次结对编程的任务是写一个能自动生成小学四则运算题目并给出答案的软件,分为core组和ui组.我们抽到的是ui组,负责用户界面设计. 目录 1.1 需求分析 1.2 功能设计 1.3 界面设计 1.4 代码架构 1.5 测试运行 1.6 PSP 1.7 总结 1.1 需求分析 在core组的基础上完成Windows和Linux电脑图形界面的程序,使其有一定的界面和辅助功能,最终交付给用户使用.

3月10号周二课堂练习:四则运算二

一.题目新的要求 1.题目避免重复: 2.可定制(数量/打印方式): 3.可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 二.设计思想(将自己上次上课时的设计思想进行稍微的修改) 1.判断两次随机数是否相同    使用函数srand()保证两个随机数不同 2.多加入一个变量,来控制题目数量 3.在每一个switch选择的语句,进行选择判断  3.1选择是否有乘除