四则运算
一.作业规范要求
博客班级 | 班级链接 |
---|---|
作业要求 | 作业链接 |
作业目标 | 学习markdown的语法编辑及培养编程能力 |
学号 | 3180701138 |
二.题目要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24
2)程序要求能处理用户的输入,判断对错,累积分数
3)程序支持可以由用户自行选择加、减、乘、除运算
4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目
三.代码提交
include<stdio.h>
include<time.h>
include<stdlib.h>
include<string.h>
define MAXSIZE 100
void Add(double anw,int state);
void Subt(double anw,int state);
void Mulpt(double anw,int state);
void Div(double anw,int state);
void AnwserClear(double arry,int n);
void main()
{
int i,subNum,select,state=0,num;
int grade=0,m=1;
double anwDou[MAXSIZE],anwInput[MAXSIZE];
printf("\n\n\n\t\t欢迎使用沙雕小学四则运算题目生成程序\n");
printf("\t\t\t1.加法运算\n");
printf("\t\t\t2.减法运算\n");
printf("\t\t\t3.乘法运算\n");
printf("\t\t\t4.除法运算\n");
printf("\t\t\t5.自由生成\n");
printf("\t\t\t0.退出\n");
printf("\n\n\t\t注:分数运算结果保留2位小数***\n");
printf("输入1、2、3、4、5、0:");
srand((unsigned int)time(0));
while(m)
{
//system("cls");
scanf("%d",&select);
printf("请输入生成的题目数量:");
scanf("%d",&subNum);
switch(select)
{
case 1:
for(i=0;i<subNum;i++)
{
Add(anwDou,state);
state++;
}
break;
case 2:
for(i=0;i<subNum;i++)
{
Subt(anwDou,state);
state++;
}
break;
case 3:
for(i=0;i<subNum;i++)
{
Mulpt(anwDou,state);
state++;
}
break;
case 4:
for(i=0;i<subNum;i++)
{
Div(anwDou,state);
state++;
}
break;
case 5:
for(i=0;i<subNum;i++)
{
num=rand()%4+1;
switch(num)
{
case 1:
Add(anwDou,state);
state++;
break;
case 2:
Subt(anwDou,state);
state++;
break;
case 3:
Mulpt(anwDou,state);
state++;
break;
case 4:
Div(anwDou,state);
state++;
break;
}
}
case 0:
m=0;
break;
}
printf("请输入你的答案:\n");
for(i=0;i<subNum;i++)
{
printf("%d.",i+1);
scanf("%d",&anwInput[i]);
}
for(i=0;i<subNum;i++)
if((anwDou[i]*100-anwInput[i]*100)/1==0)
grade++;
printf("你的成绩是%d",grade);
AnwserClear(anwDou,state);
state=0;
getchar();
}
}
void Add(double anw,int state)
{
int num1,num2,num3,m1,m2;
srand((unsigned int)time(0));
num1=rand()%100+1;
num2=rand()%100+1;
num3=rand()%2+1;
switch(num3)
{
case 1:
printf("%d. %d+%d\n",state+1,num1,num2);
anw[state]=(double)num1+num2;
break;
case 2:
m1=rand()%(num1-1)+1;
m2=rand()%(num2-1)+1;
printf("%d. %d/%d+%d/%d",m1,num1,m2,num2);
anw[state]=(m1num2+m2num1)/(double)(num1num2);
break;
}
}
void Subt(double anw,int state)
{
int num1,num2,num3,m1,m2;
srand((unsigned int)time(0));
num1=rand()%100+1;
num2=rand()%100+1;
num3=rand()%2+1;
switch(num3)
{
case 1:
if(num1>num2)
{
printf("%d. %d-%d\n",state+1,num1,num2);
anw[state]=(double)num1-num2;
}
else
{
printf("%d. %d-%d\n",state+1,num2,num1);
anw[state]=(double)num2-num1;
}
break;
case 2:
m1=rand()%(num1-1)+1;
m2=rand()%(num2-1)+1;
if((m1/(double)num1)>(m2/(double)num2))
{
printf("%d. %d/%d-%d/%d",state+1,m1,num1,m2,num2);
anw[state]=(m1num2-m2num1)/(double)(num1num2);
}
else
{
printf("%d. %d/%d-%d/%d",state+1,m2,num2,m1,num1);
anw[state]=(m2num1-m1num2)/(double)(num1num2);
}
break;
}
}
void Mulpt(double anw,int state)
{
int num1,num2,num3,m1,m2;
srand((unsigned int)time(0));
num1=rand()%100+1;
num2=rand()%100+1;
num3=rand()%2+1;
switch(num3)
{
case 1:
printf("%d. %d%d\n",state+1,num1,num2);
anw[state]=(double)num1num2;
break;
case2:
m1=rand()%(num1-1)+1;
m2=rand()%(num2-1)+1;
printf("%d. (%d/%d)(%d/%d)",m1,num1,m2,num2);
anw[state]=(m1m2)/(double)(num1num2);
break;
}
}
void Div(double anw,int state)
{
int num1,num2,num3,m1,m2;
srand((unsigned int)time(0));
num1=rand()%100+1;
num2=rand()%100+1;
num3=rand()%2+1;
switch(num3)
{
case 1:
printf("%d. %d/%d\n",state+1,num1,num2);
anw[state]=(double)num1/num2;
break;
case2:
m1=rand()%(num1-1)+1;
m2=rand()%(num2-1)+1;
printf("%d. (%d/%d)/(%d/%d)",m1,num1,m2,num2);
anw[state]=(m1num2)/(double)(num1m2);
break;
}
}
void AnwserClear(double *arry,int n)
{
int i;
for(i=0;i<n;i++)
arry[i]=0;
}
四.个人小结
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 25 | 30 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 10 |
Development | 开发 | 120 | 240 |
Analysis | 需求分析(包括学习新技术) | 12 | 24 |
Design Spec | 生成设计文档 | 5 | 8 |
Design Review | 设计复审 | 5 | 8 |
Coding Standard | 代码规范 | 3 | 5 |
Design | 具体设计 | 10 | 10 |
Coding | 具体编码 | 40 | 45 |
Code Review | 代码复审 | 5 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 |
Reporting | 报告 | 10 | 15 |
Test Report | 测试报告 | 5 | 8 |
Size Measurement | 计算工作量 | 10 | 20 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 10 | 20 |
个人小结:通过学习明白了MarkDown是一种简单方便的标记语法,可以边写边预览效果,创建容易且使用简单。