一、设计思想:
1、根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题;另一类是用户输入0或1,分情况解决问题。
2、针对这两类要求,具体设计思路已在上篇博文中写出。有改动的地方:
①避免重复之前想的解决办法是比较,相同则重新产生,这样比较繁琐。经过上网查和询问同学,学到了一个函数,将问题解决了;
②是否有括号的问题,可用switch结构,分情况输出即可;
③分数和小数问题根本上是一个问题,在这里只说明一个,可以另设两个参数,随机生成作为小数部分,再输出即可;
④该程序有很多地方需要用户输入数值,有时会输入不符合逻辑的数,针对这个问题,我在每一次需要用户输入的地方都加了一个while循环语句,若不符合条件则需要重新输入。
二、源代码:
1 //信1201-1班——胡亚宝 2015/03/13 随机生成四则运算题目 2 3 #include "stdafx.h" 4 #include "stdlib.h" 5 #include6 7 int _tmain( ) 8 { 9 srand(time(NULL)); //避免题目重复 10 int x1,x2,flag,i,j; 11 int x3,x4; 12 int a[10]; 13 printf("---------------------------欢迎使用本系统打印题目!----------------------------\n"); 14 //可定制打印的题目数 15 printf("请输入要打印的题目数:"); 16 scanf("%d",&a[0]); 17 while(a[0]<=0) //题目数必须为正数 18 { 19 printf("请重新输入有效的题目数:"); 20 scanf("%d",&a[0]); 21 }; 22 //可定制运算数的范围 23 printf("请输入运算数的范围:"); 24 scanf("%d",&a[2]); 25 while(a[2]<=0) //运算数必须为正数 26 { 27 printf("请重新输入有效的范围:"); 28 scanf("%d",&a[2]); 29 }; 30 //可定制题目中是否有乘除法 31 printf("请选择否有乘除法(是->1;否->0):"); 32 scanf("%d",&a[1]); 33 while((a[1]!=1)&(a[1]!=0)) //只能选择1或0 34 { 35 printf("请重新输入有效的数值:"); 36 scanf("%d",&a[1]); 37 }; 38 //可定制题目结果是否有负数 39 printf("请选择结果有无负数(是->1;否->0):"); 40 scanf("%d",&a[3]); 41 while((a[3]!=1)&(a[3]!=0)) //只能选择1或0 42 { 43 printf("请重新输入有效的数值:"); 44 scanf("%d",&a[3]); 45 }; 46 //可定制结果是否有余数 47 printf("请选择结果有无余数(是->1;否->0):"); 48 scanf("%d",&a[4]); 49 while((a[4]!=1)&(a[4]!=0)) //只能选择1或0 50 { 51 printf("请重新输入有效的数值:"); 52 scanf("%d",&a[4]); 53 }; 54 55 //可定制是否支持小数 56 printf("请选择是否支持小数(是->1;否->0):"); 57 scanf("%d",&a[5]); 58 while((a[5]!=1)&(a[5]!=0)) //只能选择1或0 59 { 60 printf("请重新输入有效的数值:"); 61 scanf("%d",&a[5]); 62 }; 63 64 //可定制是否加括号 65 printf("请选择是否加括号(是->1;否->0):"); 66 scanf("%d",&a[6]); 67 while((a[6]!=1)&(a[6]!=0)) //只能选择1或0 68 { 69 printf("请重新输入有效的数值:"); 70 scanf("%d",&a[6]); 71 }; 72 73 //循环打印符合要求的题目 74 for(i=0;i
三、运行结果:
四、心得体会:
1、编程过程中,一些基础的内容经常弄错、遗漏,比如输入、函数的定义等,需要练习加以巩固;
2、开始我想的是将每一个新设功能写一个函数,再用主函数调用,但是真正编写的时候,由于功能之间有交叉,这样变量的引用和调用就出现了问题,最后我将它们都写到主函数中,各个参数都一次声明。这样的优点是编程方便、调用简单,缺点是不够清晰明了,当程序再大一些的时候非常不方便,以后需要找到别的方法去解决这个问题;
3、我用的语言是C++,它的界面不如C#美观、友好,但是编程简单、方便。
五、PSP0级相关日志
1、项目计划日志:
周活动总结表
姓名:胡亚宝 日期:2015/3/13
日期\任务 | 听课 | 编写程序 | 阅读书本 | 考研复习 | 日总计 | |
周日 | ||||||
周一 | ||||||
周二 | 300 | 60 | 60 | 420 | ||
周三 | 100 | 25 | 40 | 60 | 225 | |
周四 | 200 | 210 | 30 | 440 | ||
周五 | 200 | 30 | 230 | |||
周六 | ||||||
周总结 | 800 | 325 | 130 | 60 | 1315 |
阶段时间和效率 周数:1
不包括上一周在内的累计时间
总计 | |||||
平均 | |||||
最大 | |||||
最小 |
以前各周的累计时间
总计 | 800 | 325 | 130 | 60 | 1315 |
平均 | 800 | 325 | 130 | 60 | 1315 |
最大 | 800 | 325 | 130 | 60 | 1315 |
最小 | 800 | 325 | 130 | 60 | 1315 |
2、时间记录日志:
学生:胡亚宝 日期:3/13
教师:王建民 课程: PSP
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/10 | 08:00 | 12:00 | 40 | 200 | 听课(软件工程、操作系统) | 课间休息 |
14:30 | 15:30 | 60 | 读书(梦断代码) | |||
16:10 | 18:00 | 10 | 100 | 听课(Windows高级编程) | 课间休息 | |
19:30 | 21:00 | 30 | 60 | 编写程序(升级版四则运算) | ||
3/11 | 08:00 | 09:50 | 10 | 100 | 听课(计算机网络) | 课间休息 |
10:00 | 11:10 | 10 | 60 | 考研复习 | ||
16:10 | 16:35 | 25 | 编写程序(升级版四则运算) | |||
21:00 | 21:40 | 40 | 读书(梦断代码) | |||
3/12 | 09:00 | 09:50 | 50 | 编写程序(升级版四则运算) | ||
10:10 | 12:00 | 10 | 100 | 听课(计算机接口技术) | 课间休息 | |
14:00 | 15:50 | 10 | 100 | 听课(嵌入式开发技术) | 课间休息 | |
16:10 | 19:50 | 60 | 160 | 编写程序(升级版四则运算) | 吃饭 | |
20:30 | 21:00 | 30 | 读书(梦断代码) | |||
3/13 | 08:00 | 12:00 | 40 | 200 | 听课(软件工程、操作系统) | 课间休息 |
14:30 | 15:00 | 30 | 编写程序(升级版四则运算) |
3、缺陷记录日志:
学生:胡亚宝 日期:3/13
教员:王建民 程序号:01
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复阶段 | 修复缺陷 |
3/10 | 1 | 001 | 设计 | 编译 | 10min | |
描述:设计程序时调用函数传参错误 | ||||||
2 | 002 | 设计 | 编译 | 1min | ||
描述:使用了某一函数没有它的头文件 | ||||||
3/11 | 3 | 003 | 编码 | 调试 | 5min | |
描述:使用do while循环时结构用错 | ||||||
3/12 | 4 | 004 | 编码 | 编译 | 1min | |
描述: 使用scanf输入时漏掉了“&” | ||||||
5 | 005 | 编码 | 编译 | 1min | ||
描述:使用某一变量没有提前声明 | ||||||
6 | 006 | 编码 | 编译 | 2min | ||
描述:使用数组时 ,整个数组和数组中某一元素弄混,导致出错 | ||||||
7 | 004 | 编码 | 编译 | 1min | ||
描述:使用scanf输入时漏掉了“&” | ||||||
3/13 | 8 | 007 | 编码 | 编译 | 1min | |
描述:判断条件的等于应该是“==”,而我错用了“=” |