码迷,mamicode.com
首页 > 其他好文 > 详细

3月10号周二课堂练习:四则运算二

时间:2015-03-15 13:43:06      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

一、题目新的要求

1、题目避免重复;
2、可定制(数量/打印方式);
3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;

二、设计思想(将自己上次上课时的设计思想进行稍微的修改)

1、判断两次随机数是否相同
    使用函数srand()保证两个随机数不同

2、多加入一个变量,来控制题目数量

3、在每一个switch选择的语句,进行选择判断
  3.1选择是否有乘除法,
  3.2是否有括号

   判断是否加减乘除是否都存在,加减在算式中的位置,然后进行选择是否添加括号   

  3.3数值范围

   主要控制随机数产生器模余的大小(如a=rand()%n,n可以取任意值)

   3.4加减有无负数

   比较减数和被减数的大小,如果减数小于被减数,进行交换
  3.5除法有无余数

   将被除数(随机数)与除数(随机数)进行模余运算
  3.6是否支持分数(真假分数)

   判断是否除法运算,如果除不尽的话,再选择是否支持分数,判断除数与被除数的大小,来分析是否是真(假)分数

  3.8打印每行间隔可以调整

   将题目进行模余运算来该变每行题目的数量

三、源程序

// asdfg.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdlib.h"
#include<stdio.h>
#include <time.h>
#include <windows.h>
int fx1(int a0)
{      
	printf("请输入要打印的题目数:");
	scanf("%d", &a0);
	while (a0 <= 0)  //题数为正数
	{
		printf("请重新输入题目数:");
		scanf("%d", &a0);
	};
	return 0;
	}

int fx2(int a2)
{
	     
	printf("请输入运算数的范围:");
	scanf("%d", &a2);
	while (a2 <= 0)  //运算数为正数
	{
		printf("请重新输入范围:");
		scanf("%d", &a2);
	};
	return 0;
}


int fx3(int a1)
{

//题目中是否有乘除法
	printf("请选择乘除法(是1;否0):");
	scanf("%d", &a1);
	while ((a1 != 1)&(a1 != 0)) //只能选择1或0
	{
		printf("请重新输入数值:");
		scanf("%d", &a1);
	};
	return 0;
}  

int fx4(int a3)
{
	
//题目结果是否有负数
	printf("请选择有无负数(是1;否0):");
	scanf("%d", &a3);
	while ((a3 != 1)&(a3 != 0))  //只能选择1或0
	{
		printf("请重新输入数值:");
		scanf("%d", &a3);
	};
	return 0;

}
int fx5(int a4)

{

	//结果是否有余数
	printf("请选择有无余数(是1;否0):");
	scanf("%d", &a4);
	while ((a4 != 1)&(a4 != 0))  //只能选择1或0
	{
		printf("请重新输入数值:");
		scanf("%d", &a4);
	};
	return 0;

} 
int fx6(int a5)
{


	//是否支持小数
	printf("请选择有无小数(是1;否0):");
	scanf("%d", &a5);
	while ((a5 != 1)&(a5 != 0))  //只能选择1或0
	{
		printf("请重新输入数值:");
		scanf("%d", &a5);
	};
	return 0;
}
int fx7(int a6)
{

	//是否加括号
	printf("请选择有无括号(是1;否0):");
	scanf("%d", &a6);
	while ((a6 != 1)&(a6 != 0))  //只能选择1或0
	{
		printf("请重新输入数值:");
		scanf("%d", &a6);
	};
	return 0;
}
int main()
{
	srand(time(NULL)); //避免题目重复
	int rand1, rand2, flag, i, j;
	int rand3, rand4;
	int a0, a1, a2, a3, a4 , a5 ,a6;
	printf("请按照提示进行输入\n");
	fx1(a0);
	fx2(a2);
	fx3(a1);
	fx4(a3);
	fx5(a4);
	fx6(a5);
	fx7(a6);
	    
	 //循环打印符合要求的题目
	 for (i = 0; i < a0; i++)
	 {
		 switch (a1)
		 {
			 case 1:j = rand() % 4; break;  //有乘除法
			 case 0:j = rand() % 2; break;  //无乘除法
		 }
		 rand1 = rand() % a2 + 1;
		 rand2 = rand() % a2 + 1;

			 //循环打印
			 if (j == 0)
			 {
			     switch (a6)
				     {
						 case 0:
								 switch (a5)
									 {
									 case 0:printf("%d+%d=\t\t", rand1, rand2); break;
									 case 1:
											 rand3 = rand() % 9 + 1;
											 rand4 = rand() % 9 + 1;
											 printf("%d.%d+%d.%d=\t\t", rand1, rand3, rand2, rand4); break;
										 }
								 break;
				
						 case 1:
							     switch (a5)
								     {
								     case 0:printf("(%d+%d)=\t", rand1, rand2); break;
								     case 1:
									         rand3 = rand() % 9 + 1;
									         rand4 = rand() % 9 + 1;
									         printf("(%d.%d+%d.%d)=\t", rand1, rand3, rand2, rand4); break;
									     }
							     break;
					}
			 }
		 if (j == 1)
			 {
			     switch (a3)
				     {
						 case 1:                   //结果可有负数
								 break;
						 case 0:                   //结果无负数
								 if (rand1 < rand2)            //被减数比减数小则交换
									 {
										 flag = rand1;
										 rand1 = rand2;
										 rand2 = flag;
									 }
								 break;
					 }
			     switch (a6)
				     {
						 case 0:
								 switch (a5)
									 {
									 case 0:printf("%d-%d=\t\t", rand1, rand2); break;
									 case 1:
											 rand3 = rand() % 9 + 1;
											 rand4 = rand() % 9 + 1;
											 printf("%d.%d-%d.%d=\t\t", rand1, rand3, rand2, rand4); break;
										 }
								 break;
			
						 case 1:
							     switch (a5)
								     {
								     case 0:printf("(%d-%d)=\t", rand1, rand2); break;
								     case 1:
									         rand3 = rand() % 9 + 1;
									         rand4 = rand() % 9 + 1;
									         printf("(%d.%d-%d.%d)=\t", rand1, rand3, rand2, rand4); break;
									     }
							     break;
						}
			 }
		 if (j == 2)
		 {
			     switch (a6)
			     {
					 case 0:
							 switch (a5)
								 {
								 case 0:printf("%d*%d=\t\t", rand1, rand2); break;
								 case 1:
										 rand3 = rand() % 9 + 1;
										 rand4 = rand() % 9 + 1;
										 printf("%d.%d*%d.%d=\t\t", rand1, rand3, rand2, rand4); break;
									 }
							 break;
		
					 case 1:
						     switch (a5)
							     {
							     case 0:printf("(%d*%d)=\t", rand1, rand2); break;
							     case 1:
								         rand3 = rand() % 9 + 1;
								         rand4 = rand() % 9 + 1;
								         printf("(%d.%d*%d.%d)=\t", rand1, rand3, rand2, rand4); break;
								     }
						     break;
						 }
		 }
		 if (j == 3)
			 {
				 switch (a4)
					 {
					 case 1:                         //结果可有余数
						 break;
					 case 0:                        //结果无余数
						 while (rand1%rand2 != 0)            //如果不能整除,则重新生成
							 {
								 rand1 = rand() % a2 + 1;
								 rand2 = rand() % a2 + 1;
							 };
						 break;
							 }
				 switch (a6)
					 {
					 case 0:
							 switch (a5)
								 {
								 case 0:printf("%d/%d=\t\t", rand1, rand2); break;
								 case 1:
										 rand3 = rand() % 9 + 1;
										 rand4 = rand() % 9 + 1;
										 printf("%d.%d/%d.%d=\t\t", rand1, rand3, rand2, rand4); break;
									 }
							 break;
			
					 case 1:
							 switch (a5)
								 {
								 case 0:printf("(%d/%d)=\t", rand1, rand2); break;
								 case 1:
										 rand3 = rand() % 9 + 1;
										 rand4 = rand() % 9 + 1;
										 printf("(%d.%d/%d.%d)=\t", rand1, rand3, rand2, rand4); break;
									 }
							 break;
						 }
			 }
	 }

	 return 0;
}

  

四、程序截图

 技术分享

五、总结

通过这次的实验,我更深刻的了解,一个简单的小想法原来可以进行进行更深层次的修改、拓展,使它能够由小变大,有简单到复杂。现在也知道了代码的模块化是多么的重要,如果不进行模块化,程序和代码势必容易出问题,而且逻辑关系会很难理清。

一、项目计划总结: 

周活动总结表

姓名:黄肖飞                                             日期:3月12日

日期       任务

听课

编写程序

阅读课本

准备考试

日总计

周日

 

 

 

 

 

周一

 400

 

 60

 

 460

周二

 200

 110

 60

 

 370

周三

 100

 170

 

 

 270

周四

 200

 100

 100

 

 400

周五

 200

 190

 60

 

 450

周六

 

 160

 60

 

 320

周总结

 1100

 730

 340

 

 2170

阶段时间和效率                                           第2 周数(上一次周活动表的周数+1):

不包括上一周在内的累计时间                                                                         

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

以前各周的累计时间                                                                                    

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

 

二、时间记录表:

学生       黄肖飞                                             日期     314     

教师        王建民                                             课程           PSP       

日期

开始时间

结束时间

中断时间

净时间

活动

备注

 3/10

 8:00

 12:00

 40

 200

 软件工程,操作系统

 课间休息

 

 2:30

 4:30

 10

 110

 编写程序

 上厕所,休息

 

 8:30

 9:30

 

 60

 《梦断代码》

 看书

 3/11

 8:00

 10:00

 20

 100

 计算机网络

 课间休息

 

 2:30

 5:30

 10

 170

 编写程序

 上厕所

 

 9:00

 10:00

 

 60

 《梦断代码》

 看书

3/12

10:00

12:00

20

100

计算机接口技术

课件休息

 

2:00

4:00

20

100

嵌入式开发技术

课间休息

 

6:00

8:00

20

100

编写程序

上厕所

 

9:00

10:00

 

60

《梦断代码》

看书

3/13

8:00

12:00

40

200

软件工程,操作系统

课间休息

 

2:00

5:30

20

190

编写程序

上厕所

 

9:00

10:00

 

60

《梦断代码》

看书

3/14

8:00

11:00

20

160

编写程序

上厕所

 

三、缺陷记录日志:

学生    黄肖飞

日期   3月14日 

教员       王建民   

程序号                

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 3/10

 1

 001

 设计

 编译

 10

 

 使用某一函数没有与之对应的头文件#include<time.h>,函数rand(),srand()

 

 2

 002

设计

 编译

 15

 

 如何避免产生两个相同的四则运算,使用srand()函数,避免产生两个相同的随机数就将问题解决了

 3/12

 3

 003

 设计

 编译

 10

 

 少了一个大括号,使得编译一直没有通过,最后将代码重新规范一下,发现主函数少了一个括号

 3/13

 4

 004

 设计

 编译

 5

 

 fatal error C1010: unexpected end of file while looking for precompiled header directive。寻找预编译头文件路径时遇到了不该遇到的文件尾。(没有#include "stdafx.h")

3月10号周二课堂练习:四则运算二

标签:

原文地址:http://www.cnblogs.com/huangxiaofei/p/4338258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!