四则运算

一.作业规范要求

博客班级 班级链接
作业要求 作业链接
作业目标 学习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]=(m1
num2+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]=(m1
num2-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)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]=(m1
m2)/(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]=(m1
num2)/(double)(num1
m2);
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是一种简单方便的标记语法,可以边写边预览效果,创建容易且使用简单。

posted @ 2020-11-07 23:53  蹳鵀  阅读(220)  评论(0编辑  收藏  举报