源代码地址:http://git.oschina.net/junge212/25eubiqm170p3nzgj4yrh36.code.git
自动生成小学四则运算题目的命令行 “软件”,满足以下需求:
能随机生成整数0~10的四则运算和真分数的四则运算,并统计正确率
本程序分为主函数和三个分函数,主函数main()主要实现随机调用两个分函数zhengshu()和fenshu()并统计正确率,三个分函数分别为处理0~10的整数四则运算和处理真分数的分数四则运算函数;整数函数zhengshu()主要随机产生两个随机数和随机运算符并计算;分数函数fenshu()主要随机产生两个随机数和随机运算符并调用第三个分函数gcd()进行计算。
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "string.h"
int score=0;
int gcd(int x,int y) //求最大公约数函数
{
int r;
r=x%y;
while(r!=0)
{
x=y;
y=r;
r=x%y;
}
return y;
}
int zhengshu(){//求整数的四则运算
int left,mid,right,result,int_number;
srand((unsigned)time(NULL));
left=rand()%10;
mid=rand()%4;
right=rand()%10;
printf("%d",left);
switch(mid)
{
case(0):result=left+right;
printf(" + ");break;
case(1):result=left-right;
printf(" - ");break;
case(2):result=left*right;
printf(" ×");break;
case(3):result=left/right;
printf(" ÷");break;
}
printf("%d =",right);
scanf("%d",&int_number);
if(int_number == result)
{
printf("回答正确! 下一题:\n");
score=score+1;
}
else{
printf("回答错误! 下一题:\n");
}
}
int fenshu(){//求分数的四则运算
int left_x,left_y,mid,right_x,right_y,x,y,GYS,int_number1,int_number2;
srand((unsigned)time(NULL));
do{
left_x=rand()%10+1;
left_y=rand()%10+1;
mid=rand()%4;
right_x=rand()%10+1;
right_y=rand()%10+1;
}while(!(left_x<left_y&&right_x<right_y));
printf("%d/%d",left_x,left_y);
switch(mid)
{
case(0):x=left_x*right_y+left_y*right_x;
y=left_y*right_y;
printf(" + ");break;
case(1):x=left_x*right_y-left_y*right_x;
y=left_y*right_y;
printf(" - ");break;
case(2):x=left_x*right_x;
y=left_y*right_y;
printf(" ×");break;
case(3):x=left_x*right_y;
y=left_y*right_x;
printf(" ÷");break;
}
printf("%d/%d =",right_x,right_y);
GYS=gcd(x,y);
x=x/GYS;
y=y/GYS;
scanf("%d/%d",&int_number1,&int_number2);
if(int_number1==x&&int_number2==y)
{
printf("回答正确! 下一题:\n");
score=score+1;
}
else{
printf("回答错误! 下一题:\n");
}
}
int main(){//主函数——随机调用整数函数和分数函数
int h,count;
printf("请输入题目数?");
scanf("%d",&count);
for(int i=0;i<count;i++)
{
h=rand()%2;
if(h==0)
{zhengshu();}
else
{fenshu();}
}
printf("正确率为:%lf",score*1.0/count);
}
实验截图:

psp:
| PSP2.1 | Personal Software Process Stages | Time (m) Senior Student | Time (m) |
| Planning | 计划 | 8 | 10 |
| · Estimate | 估计这个任务需要多少时间 | 8 | 10 |
| Development | 开发 | 82 | 100 |
| · Analysis | 需求分析 (包括学习新技术) | 6 | 6 |
| · Design Spec | 生成设计文档 | 5 | 7 |
| · Design Review | 设计复审 | 4 | 6 |
| · Coding Standard | 代码规范 | 3 | 2 |
| · Design | 具体设计 | 10 | 20 |
| · Coding | 具体编码 | 36 | 20 |
| · Code Review | 代码复审 | 7 | 7 |
| · Test | 测试(自我测试,修改代码,提交修改) | 13 | 30 |
| Reporting | 报告 | 9 | 5 |
| · | 测试报告 | 3 | 3 |
| · | 计算工作量 | 2 | 2 |
| · | 并提出过程改进计划 | 3 | 1 |
e.小结
这次实验真是历经千辛万苦:(不过也总算基本成功了,感谢编写代码时多位同学的耐心指导;该程序还是有缺陷,没能实现显示正确答案,程序存在异常错误,可能存在程序崩溃:)
原文:http://www.cnblogs.com/212junge/p/6515903.html