博客班级 | 软件工程 |
---|---|
作业要求 | 实现小学四则运算 |
作业目标 | 学会博客园简单的使用方法 |
学号 | 3180701333 |
题目要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24
2)程序要求能处理用户的输入,判断对错,累积分数
3)程序支持可以由用户自行选择加、减、乘、除运算
4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目
代码提交
加法
if(a==1)
{
printf("5,一位数加一位数
");
printf("6,一位数加两位数
");
printf("7,两位数加两位数
");
printf("*********************************请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
loop:b=rand()%10;
c=rand()%10;
d=b+c;
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto loop;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
loo: b=rand()%10;
c=rand()%100;
if (c<10) c=c+10;
d=b+c;
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto loo;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
loog:b=rand()%100;
c=rand()%100;
if(c<10) c=c+10;
if(b<10) b=b+10;
d=b+c;
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto loog;
if(f==1)
printf("欢迎再次使用!");
}
}
减法
if(a==2)
{
printf("5,一位数减一位数
");
printf("6,两位数减一位数
");
printf("7,两位数减两位数
");
printf("请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
car: b=rand()%10;
c=rand()%10;
d=b-c;
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto car;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
truck:b=rand()%100;
if(b<10) b=b+10;
c=rand()%10;
d=b-c;
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto truck;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
boat:b=rand()%100;
if(b<10) b=b+10;
c=rand()%100;
if(c<10) c=c+10;
d=b-c;
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto boat;
if(f==1)
printf("欢迎再次使用!");
}
}
乘法
if(a==3)
{
printf("5,一位数乘一位数
");
printf("6,一位数乘两位数
");
printf("7,两位数乘两位数
");
printf("请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
life:b=rand()%10;
c=rand()%10;
d=b*c;
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto life;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
shame:b=rand()%100;
if(b<10) b=b+10;
c=rand()%10;
d=b*c;
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto shame;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
yeah:b=rand()%100;
c=rand()%100;
if(b<10) b=b+10;
if(c<10) c=c+10;
d=b*c;
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto yeah;
if(f==1)
printf("欢迎再次使用!");
}
}
除法
if(a==4)
{
printf("5,一位数除一位数
");
printf("6,两位数除一位数
");
printf("7,两位数除两位数
");
printf("请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
hit: b=rand()%10;
c=rand()%10;
{if (b>c)
{
g=b%c;
if (g!=0)
{
b=b-g;
d=b/c;
printf("%d/%d=?
",b,c);
}
else d=b/c;
printf("%d/%d=?
",b,c);
}
if (c>b)
{
g=c%b;
if (g!=0)
{
c=c-g;
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
else
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
printf("请输入答案:");
scanf("%d",&e);}
while(e!=d)
{
printf("回答错误,请重做");
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto hit;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
haha:b=rand()%100;
c=rand()%10;
if(b<10)
b=b+10;
g=b%c;
if (g!=0)
b=b-g;
d=b/c;
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto haha;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
over:b=rand()%100;
c=rand()%100;
if(b<10) b=b+10;
if(c<10) c=c+10;
if (b>c)
{
g=b%c;
if (g!=0)
{
b=b-g;
d=b/c;
printf("%d/%d=?
",b,c);
}
else
{
d=b/c;
printf("%d/%d=?
",b,c);
}
}
if (c>b)
{
g=c%b;
if (g!=0)
{
c=c-g;
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
else
{
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
}
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto over;
if(f==1)
printf("欢迎再次使用!");
}
运行截图
个人小结
psp1.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 30 |
Development | 开发 | 300 | 300 |
Analysis | 需求分析(包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 20 | 20 |
Design Review | 设计复审 | 20 | 20 |
Coding Standard | 代码规范 | 10 | 10 |
Design | 具体设计 | 180 | 180 |
Coding | 具体编码 | 240 | 240 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 10 | 10 |
Test Report | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 | 20 |
小结
通过这次编程练习,我深刻认识到了自己编程能力的不足,我要在今后的学习中多多锻炼自己这方面的能力!
源码
#include"stdio.h"
#include"stdlib.h"
void main()
{
int a,b,c,d,e,f,g,t;
printf("****************************欢迎使用!************************
");
printf("
");
printf("1.加法运算
");
printf("2.减法运算
");
printf("3.乘法运算
");
printf("4.除法运算
");
printf("*****************************请选择运算类型:");
scanf("%d",&a);
while(a<1||a>4)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==1)
{
printf("5,一位数加一位数
");
printf("6,一位数加两位数
");
printf("7,两位数加两位数
");
printf("*********************************请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
loop:b=rand()%10;
c=rand()%10;
d=b+c;
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto loop;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
loo: b=rand()%10;
c=rand()%100;
if (c<10) c=c+10;
d=b+c;
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto loo;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
loog:b=rand()%100;
c=rand()%100;
if(c<10) c=c+10;
if(b<10) b=b+10;
d=b+c;
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d+%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto loog;
if(f==1)
printf("欢迎再次使用!");
}
}
if(a==2)
{
printf("5,一位数减一位数
");
printf("6,两位数减一位数
");
printf("7,两位数减两位数
");
printf("请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
car: b=rand()%10;
c=rand()%10;
d=b-c;
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto car;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
truck:b=rand()%100;
if(b<10) b=b+10;
c=rand()%10;
d=b-c;
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto truck;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
boat:b=rand()%100;
if(b<10) b=b+10;
c=rand()%100;
if(c<10) c=c+10;
d=b-c;
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d-%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto boat;
if(f==1)
printf("欢迎再次使用!");
}
}
if(a==3)
{
printf("5,一位数乘一位数
");
printf("6,一位数乘两位数
");
printf("7,两位数乘两位数
");
printf("请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
life:b=rand()%10;
c=rand()%10;
d=b*c;
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto life;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
shame:b=rand()%100;
if(b<10) b=b+10;
c=rand()%10;
d=b*c;
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto shame;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
yeah:b=rand()%100;
c=rand()%100;
if(b<10) b=b+10;
if(c<10) c=c+10;
d=b*c;
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d*%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto yeah;
if(f==1)
printf("欢迎再次使用!");
}
}
if(a==4)
{
printf("5,一位数除一位数
");
printf("6,两位数除一位数
");
printf("7,两位数除两位数
");
printf("请输入题型:");
scanf("%d",&a);
while(a<5||a>7)
{
printf("输入错误,请重新输入");
scanf("%d",&a);
}
if(a==5)
{
hit: b=rand()%10;
c=rand()%10;
{if (b>c)
{
g=b%c;
if (g!=0)
{
b=b-g;
d=b/c;
printf("%d/%d=?
",b,c);
}
else d=b/c;
printf("%d/%d=?
",b,c);
}
if (c>b)
{
g=c%b;
if (g!=0)
{
c=c-g;
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
else
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
printf("请输入答案:");
scanf("%d",&e);}
while(e!=d)
{
printf("回答错误,请重做");
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto hit;
if(f==1)
printf("欢迎再次使用!");
}
if(a==6)
{
haha:b=rand()%100;
c=rand()%10;
if(b<10)
b=b+10;
g=b%c;
if (g!=0)
b=b-g;
d=b/c;
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto haha;
if(f==1)
printf("欢迎再次使用!");
}
if(a==7)
{
over:b=rand()%100;
c=rand()%100;
if(b<10) b=b+10;
if(c<10) c=c+10;
if (b>c)
{
g=b%c;
if (g!=0)
{
b=b-g;
d=b/c;
printf("%d/%d=?
",b,c);
}
else
{
d=b/c;
printf("%d/%d=?
",b,c);
}
}
if (c>b)
{
g=c%b;
if (g!=0)
{
c=c-g;
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
else
{
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
",b,c);
}
}
scanf("%d",&e);
while(e!=d)
{
printf("回答错误,请重做");
printf("%d/%d=?
",b,c);
printf("请输入答案:");
scanf("%d",&e);
}
printf("回答正确!是否做下一题?
");
printf("输入0表示是,输入1表示否
");
scanf("%d",&f);
if(f==0)
goto over;
if(f==1)
printf("欢迎再次使用!");
}
}
}