小学四则运算 一、题目要求 二、代码 三、运行界面 四、个人小结


博客班级 AHPU软件工程
作业要求 实现小学四则运算
作业目标
学号 3180701211

写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

2)程序要求能处理用户的输入,判断对错,累积分数

3)程序支持可以由用户自行选择加、减、乘、除运算

4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

二、代码

1.整数加法

void add()
{
	int s=0;
	int a,b,c,n;
	//输入要生成的题目数量
	printf("	请输入要生成的题目数量:");
	scanf("%d",&n);
	while(s<n)
	{
		srand(time(0));
		a=rand()%100;
		b=rand()%100;
		c = a + b ;
		printf("	%d+%d=",a,b);
		scanf("%d",&sum);
		if(sum==c)
		{
			printf("	回答正确!
");
			right++;
		}
		else
		{
			printf("	回答错误!
");
			wrong++;
		}
		s++;
	}
	printf("	答对了%d题,打错了%d题
",right,wrong);
}

2.整数减法

void sub()
{
	int s=0;
	int a,b,c,n,q;
	//输入要生成的题目数量
	printf("	请输入要生成的题目数量:");
	scanf("%d",&n);
	while(s<n)
	{
		srand(time(0));
		a=rand()%100;
		b=rand()%100;
		if(a<b)
		{
			q=a;
			a=b;
			b=q;
		}
		c = a - b ;
		printf("	%d-%d=",a,b);	
		scanf("%d",&sum);	
		if(sum==c)	
		{
			printf("	回答正确!
");	
			right++;	
		}	
		else	
		{	
			printf("	回答错误!
");	
			wrong++;	
		}
		s++;
	}
	printf("	答对了%d题,打错了%d题
",right,wrong);
}

3.整数乘法

void mul()
{
	int s=0;
	int a,b,c,n;
	//输入要生成的题目数量
	printf("	请输入要生成的题目数量:");
	scanf("%d",&n);
	while(s<n)
	{
		srand(time(0));
		a=rand()%11;
		b=rand()%11;
		c = a * b;
		printf("	%d*%d=",a,b);	
		scanf("%d",&sum);	
		if(sum==c)	
		{
			printf("	回答正确!
");	
			right++;	
		}	
		else	
		{	
			printf("	回答错误!
");	
			wrong++;	
		}
		s++;
	}
	printf("	答对了%d题,打错了%d题
",right,wrong);
}

4.整数除法

void chu()
{
	int s=0;
	int a,b,n,q;
	float c;
	//输入要生成的题目数量
	printf("	请输入要生成的题目数量:");
	scanf("%d",&n);
	while(s<n)
	{
		srand(time(0));
		a=rand()%100;
		b=rand()%100;
		if(a<b)
		{
			q=a;
			a=b;
			b=q;
		}
		c = a / b;
		printf("	%d/%d=",a,b);
		scanf("%d",&sum);
		if(sum==c)
		{
			printf("	回答正确!
");
			right++;
		}
		else
		{
			printf("	回答错误!
");
			wrong++;
		}
		s++;
	}
	printf("	答对了%d题,打错了%d题
",right,wrong);
}

5.真分数运算

最大公倍数

int gcd(int a,int b)
{ 
     if(a%b==0)
     return b;
         else;
         return gcd(b,a%b);
} 

真分数运算

void zhenfenshu()
{   int s=0;
	int e,f,k,c,d,n,p;
	int gxs;
	char answer[10];
	int ansz,ansm;
	char a1[12],a2[12];
	//输入要生成的题目数量
	printf("	请输入要生成的题目数量:");
	scanf("%d",&n);
	while(s<n)
	{
		srand(time(0));
		e=rand()%9+1;
		f=rand()%9+1;
		k=rand()%4+1;
		if(e>=f)
		{
			p=e;
			e=f;
			f=p;
		}
		c=rand()%9+1;
		d=rand()%9+1;
		if(c>=d)
		{
			p=c;
			c=d;
			d=p;
		}
		switch(k)
		{
		case 1:
			ansz=e*d+c*f;
			ansm=f*d;
			gxs=gcd(ansz,ansm);
			ansz/=gxs;
			ansm/=gxs;
			itoa(ansz,a1,10);
	        itoa(ansm,a2,10);
	        strcat(a1,"/");
	        strcat(a1,a2);
			printf("	%d/%d+%d/%d=",e,f,c,d);
            scanf("%s",answer);
		    if(strcmp(a1,answer)==0)
			{
			printf("	回答正确!
");
			right++;
			}
		    else
			{
			printf("	回答错误!
");
			wrong++;
			}
			break;
		case 2:
		    ansz=e*d-c*f;
			ansm=f*d;
			gxs=gcd(ansz,ansm);
			ansz/=gxs;
			ansm/=gxs;
			itoa(ansz,a1,10);
	        itoa(ansm,a2,10);
	        strcat(a1,"/");
	        strcat(a1,a2);
			printf("	%d/%d-%d/%d=",e,f,c,d);
            scanf("%s",answer);
		    if(strcmp(a1,answer)==0)
			{
			printf("	回答正确!
");
			right++;
			}
		    else
			{
			printf("	回答错误!
");
			wrong++;
			}
			break;
		case 3:
			ansz=e*c;
			ansm=f*d;
			gxs=gcd(ansz,ansm);
			ansz/=gxs;
			ansm/=gxs;
			itoa(ansz,a1,10);
	        itoa(ansm,a2,10);
	        strcat(a1,"/");
	        strcat(a1,a2);
			printf("	%d/%d*%d/%d=",e,f,c,d);
            scanf("%s",answer);
		    if(strcmp(a1,answer)==0)
			{
			printf("	回答正确!
");
			right++;
			}
		    else
			{
			printf("	回答错误!
");
			wrong++;
			}
			break;
		case 4:
	    	ansz=e*d;
			ansm=f*c;
			gxs=gcd(ansz,ansm);
			ansz/=gxs;
			ansm/=gxs;
			itoa(ansz,a1,10);
	        itoa(ansm,a2,10);
	        strcat(a1,"/");
	        strcat(a1,a2);
			printf("	%d/%d / %d/%d=",e,f,c,d);
            scanf("%s",answer);
		    if(strcmp(a1,answer)==0)
			{
			printf("	回答正确!
");
			right++;
			}
		    else
			{
			printf("	回答错误!
");
			wrong++;
			}
			break;
		}
		s++;
	}
	printf("	答对了%d题,打错了%d题
",right,wrong);
}

6.主函数

int main()
{
	int n,t;//n 题数 t 运算类型编号
	while(1){
	//输入产生的运算类型
	printf("

	*****小学四则运算****

"); 
	printf("请选择以下的题目类型:
");
	printf("1.加法运算
");
	printf("2.减法运算
");
	printf("3.乘法运算
");
	printf("4.除法运算
");
	printf("5.真分数运算
");
	printf("请选择题目类型(0-5):");
	scanf("%d",&t);
	   switch(t)
		{
		case 1:
			add();
			break;
		case 2:
			sub();
			break;
		case 3:
			mul();
			break;
		case 4:
			chu();	
			break;
		case 5:
			zhenfenshu();
			break;	
		default:
		    printf("输入错误! 请重新选择!");
		    break;
		}
   } 
	return 0;
}

三、运行界面

小学四则运算
一、题目要求
二、代码
三、运行界面
四、个人小结
小学四则运算
一、题目要求
二、代码
三、运行界面
四、个人小结

小学四则运算
一、题目要求
二、代码
三、运行界面
四、个人小结

四、个人小结

1.psp表格

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 200 240
Development 开发 100 150
Analysis 需求分析(包括学习新技术) 30 40
Design Spec 生成设计文档 30 50
Design Review 设计复审 5 15
Coding Standard 代码规范 3 10
Design 具体设计 10 15
Coding 具体编码 36 26
Code Review 代码复审 5 20
Test 测试(自我测试,修改代码,提交修改) 10 30
Reporting 报告 9 30
Test Report 测试报告 3 30
Size Measurement 计算工作量 2 10
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 10

2.心得和经验

通过本次作业,我学会了熟练使用markdown编辑器,同时也锻炼了我的代码编写能力。