四则运算

博客班级 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377
作业的目标 培养我们的程序设计能力
学号 3180701105

二.题目要求

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

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

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

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

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

三.代码提交

1)提交你的源代码在你的博客上,注释好各个函数,给出相应解释,并把运行成功的界面粘贴到博客上;

2)要求逻辑清晰,界面整洁

include<stdio.h>

include<math.h>

include<stdlib.h>

include<windows.h>

include<time.h>

int right=0;//答对的正确的题目个数
int wrong=0;//答错的题目个数
整数加法
void add() //整数的加法
{
int a,b,c;
a=rand()%100; //随机生成
b=rand()%100;
printf("请回答:\n\t\t %d + %d = ",a,b);
scanf("%d",&c);
if(a+b==c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
分数的加法
void Add() //真分数的加法
{
int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
int a,b,c;
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu1_m<zhenfenshu1_z)
{
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;
}

zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu2_m<zhenfenshu2_z)
{
zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;
}
printf("请回答:\n\t\t %d / %d + %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
scanf("%d",&c);
a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
if(a+bc)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
整数减法
void minu() //整数减法
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d - %d = ",a,b);
scanf("%d",&c);
if(a-b
c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
分数减法
void Minu() //真分数的减法
{
int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
int a,b,c;
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu1_m<zhenfenshu1_z)
{
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;
}

zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu2_m<zhenfenshu2_z)
{
zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;
}
printf("请回答:\n\t\t %d / %d - %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
scanf("%d",&c);
a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
if(a-bc)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
整数乘法
void mul() //整数乘法
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d * %d = ",a,b);
scanf("%d",&c);
if(a*b
c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
分数乘法
void Mul() //真分数的乘法
{
int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
int a,b,c;
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu1_m<zhenfenshu1_z)
{
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;
}

zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu2_m<zhenfenshu2_z)
{
zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;
}
printf("请回答:\n\t\t %d / %d * %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
scanf("%d",&c);
if(a*bc)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
整数除法
void di() //整数除法
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d / %d = ",a,b);
scanf("%d",&c);
if(a/b
c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
分数除法
void Di() //真分数的除法
{
int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
int a,b,c;
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu1_m<zhenfenshu1_z)
{
zhenfenshu1_m=0+rand()%100;
zhenfenshu1_z=0+rand()%100;
}

zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;

//判断产生的真分数正确性
while(zhenfenshu2_m<zhenfenshu2_z)
{
zhenfenshu2_m=0+rand()%100;
zhenfenshu2_z=0+rand()%100;
}
printf("请回答:\n\t\t %d / %d ÷ %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
scanf("%d",&c);
a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
if(a/bc)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
主函数
int main(void)
{
int choise,bot;
srand(time(NULL)); //随机数每次循环都不一样
int con=0;
printf("\n\t\t\t欢迎进入小学简易四则运算\n\n");
while(1)
{
if(con
0)
{
printf("请选择:\n");
printf("\t 整数计算(请输入1)\t\t真分数计算(请输入2)\n");
scanf("%d",&choise);
system("cls");
switch(choise)
{
case 1:
printf("\t\t\t 加法运算(请输入1)\n");
printf("\t\t\t 减法运算(请输入2)\n");
printf("\t\t\t 乘法运算(请输入3)\n");
printf("\t\t\t 除法运算(请输入4)\n");
printf("\t\t\t 退出运算(请输入5)\n");
scanf("%d", &bot);
switch(bot)
{
case 1:
add();
break;
case 2:
minu();
break;
case 3:
mul();
break;
case 4:
di();
break;
case 5:
break;
}
break;
case 2:
printf("\t\t\t 加法运算(请输入1)\n");
printf("\t\t\t 减法运算(请输入2)\n");
printf("\t\t\t 乘法运算(请输入3)\n");
printf("\t\t\t 除法运算(请输入4)\n");
printf("\t\t\t 退出运算(请输入5)\n");
scanf("%d", &bot);
switch(bot)
{
case 1:
Add();
break;
case 2:
Minu();
break;
case 3:
Mul();
break;
case 4:
Di();
break;
case 5:
break;
}
break;

	}
}
if(con==1)
{
	switch(choise)
	{
		case 1:
			printf("\t\t\t  加法运算(请输入1)\n");
	  		printf("\t\t\t  减法运算(请输入2)\n");
	  		printf("\t\t\t  乘法运算(请输入3)\n");
	  		printf("\t\t\t  除法运算(请输入4)\n");
	  		printf("\t\t\t  退出运算(请输入5)\n");
	  		scanf("%d", &bot);
	  		switch(bot)
	  		{
	  			case 1:
	  				add();
					break;
				case 2:
					minu();
					break;
				case 3:
					mul();
					break;
				case 4:
					di();
					break;
				case 5:
					break;	
			}
			break;
		case 2:
	  		switch(bot)
	  		{
	  			case 1:
	  				Add();
					break;
				case 2:
					Minu();
					break;
				case 3:
					Mul();
					break;
				case 4:
					Di();
					break;
				case 5:
					break;	
			}
			break;

	}
}
printf("\n\t\t\t继续运算?(请输入1)\n");
printf("\n\t\t\t重新选择?(请输入2)\n");
printf("\n\t\t\t退出运算?(请输入3)\n");
scanf("%d",&con);
system("cls");
if(con==1)
	con=1;
else if(con==2)
	con=0;
else if(con==3)
	break;
else
	printf("抱歉!,你输入的指令有误!请重新输入!\n");

}
fflush(stdin); //清空输入缓冲区
printf("您总共完成了 %d 道题\n正确 %d 道\n错误 %d 道\n",right+wrong,right,wrong);}





四.个人小结

1)在软件开发中,掌握时间是一个很重要的技能,请通过psp表格做到:

a.理清开发的完整环节,争取在每个环节都有实际的工作,一开始边界不清楚是正常的,但请尝试按照自己的理解努力对应每个环节的实际工作

b.预估每个环节的时间,并真实统计这些环节的耗时,在完成后填写完整的psp耗时表

c.这些表格是给自己看的,请不要伪造数据

psp2.1 任务内容 计划需要完成的时间(min 实际完成需要的时间(min)
Planning 计划 300 360
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 360 360
Development 开发 20 15
Analysis 需求分析(包括学习新技术) 30 30
Design Spec 生成设计文档 40 30
Design Review 设计复审 30 30
Coding Standard 代码规范 20 15
Design 具体设计 20 10
Coding 具体编码 100 120
Code Review 代码复审 10 20
Test 测试(自我测试,修改代码,提交修改) 10 15
Reporting 报告 20 20
Test Report 测试报告 20 15
Size Measurement 计算工作量 20 10
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 20 20
posted @ 2020-11-08 15:35  FYTSIX  阅读(58)  评论(0)    收藏  举报