第三次作业(周静 李盼)
--题目:
- 请编写一个能自动生成小学四则运算题目的软件;
- 让程序能接受用户输入答案,并判定对错;
- 最后给出总共 对/错的数量。
--需求分析:
- 编写小学四则运算的测试系统,该系统能完成100以内的加、减、乘、除运算;
- 该系统能接受用户输入答案,并能自动判断对错;
- 当对用户输入的答案进行判断时,对错误的题目给出正确的答案;
- 在答题结束后,能自动输出用户答的总题数、答对题数、答错题数及所得分数。
--扩展功能:
1、四则运算中,除法保留两位小数;
2、还可以出表达式里含有负数的题目,形如2.00/(-6.00)=-0.33。
--对题目要求的分析:
1、修改原程序,使之符合 “代码风格和设计规范”的基本要求;
2、请采用模块化设计思想,修改之前的code,将 “计算功能” 封装起来;
3、并在C语言环境下对该程序进行封装,可将函数声明与具体实现分别存放在头文件(.h)和源文件(.c)中;
4、在第二次关于整型数的四则运算的基础上编写一个程序,可以实现含有负数,并能得出小数结果的四则运算。
--设计:
用一个主函数main(),while循环中调用函数run()统计做对的题目的个数;
用子函数 int run()产生随机数;
用子函数float n_input()产生浮点数的随机数,当中的 float t; t=rand()%100/10; k=rand()%2;可以实现四舍五入,保留两位小数;
用子函数void counts()产生计算功能。
--代码实现:
.cpp文件
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #include "1.h" 5 6 main() 7 { 8 9 srand(time(NULL)); 10 int k=10; 11 int t; 12 int right=0; 13 printf("欢迎进入四则运算测试系统!\n"); 14 while(k--) 15 { 16 if(run()==1) 17 right++; 18 } 19 printf("10道题您作对了%d道",right); 20 } 21 22 int run() 23 { 24 float sum1; 25 srand(time(NULL)); 26 a=n_input(); 27 c=ch[rand()%4]; 28 b=n_input(); 29 if(b>=0) 30 { 31 printf("%0.2f%c%0.2f=",a,c,b); 32 } 33 else 34 { 35 printf("%0.2f%c(%0.2f)=",a,c,b); 36 } 37 counts(); 38 //sum=(int)(sum*100+0.5)/100; 39 scanf("%f",&sum1); 40 printf("right = %0.2f\n",sum); 41 if(sum==sum1) 42 { 43 return 1; 44 } 45 else 46 { 47 return -1; 48 } 49 } 50 51 float n_input() 52 { 53 int k; 54 float t; 55 t=rand()%100/10; 56 k=rand()%2; 57 if(t==0) 58 { 59 return t; 60 } 61 else if(k==0) 62 { 63 return -t; 64 } 65 else 66 { 67 return t; 68 } 69 } 70 71 void counts() 72 { 73 switch(c) 74 { 75 case '+': 76 sum=a+b; 77 break; 78 case '-': 79 sum=a-b; 80 break; 81 case '*': 82 sum=a*b; 83 break; 84 case '/': 85 if(b!=0) 86 { 87 sum=a/b; 88 } 89 else 90 { 91 run(); 92 } 93 break; 94 95 } 96 }
.h文件
#include<stdio.h> #include<stdlib.h> float a,b; float sum; char ch[4]={'+','-','*','/'}; char c; int run(); float n_input(); void counts();
.h 文件:
void counts() { switch(c) { case '+': sum=a+b; break; case '-': sum=a-b; break; case '*': sum=a*b; break; case '/': if(b!=0) { sum=a/b; } else { run(); } break; } }
--运行结果:
--代码规范设计和风格讨论:
代码风格的原则:简明、易读、无二义性
注意缩进、括号对应、不把多条语句放在一行。
--两人的合作步骤:
1、在做作业之前两人先各自看4.1和4.2的内容
2、两人一起讨论对程序做哪些方面的改进,功能需求分析及设计
3、讨论之后两人开始编程,一人按之前拟定的方案编程,一人在旁边检查,看看代码是否符合规范,还有是否有编写错误等小细节错误
4、完成代码编写后进行调试,之后两人一起检查错误,讨论并改正。
5、对代码进行复审
--总结:
1、这次作业需要对题目进行分析,锻炼我们的分析解决问题的能力,让我们知道分析的重要性;
2、在编写程序时出现许多错误,这需要我们两人合作解决错误,让代码得以完善;
3、这次作业也让我们体会到了合作的重要性。
-- PSP耗时:
步骤 |
耗时(小时) |
百分比 |
查看资料 |
6 |
0.25 |
需求分析 |
2 |
0.08 |
设计 |
4 |
0.17 |
拟定方案 |
1 |
0.04 |
编写代码 |
5 |
0.21 |
调试复审 |
5 |
0.21 |
进行封装 |
1 |
0.04 |
小组成员:周静 李盼