四则运算
| 博客班级 | 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-bc)
{
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*bc)
{
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/bc)
{
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(con0)
{
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 | 
                    
                
                
            
        
浙公网安备 33010602011771号