题目:
请编写一个能自动生成小学四则运算题目的 “软件”。 让程序能接受用户输入答案,并判定对错。 最后给出总共 对/错 的数量。
需求分析:
-
基本功能
基本功能点1:实现小学四则运算;
基本功能点2:该程序能接受用户输入答案,并判断对错;
基本功能点3:给出总共对/错的数量。
设计
- 设计点1:用C语言编程环境实现程序代码的编写;
- 设计点2:随机产生两个数,分别用1,2,3,4表示计算加法,减法,乘法,除法,通过计算判断出计算的正确与否,并统计出正确与错误的个数。
代码实现
1 #include<stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 5 int main() 6 { 7 int x,y,all=0,r=0,e=0,result; 8 char z; 9 int m,n; 10 printf("欢迎来到小学计算器测试! "); 11 printf("请输入1到4其中一个数字(1表示加法,2表示减法,3表示乘法,4表示除法),当输入为q时,结束测试: "); 12 scanf("%d",&m); 13 srand( (unsigned)time( NULL ) ); 14 while ((z=getchar())!='q') 15 { 16 all++; 17 x=rand()%50;y=rand()%50; 18 if(m==1) 19 { 20 printf("%d+%d=",x,y); 21 scanf("%d",&z); 22 printf(" "); 23 if (x+y==z) r++; 24 else 25 e++; 26 } 27 else if(m==2) 28 { 29 printf("%d-%d=",x,y); 30 scanf("%d",&z); 31 if (x-y==z) r++; 32 else 33 e++; 34 } 35 else if(m==3) 36 { 37 printf("%d*%d=",x,y); 38 scanf("%d",&z); 39 if (x*y==z) r++; 40 else 41 e++; 42 } 43 else if(m==4) 44 { 45 printf("%d/%d=",x,y); 46 scanf("%d",&z); 47 if (x/y==z) r++; 48 else 49 e++; 50 } 51 else 52 printf("输入有误! "); 53 result=100*r/all; 54 } 55 printf("您的成绩为:%d ",result); 56 printf("您一共完了%d道题目,正确的有%d题,错误的有%d题 ",all,r,e); 57 if(result>=60){ 58 printf("成绩还不错,别骄傲哦! "); 59 } 60 else{ 61 printf("成绩有待提高,加油,别灰心哦! "); 62 } 63 return 0; 64 }
程序截图
加法:
减法:
乘法:
除法:
分析与总结
PSP耗时:
PSP | Personal Software Process Stage | Time(h) | Time(%) |
●Design | ●具体设计 | 10 | 20 |
●Coding | ●具体编码 | 20 | 40 |
●Code Review | ●代码复审 | 5 | 10 |
●Test | ●测试(自测,修改代码) | 10 | 20 |
●Postmortem & Process Improvement Plan |
●事后总结,并提出过程改进计划 | 5 | 10 |
总结:
1.编程是一个积累的过程,只要认真去思考,总会有解决问题的方法;
2.该程序的设计需要符合题目的要求,满足小学四则运算。