自动生成四则运算
一.作业规范要求
发布一篇随笔,使用markdown语法进行编辑
文字准确,样式清晰
请在本次及之后的每次作业随笔的最前面加上以下内容
博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377 |
作业目标 | <编写一个可以自动生成支持整数和真分数的四则运算题目的程序;能够精准高效完成四则运算并输出结果;迅速理解需求定制功能> |
学号 | <3180701121> |
二.题目要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
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>
int mark=0;
整数加法
void zhengadd()
{
int a,b,c;
a=rand()%100;
b=rand()%100+1;
printf("请输入你的答案:%d + %d = ",a,b);
scanf("%d",&c);
if(a+b==c)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
整数减法
void zhengsub()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请输入你的答案:%d - %d = ",a,b);
scanf("%d",&c);
if(a-b==c)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
整数乘法
void zhengmul()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请输入你的答案: %d * %d = ",a,b);
scanf("%d",&c);
if(a*b==c)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
整数除法
void zhengdiv()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请输入你的答案: %d / %d = ",a,b);
scanf("%d",&c);
if(a/b==c)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
约分
int yuefen(int fenzi,int fenmu)
{
int da=fenzi,xiao=fenmu;
if(da<xiao)
{
int t=da;
da=xiao;
xiao=t;
}
while(da%xiao!=0)
{
da=da/xiao;
if(da<xiao)
{
int t=da;
da=xiao;
xiao=t;
}
}
return xiao;
}
分数加法
void fenadd()
{
int n1,n2,m1,m2,zuida,M1,M,N1,N;//
char v;
n1=rand()%100;
m1=n1+rand()%100+1;
n2=rand()%100;
m2=n2+rand()%100+1;
M=m1*m2;
N=n1*m2+n2*m1;
zuida=yuefen(N,M);
if(zuida!=1)
{
N=N/zuida;
M=M/zuida;
}
printf("请输入你的答案:%d/%d + %d/%d = ",n1,m1,n2,m2);
scanf("%d%c%d",&N1,&v,&M1);
if(N==N1&&M==M1)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
分数减法
void fensub()
{
int n1,n2,m1,m2,zuida,M1,M,N1,N;//
char v;
n1=rand()%100;
m1=n1+rand()%100+1;
n2=rand()%100;
m2=n2+rand()%100+1;
M=m1*m2;
N=n1*m2-n2*m1;
zuida=yuefen(N,M);
if(zuida!=1)
{
N=N/zuida;
M=M/zuida;
}
printf("请输入你的答案:%d/%d - %d/%d = ",n1,m1,n2,m2);
scanf("%d%c%d",&N1,&v,&M1);
if(N==N1&&M==M1)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
分数乘法
void fenmul()
{
int n1,n2,m1,m2,zuida,M1,M,N1,N;//
char v;
n1=rand()%100;
m1=n1+rand()%100+1;
n2=rand()%100;
m2=n2+rand()%100+1;
M=m1*m2;
N=n1*n2;
zuida=yuefen(N,M);
if(zuida!=1)
{
N=N/zuida;
M=M/zuida;
}
printf("请输入你的答案:%d/%d * %d/%d = ",n1,m1,n2,m2);
scanf("%d%c%d",&N1,&v,&M1);
if(N==N1&&M==M1)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
分数除法
void fendiv()
{
int n1,n2,m1,m2,zuida,M1,M,N1,N;//
char v;//用来表示分数中的"/"
n1=rand()%100;
m1=n1+rand()%100+1;
n2=rand()%100;
m2=n2+rand()%100+1;
M=m1*n2;
N=n1*m2;
zuida=yuefen(N,M);
if(zuida!=1)
{
N=N/zuida;
M=M/zuida;
}
printf("请输入你的答案:%d/%d / %d/%d = ",n1,m1,n2,m2);
scanf("%d%c%d",&N1,&v,&M1);
if(N==N1&&M==M1)
{
printf("输入正确\n");
mark++;
}
else
{
printf("输入错误\n");
}
}
整数选择
int zhengcount()
{
int c1;
printf("选择你测试的运算:加:1 减:2 乘:3 除:4\n");
scanf("%d",&c1);
switch(c1)
{
case 1:
zhengadd();
break;
case 2:
zhengsub();
break;
case 3:
zhengmul();
break;
case 4:
zhengdiv();
break;
default:
printf("输入错误!");
break;
}
return 0;
}
分数选择
int fencount()
{
int c2;
printf("选择你测试的运算:加:1 减:2 乘:3 除:4\n");
scanf("%d",&c2);
switch(c2)
{
case 1:
fenadd();
break;
case 2:
fensub();
break;
case 3:
fenmul();
break;
case 4:
fendiv();
break;
default:
printf("输入错误!");
break;
}
return 0;
}
主函数
void main()
{
int c,s=1,sum,i=0;
printf("-----------四则运算--------------\n");
printf("请生成题数:");
scanf("%d",&sum);
while(s)
{
if(s==1)
{
if(i==sum)
{
printf("\n答题结束!\n");
break;
}
printf("\n整数运算还是真分数运算?\n整数运算1 真分数运算2 退出3 \n");
printf("请输入: ");
scanf("%d",&c);
if(c==3)
{
s=0;
break;
}
switch(c)
{
case 1:
zhengcount();
i++;
break;
case 2:
fencount();
i++;
break;
default:
printf("错误输入项!");
s=0;
break;
}
}
if(s==0)
break;
}
printf("分数为%d",mark);
}
四.个人小结
1)在软件开发中,掌握时间是一个很重要的技能,请通过psp表格做到:
2)此次的博客园注册与作业的完成,都让我对于代码学习有了新的认识,通过博客园可以更好地总结自己所学习到的知识,四则运算的编写也是最为基础的算法,但是在写的时候,仍然会出现大量的问题,这些问题有大有小,都是值得自己关注的,比如对于整数进行约分,并且区分分数和整数的计算函数,自己还是要不断地来编写代码来提升自己的编程能力。