一、作业信息
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377 |
这个作业的目标 | 能对需求进行分析并实现;编码格式规范;学习博客撰写 |
学号 | 3180701314 |
二、作业要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
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 zhengshu_jia()//整数加法
{
int x,y,result1=0,result;
x=rand()%200;
y=rand()%200;
result=x+y;
printf("请输入%d+%d的结果:",x,y);
scanf("%d,&result1");
if(result==result1){
printf("结果正确,加一分
");
mark++;
}
else{
printf("结果错误,减一分
");
mark--;
}
}
void zhengshu_jian()//整数减法
{
int x,y,result1,result;
x=rand()%200;
y=rand()%200;
result=x-y;
printf("请输入%d-%d的结果:",x,y);
scanf("%d",&result1);
if(result-result1==0){
printf("结果正确,加一分
");
mark++;
}
else{
printf("结果错误,减一分
");
mark--;
}
}
void zhengshu_cheng()//整数乘法
{
int x,y,result1,result;
x=rand()%200;
y=rand()%200;
result=x*y;
printf("请输入%d*%d的结果:",x,y);
scanf("%d",&result1);
if(result==result1){
printf("结果正确,加一分
");
mark++;
}
else{
printf("结果错误,减一分
");
mark--;
}
}
void zhengshu_chu()//整数除法
{
int x,y,result1,result;
x=rand()%200;
y=rand()%200;
result=x/y;
printf("请输入%d/%d的结果:",x,y);
scanf("%d",&result1);
if(result==result1){
printf("结果正确,加一分
");
mark++;
}
else{
printf("结果错误,减一分
");
mark--;
}
}
分数的加减乘除运算
void fenshu_jia()//分数加法
{
int x1,x2,y1,y2,s,t,end;
char z;
x1=rand()%100;
x2=rand()%100;
y1=x1+rand()%100+1;
y2=x2+rand()%100+1;
end=(x1*y2+x2*y1)/(y1*y2);
printf("请输入%d/%d+%d/%d的结果:",x1,y1,x2,y2);
scanf("%d%c%d",&s,&z,&t);
if((x1*y2+x2*y1)==s&&(y1*y2)==t){
printf("结果正确,加一分
");
mark++;
}
else{printf("结果错误,减一分
");
mark--;
}
}
void fenshu_jian()//分数减法
{
int x1,x2,y1,y2,s,t,end;
char z;//代表分数中的/,end代表最终结果
x1=rand()%100;
x2=rand()%100;
y1=x1+rand()%100+1;
y2=x2+rand()%100+1;
end=(x1*y2-x2*y1)/(y1*y2);
printf("请输入%d/%d-%d/%d的结果:",x1,y1,x2,y2);
scanf("%d%c%d",&s,&z,&t);
if((x1*y2-x2*y1)==s&&(y1*y2)==t){
printf("结果正确,加一分
");
mark++;
}
else{printf("结果错误,减一分
");
mark--;
}
}
void fenshu_cheng()//分数乘法
{
int x1,x2,y1,y2,s,t,end;
char z;
x1=rand()%100;
x2=rand()%100;
y1=x1+rand()%100+1;
y2=x2+rand()%100+1;
end=(x1*x2)/(y1*y2);
printf("请输入%d/%d * %d/%d的结果:",x1,y1,x2,y2);
scanf("%d%c%d",&s,&z,&t);
if((x1*x2)==s&&(y1*y2)==t){
printf("结果正确,加一分
");
mark++;
}
else{printf("结果错误,减一分
");
mark--;
}
}
void fenshu_chu()//分数除法
{
int x1,x2,y1,y2,s,t,end;
char z;
x1=rand()%100;
x2=rand()%100;
y1=x1+rand()%100+1;
y2=x2+rand()%100+1;//随机取值
end=((x1*y2)/(x2*y1));
printf("请输入%d/%d / %d/%d的结果:",x1,y1,x2,y2);
scanf("%d%c%d",&s,&z,&t);
if((x1*y2+x2*y1)==s&&(y1*y2)==t){
printf("结果正确,加一分
");
mark++;
}
else{printf("结果错误,减一分
");
mark--;
}
}
void main()//主函数
{
int choose;
printf("**********整数与分数的四则运算法则**********
");
printf("1.整数的加减乘除运算
");
printf("2.分数的加减乘除运算
");
printf("请选择:");
scanf("%d",&choose);
switch(choose)
{
int choose1;
int choose2;
case 1:
printf("
整数运算
");
printf("
1.加法2.减法3.乘法4.除法
");
scanf("%d",&choose1);
switch(choose1)//选择运算类型
{
case 1:
zhengshu_jia();
break;
case 2:
zhengshu_jian();
break;
case 3:
zhengshu_cheng();
break;
case 4:
zhengshu_chu();
break;
}
break;
case 2:
printf("
分数运算
");
printf("
1.加法2.减法3.乘法4.除法
");
scanf("%d",&choose2);
switch(choose2)
{
case 1:
fenshu_jia();
break;
case 2:
fenshu_jian();
break;
case 3:
fenshu_cheng();
break;
case 4:
fenshu_chu();
break;
}
break;
}
}
整数与分数加法截图:
整数与分数减法截图:
整数与分数乘法截图:
整数与分数除法截图:
主菜单截图:
四、个人小结
第一次使用markdown,和word感觉差别还是很大,需要自己添加特殊符号,主要对标题与代码进行了优化,要比不优化好看许多。
(psp表格)
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 40 | 50 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 10 |
Development | 开发 | 200 | 250 |
Analysis | 需求分析(包括学习新技术) | 30 | 25 |
Design Spec | 生成设计文档 | 30 | 20 |
Design Review | 设计复审 | 10 | 15 |
Coding Standard | 代码规范 | 20 | 20 |
Design | 具体设计 | 30 | 32 |
Coding | 具体编码 | 40 | 45 |
Code Review | 代码复审 | 5 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 40 | 45 |
Reporting | 报告 | 15 | 25 |
Test Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工作量 | 5 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 15 | 12 |