软件工程--课堂练习之四则运算之续编
一、设计思想
在之前的基础上添加了如下功能:
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语句,忘记右边的”}”了 |
五、心得体会
程序仅仅实现了几个功能,还不完善。而且,我把所有的程序都写到主函数里面了,维护起来相当困难,但是由于不太会使用函数调用,也就没有改进。
刚刚拿到题目是,很头疼,不知道怎么去写,后来,真正去写的时候,从每个小问题开始实现,发现并没有我想象中的那么困难,所以以后要改正逃避的毛病,多练,多写,多看
其他的功能,我日后也会慢慢的去实现。