首页 > 其他分享 >实验二

实验二

时间:2022-11-11 21:12:10浏览次数:40  
标签:rand number num fprintf file printf 实验

一、题目要求

我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:

  • 能够自动生成四则运算练习题
  • 可以定制题目数量
  • 用户可以选择运算符
  • 用户设置最大数(如十以内、百以内等)
  • 用户选择是否有括号、是否有小数
  • 用户选择输出方式(如输出到文件、打印机等)
  • 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

二、任务分配

驾驶员:哈美竹
领航员:王淼
驾驶员负责写代码,浏览文件,还有基础实现方法。
领航员则着眼更长远的考虑并且检查错误。进行代码测试和检查错误。

三、代码分析

代码一共分为三个主要模块:
Subject_Manu主要实现程序主菜单操作的实现;
Subject_Output_Screen主要实现四则运算式的生成;
Evaluate主要用于实现四则运算式的计算功能。
主菜单的实现

void Subject_Manu()
{
	printf("本程序中输入“1”为是,“0”为否

");
	printf("请输入所生成题的数目:
");
	scanf("%d",&problem_num);
	printf("请输入运算符号:(“0”为加减运算,“1”为乘除运算,“2”为混合运算)
");
	scanf("%d",&problem_operate);
	printf("请输入所生成数的范围:
");
	printf("下界:");
	scanf("%d",&number_min);
	printf("上界:");
	scanf("%d",&number_max);
	printf("请输入是否包含小数:(“1”or“0”)
");
	scanf("%d",&if_decimal);
	printf("请输入是否包含小括号:(“1”or“0”)
");
	scanf("%d",&if_bracket);
	printf("请输入是否输入到文件:(“1”or“0”)
");
	scanf("%d",&if_file);
	Subject_Control();
}

四则运式的生成

void Subject_Output_Screen()
{
	printf("题目列表:
");
	for (int i = 0; i < problem_num; ++i) {
		int id = 0;
		int num;
		int num_opera;
		int N = rand() % 4 + 2;
		bool f = true, flag = true;
		double number;
		printf("(%d)", i + 1);
		if (if_file) {
			fprintf(file, "(%d)  ", i + 1);
		}
		for (int j = 0; j < N; ++j) {
			if (rand() % 2 && N > 2 && flag && if_bracket) {
				printf("(");
				if (if_file) fprintf(file, "(");
				flag = false;
				id = j;
				//str += "(";
			}
			num = (rand() % abs(number_max - number_min)) + number_min;
			number = num + (double)(rand() % 100) / 100;
			num_opera = rand() % problem_operate;
			if (back_operate == 2) {
				num_opera += 2;
			}
			//不是小数
			if (!if_decimal) {
				//str += to_string(num);
				printf("%d", num);
			}
			//是小数
			else {
				//str += to_string(number);
				printf("%.2f", number);
			}
			//输出文件
			if (if_file) {
				if (!if_decimal) {
					fprintf(file, "%d", num);
				}
				else {
					fprintf(file, "%.2f", number);
				}
			}
			if (id != j && rand() % 2 && !flag && f) {
				printf(")");
				if (if_file) fprintf(file, ")");
				f = false;
				//str += ")";
			}
			//str += subject_operator[num_opera];
			printf("%s", subject_operator[num_opera]);
			if (if_file) {
				fprintf(file, "%s", subject_operator[num_opera]);
			}
		}

		num = (rand() % (number_max - number_min)) + number_min;
		number = num + (double)(rand() % 100) / 100;

		if (!if_decimal) {
			//str += to_string(num);
			printf("%d", num);
			if (if_file) {
				fprintf(file, "%d", num);
			}
		}
		else {
			//str += to_string(number);
			printf("%.2f", number);
			if (if_file) {
				fprintf(file, "%.2f", number);
			}
		}
		if (f && !flag) {
			printf(")");
			if (if_file)fprintf(file, ")");
			//str += ")";
		}
		printf("=
");
		if (if_file) {
			fprintf(file, "=
");
		}
	}
	if (if_file) {
		printf("
question.txt文件生成成功啦!

");
	}
	fclose(file);
}

四、运行结果

选择的条件是带括号和小数的四则混合运算,并生成文件,下面是代码运行结果图:

图形界面运行结果图:

所生成文件的结果图:

从结果中可以看到代码中还是有着不完美的地方,有着一些BUG,比如生成的计算式不是特别合理,小括号的位置过于随机,这些都是不完善的地方。

五、总结

对队友评价

这次我们这个项目的的领航员是张昊辰同学。在选择完作业的题目时,我们对这次作业进行了任务和角色的分配,我是驾驶员,他是领航员。之后我们一起设计了程序的思路,部分功能的实现。他在这些设计工作中起到了重要的作用,拓宽了我的编程思路,使得代码更加完善。在我编程中,张昊辰同学能够对我进行很好的监督并给予帮助,遇到问题时,能够和我讨论出现的问题,使得我们工作效率有了提高。在我完成编程工作后,他也进行结果的检查,认真的进行了单元测试。

对自己总结

总体上,这次结对编程把作业要求的基本功能都实现了,并用MFC实现了简单的图形化界面,但是由于自己和队友之前没有接触过GUI,由于时间分配等问题导致没能把图形界面实现的更加完美。在这次结对编程中我主要负责代码功能及图形界面的实现,这也促进了自己编程能力的进步。领航员张昊辰也起到了至关重要的作用。从最开始的设计,之后的编程工作,以及最后的测试,如果没有他的帮助,我自己一个人是不容易很好的完成这些工作的。

标签:rand,number,num,fprintf,file,printf,实验
From: https://www.cnblogs.com/hhmz/p/16882018.html

相关文章

  • 简单的防火墙个人实验
    #环境准备[root@internet~]#hostname-I192.168.0.6[root@internet~]#route-nKernelIProutingtableDestinationGatewayGenmaskFlagsMetricRefUseIf......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 创建一个科学决策必备的A/B实验,都需要哪些准备?——火山引擎 DataTester 使用指南
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流DataTester是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和......
  • 11.11 实验2结对实验
    一:实验内容和要求①能够自动生成四则运算练习题②可以定制题目数量③用户可以选择运算符④用户设置最大数(如十以内、百以内等)⑤用户选择是否有括号、是否有小数......
  • 223201062522刘晋-软件工程基础Y- 实验二 结对项目报告
    沈阳航空航天大学软件工程基础实验报告实验名称:实验二实验题目:结对项目专业软件工程学号223201062522姓名刘晋结对伙伴赵德龙指导教师孟桂英......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubuntu20.04Desktopamd64三、实验......
  • 第二次合作实验
    一、题目1:我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:①能够自动生成四则运算练习题②可以定制题目数量③用户可以选择运算符......
  • 防火墙配置实验
    一、实验目的1.掌握防火墙的区域划分。2.掌握防火墙的基本配置。3.掌握在防火墙上配置源NAT的方法。4.掌握在防火墙上配置NATServer的方法 二、实验的仪器、设备、......
  • 软件工程基础实验二
    1.任务要求本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。2.题目我们在刚开......