| 博客班級 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
| ---- | ---- | ---- |
| 作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377 |
| 作业目标 | 完成四则运算并有一定的拓展 |
| 学号 |3180701114 |
题目要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24
2)程序要求能处理用户的输入,判断对错,累积分数
3)程序支持可以由用户自行选择加、减、乘、除运算
4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目
代码部分
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<windows.h>
int sum=0;
整数加法
void zhengshujiafa()//整数加法
{
int i,j,m;
srand(time(NULL));
i=rand()%100;
j=rand()%100;
printf("%d+%d=",i,j);
scanf("%d",&m);
if(i+j==m)
{printf("回答正确");
sum++;}
else printf("回答错误\n%d+%d=%d\n",i,j,i+j);
}
整数减法
void zhengshujianfa()//整数减法
{
int i,j,n;
i=rand()%100;
j=rand()%100;
printf("%d-%d=",i,j);
scanf("%d",&n);
if(i-j==n)
{printf("回答正确");
sum++;}
else
printf("回答错误\n%d-%d=%d\n",i,j,i-j);
}
整数乘法
void zhengshuchengfa()//整数乘法
{
int i,j,o;
i=rand()%100;
j=rand()%100;
printf("%d*%d=",i,j);
scanf("%d",&o);
if(i*j==o)
{printf("回答正确");
sum++;}
else
printf("回答错误\n%d*%d=%d\n",i,j,i*j);
}
整数除法
void zhengshuchufa()//整数除法
{
int i,j,p;
i=rand()%100;
j=rand()%100;
printf("%d/%d=",i,j);
scanf("%d",&p);
if(i/j==p)
{printf("回答正确");
sum++;}
else printf("回答错误\n%d/%d=%d\n",i,j,i/j);
}
分数加法
void fenshujiafa()//分数加法
{
int a,b,c,d;
int j,k,m;
char l;
a=rand()%10;
b=rand()%10+1;
do
{
b=rand()%10+1;
}while(a>=b);
c=rand()%10;
d=rand()%10+1;
do
{
d=rand()%10+1;
}while(c>=d);
printf("%d/%d+%d/%d= \n",a,b,c,d);
a=(a*d)+(c*b);
b=b*d;
//化简
if(a<b)
{
for(m=a;m>=1;m--)
{
if((a%m==0)&&(b%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
else if(a==b)
{
scanf("%d",&j);
if(j==1)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为1\n");
}
else
{
for(m=b;m>=1;m--)
{
if((b%m==0)&&(a%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
//printf("您的得分为:%d\n",scr);
}
分数减法
void fenshujianfa()//分数减法
{
int a,b,c,d;
int j,k,m;
char l;
a=rand()%10;
b=rand()%10+1;
do
{
b=rand()%10+1;
}while(a>=b);
c=rand()%10;
d=rand()%10+1;
do
{
d=rand()%10+1;
}while(c>=d);
printf("%d/%d-%d/%d= \n",a,b,c,d);
a=(a*d)-(c*b);
b=b*d;
//化简
if(a<b)
{
for(m=a;m>=1;m--)
{
if((a%m==0)&&(b%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
else if(a==b)
{
scanf("%d",&j);
if(j==1)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为1\n");
}
else
{
for(m=b;m>=1;m--)
{
if((b%m==0)&&(a%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
//printf("您的得分为:%d\n",scr);
}
分数乘法
void fenshuchengfa()//分数乘法
{
int a,b,c,d;
int j,k,m;
char l;
a=rand()%10;
b=rand()%10+1;
while(a>=b)
{
b=rand()%10+1;
}
c=rand()%10;
d=rand()%10+1;
while(c>=d)
{
d=rand()%10+1;
}
printf("%d/%d*%d/%d= \n",a,b,c,d);
a=a*c;
b=b*d;
//化简
if(a<b)
{
for(m=a;m>=1;m--)
{
if((a%m==0)&&(b%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
else if(a==b)
{
scanf("%d",&j);
if(j==1)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为1\n");
}
else
{
for(m=b;m>=1;m--)
{
if((b%m==0)&&(a%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
分数除法
//printf("您的得分为:%d\n",scr);
}
void fenshuchufa()//分数除法
{
int a,b,c,d;
int j,k,m;
char l;
a=rand()%10;
b=rand()%10+1;
while(a>=b)
{
b=rand()%10+1;
}
c=rand()%10;
d=rand()%10+1;
while(c>=d)
{
d=rand()%10+1;
}
printf("%d/%d / %d/%d= \n",a,b,c,d);
a=a*d;
b=b*c;
//化简
if(a<b)
{
for(m=a;m>=1;m--)
{
if((a%m==0)&&(b%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
else if(a==b)
{
scanf("%d",&j);
if(j==1)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为1\n");
}
else
{
for(m=b;m>=1;m--)
{
if((b%m==0)&&(a%m==0))
{
a=a/m;
b=b/m;
}
}
scanf("%d%c%d",&j,&l,&k);
if(l=='/')
{
if(j==a&&k==b)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!正确答案为%d/%d\n",a,b);
}
}
//printf("您的得分为:%d\n",scr);
}
主函数
void main()
{
int shuru=0;
char x;
system("color 11");
printf(" 欢迎参加小学生数学四项法则测试\n");
while (1)
{
printf("你需要做什么题型计算?请选择:\n");
printf(" 整数加法(输入1) 整数减法(输入2) 整数乘法(输入3) 整数除法(输入4)\n");
printf(" 分数加法(输入5) 分数减法(输入6) 分数乘法(输入7) 分数除法(输入8)\n");
if(shuru==0)
scanf("%c",&x);//
switch(x)
{
case '1': zhengshujiafa();break;
case '2': zhengshujianfa();break;
case '3': zhengshuchengfa();break;
case '4': zhengshuchufa();break;
case '5':fenshujiafa();break;
case '6':fenshujianfa();break;
case '7':fenshuchengfa();break;
case '8':fenshuchufa();break;
default : printf("输入错误,请重新输入");
}
printf("请输入数字选择:\n1.继续\n2.重新选择题型\n3.结束\n");
scanf("%d",&shuru);
if(shuru==1) shuru=1;
if(shuru==2) shuru=0;
if(shuru==3) break;
}
printf("最后得分为%d分",sum);
}
psp
psp2.1 | 任务内容 | 计划需要完成的时间(min | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 300 | 360 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 360 | 360 |
Development | 开发 | 20 | 15 |
Analysis | 需求分析(包括学习新技术) | 30 | 30 |
Design Spec | 生成设计文档 | 40 | 30 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范 | 20 | 15 |
Design | 具体设计 | 20 | 10 |
Coding | 具体编码 | 100 | 120 |
Code Review | 代码复审 | 10 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 15 |
Reporting | 报告 | 20 | 20 |
Test Report | 测试报告 | 20 | 15 |
Size Measurement | 计算工作量 | 20 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 | 20 |
心得体会
此次代码设计让我更加了解随机数以及如何计算分数,使我解决问题与多了一种思路。此次做的并不算完美,希望以后可以做的更好。