C语言程序设计计算24游戏实验报告

C语言程序设计计算24游戏实验报告
C语言程序设计计算24游戏实验报告

课程设计报告

学院、系:吉林大学珠海学院计算机科学与技术系专业名称:软件工程

课程设计科目C语言程序课程设计所在班级:10班

学生学号:04121010

学生姓名:赵学文

指导教师:郭晓燕

完成时间:2013年3月-5月

计算24游戏

一、设计任务与目标

题目计算24游戏,最终要求是输入四个一位数,通过加减乘除,允许加入括号,计算出24,显示计算过程,并提示成功信息。可以首先完成输入三个一位数,只通过加减,计算出12;再完成通过加减乘除,再完成可以加入括号。刚看到题目的时候,手上并无其他资料,纯粹觉得是一个有趣的数学问题,需要自己全动手设计才能到达目标,而目标是在输入四个数之后,先进行全排列,然后进行全运算,从而最终得到结果以输出。

本次上机实践所使用的平台和相关软件。

平台:Windows XP or Windows7

相关软件:VC6.0。

二、方案设计与论证

关于这个计算24游戏的设计,首先我将题目看成两部分,一部分为运算数,一部分为运算符。首先由于有四个数,则只有三个运算符,三个运算符中在加减乘除中选取。由于涉及了括号,个人认为用穷举法才能全面地进行运算,我们可以将运算符和括号这部分归为主运算部分,在这部分中,运算数的位置固定,但是运算符和括号的位置会改变,而且程序主要就是在这部分运算,直接将数值引入,然后计算判断是否等于24,若等于24,则输出数值和这些运算符、括号的位置构成的运算式;然而,这是不够全面的,因为还要考虑到运算数的排列位置,于是有了第二部分,运算数的位置全排列,同样是采用穷举法,将运算数全排列,在每个排列后面调用主运算的方法,从而达到全面不遗漏地计算。在MAIN函数中,我们仅需要记录输入的4个数字,然后将数值用在全排列函数中即可。整个程序的设计只需定义一个主函数,并不涉及相关的函数调用。看起来很繁琐,但在运用上很简单,只要将各种情况运用数学思维列举出来,能简明扼要地表现出来。具体程序过程如图1所示。

三、程序框图或流程图,程序清单与调用关系

整个程序只用到了一个主函数,不涉及其他调用。分布列出所有情况。

Main函数,程序的主函数

定义浮点类型变量a,b,c,d,w,x,y,z

a,b,c,d分别代表定义输入的四个数

w,x,y,z分别代表输出计算四个数

Multiplex部分代表各个计算公式

图1

四、全部源程序清单

#include

void jisuan(float a,float b,float c,float d) //进行运算符和括号的排列及计算{

if(a+b+c+d==24) {printf("%1.0f+%1.0f+%1.0f+%1.0f=24\n",a,b,c,d);}

if(a+b+c-d==24) {printf("%1.0f+%1.0f+%1.0f-%1.0f=24\n",a,b,c,d);}

if(a+b+c*d==24) {printf("%1.0f+%1.0f+%1.0f*%1.0f=24\n",a,b,c,d);}

if(a+(b+c)*d==24) {printf("%1.0f+(%1.0f+%1.0f)*%1.0f=24\n",a,b,c,d);} if((a+b+c)*d==24) {printf("(%1.0f+%1.0f+%1.0f)*%1.0f=24\n",a,b,c,d);} if(a+b+c/d==24) {printf("%1.0f+%1.0f+%1.0f/%1.0f=24\n",a,b,c,d);}

if(a+(b+c)/d==24) {printf("%1.0f+(%1.0f+%1.0f)/%1.0f=24\n",a,b,c,d);} if((a+b+c)/d==24) {printf("(%1.0f+%1.0f+%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a+b-c+d==24) {printf("%1.0f+%1.0f-%1.0f+%1.0f=24\n",a,b,c,d);}

if(a+b-c-d==24) {printf("%1.0f+%1.0f-%1.0f-%1.0f=24\n",a,b,c,d);}

if(a+b-c*d==24) {printf("%1.0f+%1.0f-%1.0f*%1.0f=24\n",a,b,c,d);}

if(a+(b-c)*d==24) {printf("%1.0f+(%1.0f-%1.0f)*%1.0f=24\n",a,b,c,d);} if((a+b-c)*d==24) {printf("(%1.0f+%1.0f-%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a+(b-c)/d==24) {printf("%1.0f+(%1.0f-%1.0f)/%1.0f=24\n",a,b,c,d);}

if((a+b-c)/d==24) {printf("(%1.0f+%1.0f-%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a+b*c+d==24) {printf("%1.0f+%1.0f*%1.0f+%1.0f=24\n",a,b,c,d);}

if((a+b)*c+d==24) {printf("(%1.0f+%1.0f)*%1.0f+%1.0f=24\n",a,b,c,d);}

if(a+b*(c+d)==24) {printf("%1.0f+%1.0f*(%1.0f+%1.0f)=24\n",a,b,c,d);}

if((a+b)*(c+d)==24) {printf("(%1.0f+%1.0f)*(%1.0f+%1.0f)=24\n",a,b,c,d);} if(a+b*c-d==24){printf("%1.0f+%1.0f*%1.0f-%1.0f=24\n",a,b,c,d);}

if((a+b)*c-d==24) {printf("(%1.0f+%1.0f)*%1.0f-%1.0f=24\n",a,b,c,d);}

if(a+b*(c-d)==24) {printf("%1.0f+%1.0f*(%1.0f-%1.0f)=24\n",a,b,c,d);}

if((a+b)*(c-d)==24) {printf("(%1.0f+%1.0f)*(%1.0f-%1.0f)=24\n",a,b,c,d);} if(a+b*c*d==24) {printf("%1.0f+%1.0f*%1.0f*%1.0f=24\n",a,b,c,d);}

if((a+b)*c*d==24) {printf("(%1.0f+%1.0f)*%1.0f*%1.0f=24\n",a,b,c,d);}

if(a+b*c/d==24) {printf("%1.0f+%1.0f*%1.0f/%1.0f=24\n",a,b,c,d);}

if((a+b)*c/d==24) {printf("(%1.0f+%1.0f)*%1.0f/%1.0f=24\n",a,b,c,d);}

if((a+b)*(c/d)==24) {printf("(%1.0f+%1.0f)*(%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a+b/c+d==24) {printf("%1.0f+%1.0f/%1.0f+%1.0f=24\n",a,b,c,d);}

if((a+b)/c+d==24) {printf("(%1.0f+%1.0f)/%1.0f+%1.0f=24\n",a,b,c,d);}

if(a+b/(c+d)==24) {printf("%1.0f+%1.0f/(%1.0f+%1.0f)=24\n",a,b,c,d);}

if((a+b)/(c+d)==24) {printf("(%1.0f+%1.0f)/(%1.0f+%1.0f)=24\n",a,b,c,d);} if(a+b/c-d==24){printf("%1.0f+%1.0f/%1.0f+%1.0f=24\n",a,b,c,d);}

if((a+b)/c-d==24) {printf("(%1.0f+%1.0f)/%1.0f-%1.0f=24\n",a,b,c,d);}

if(a+b/(c-d)==24) {printf("%1.0f+%1.0f/(%1.0f-%1.0f)=24\n",a,b,c,d);}

if((a+b)/(c-d)==24) {printf("(%1.0f+%1.0f)/(%1.0f-%1.0f)=24\n",a,b,c,d);} if(a+b/c*d==24) {printf("%1.0f+%1.0f/%1.0f*%1.0f=24\n",a,b,c,d);}

if((a+b)/c*d==24) {printf("(%1.0f+%1.0f)/%1.0f*%1.0f=24\n",a,b,c,d);}

if((a+b)/(c*d)==24) {printf("(%1.0f+%1.0f)/(%1.0f*%1.0f)=24\n",a,b,c,d);} if(a+b/c/d==24) {printf("%1.0f+%1.0f/%1.0f/%1.0f=24\n",a,b,c,d);}

if((a+b)/c/d==24) {printf("(%1.0f+%1.0f)/%1.0f/%1.0f=24\n",a,b,c,d);}

if((a+b)/(c/d)==24) {printf("(%1.0f+%1.0f)/(%1.0f/%1.0f)=24\n",a,b,c,d);} //-----------------------------------------------------------

if(a-b+c+d==24) {printf("%1.0f-%1.0f+%1.0f+%1.0f=24\n",a,b,c,d);}

if(a-b+c-d==24) {printf("%1.0f-%1.0f+%1.0f-%1.0f=24\n",a,b,c,d);}

if(a-b+c*d==24) {printf("%1.0f-(%1.0f+%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a-(b+c)*d==24) {printf("%1.0f-%1.0f+%1.0f*%1.0f=24\n",a,b,c,d);}

if((a-b+c)*d==24) {printf("(%1.0f-%1.0f+%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a-b+c/d==24) {printf("%1.0f-%1.0f+%1.0f/%1.0f=24\n",a,b,c,d);}

if(a-(b+c)/d==24) {printf("%1.0f-(%1.0f+%1.0f)/%1.0f=24\n",a,b,c,d);}

if((a-b+c)/d==24) {printf("(%1.0f-%1.0f+%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a-b-c+d==24) {printf("%1.0f-%1.0f-%1.0f+%1.0f=24\n",a,b,c,d);}

if(a-b-c-d==24) {printf("%1.0f-%1.0f-%1.0f-%1.0f=24\n",a,b,c,d);}

if(a-(b-c)*d==24) {printf("%1.0f-(%1.0f-%1.0f)*%1.0f=24\n",a,b,c,d);}

if((a-b-c)*d==24) {printf("(%1.0f-%1.0f-%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a-b-c/d==24) {printf("%1.0f-%1.0f-%1.0f/%1.0f=24\n",a,b,c,d);}

if(a-(b-c)/d==24) {printf("%1.0f-(%1.0f-%1.0f)/%1.0f=24\n",a,b,c,d);}

if((a-b-c)/d==24) {printf("%1.0f-%1.0f-%1.0f/%1.0f=24\n",a,b,c,d);}

if(a-b*c+d==24) {printf("%1.0f-%1.0f*%1.0f+%1.0f=24\n",a,b,c,d);}

if((a-b)*c+d==24) {printf("(%1.0f-%1.0f)*%1.0f+%1.0f=24\n",a,b,c,d);}

if(a-b*(c+d)==24) {printf("%1.0f-%1.0f*(%1.0f+%1.0f)=24\n",a,b,c,d);}

if((a-b)*(c+d)==24) {printf("(%1.0f-%1.0f)*(%1.0f+%1.0f)=24\n",a,b,c,d);} if(a-b*c-d==24){printf("%1.0f-%1.0f*%1.0f-%1.0f=24\n",a,b,c,d);}

if((a-b)*c-d==24) {printf("(%1.0f-%1.0f)*%1.0f-%1.0f=24\n",a,b,c,d);}

if(a-b*(c-d)==24) {printf("%1.0f-%1.0f*(%1.0f-%1.0f)=24\n",a,b,c,d);}

if((a-b)*(c-d)==24) {printf("(%1.0f-%1.0f)*(%1.0f-%1.0f)=24\n",a,b,c,d);} if(a-b*c*d==24) {printf("%1.0f-%1.0f*%1.0f*%1.0f=24\n",a,b,c,d);}

if((a-b)*c*d==24) {printf("(%1.0f-%1.0f)*%1.0f*%1.0f=24\n",a,b,c,d);}

if(a-b*c/d==24) {printf("%1.0f-%1.0f*%1.0f/%1.0f=24\n",a,b,c,d);}

if((a-b)*c/d==24) {printf("(%1.0f-%1.0f)*%1.0f/%1.0f=24\n",a,b,c,d);}

if((a-b)*(c/d)==24) {printf("(%1.0f-%1.0f)*(%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a-b/c+d==24) {printf("%1.0f-%1.0f/%1.0f+%1.0f=24\n",a,b,c,d);}

if((a-b)/c+d==24) {printf("(%1.0f-%1.0f)/%1.0f+%1.0f=24\n",a,b,c,d);}

if(a-b/(c+d)==24) {printf("%1.0f-%1.0f/(%1.0f+%1.0f)=24\n",a,b,c,d);}

if((a-b)/(c+d)==24) {printf("(%1.0f-%1.0f)/(%1.0f+%1.0f)=24\n",a,b,c,d);} if(a-b/c-d==24){printf("%1.0f-%1.0f/%1.0f+%1.0f=24\n",a,b,c,d);}

if((a-b)/c-d==24) {printf("(%1.0f-%1.0f)/%1.0f-%1.0f=24\n",a,b,c,d);}

if(a-b/(c-d)==24) {printf("%1.0f-%1.0f/(%1.0f-%1.0f)=24\n",a,b,c,d);}

if((a-b)/(c-d)==24) {printf("(%1.0f-%1.0f)/(%1.0f-%1.0f)=24\n",a,b,c,d);} if(a-b/c*d==24) {printf("%1.0f-%1.0f/%1.0f*%1.0f=24\n",a,b,c,d);}

if((a-b)/c*d==24) {printf("(%1.0f-%1.0f)/%1.0f*%1.0f=24\n",a,b,c,d);}

if((a-b)/(c*d)==24) {printf("(%1.0f-%1.0f)/(%1.0f*%1.0f)=24\n",a,b,c,d);} if(a-b/c/d==24) {printf("%1.0f-%1.0f/%1.0f/%1.0f=24\n",a,b,c,d);}

if((a-b)/c/d==24) {printf("(%1.0f-%1.0f)/%1.0f/%1.0f=24\n",a,b,c,d);}

if((a-b)/(c/d)==24) {printf("(%1.0f-%1.0f)/(%1.0f/%1.0f)=24\n",a,b,c,d);} //-----------------------------------------------------------

if(a*b+c+d==24) {printf("%1.0f*%1.0f+%1.0f+%1.0f=24\n",a,b,c,d);}

if(a*(b+c)+d==24) {printf("%1.0f*(%1.0f+%1.0f)+%1.0f=24\n",a,b,c,d);}

if(a*(b+c+d)==24) {printf("%1.0f*(%1.0f+%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a*b+c-d==24) {printf("%1.0f*%1.0f+%1.0f-%1.0f=24\n",a,b,c,d);}

if(a*(b+c)-d==24) {printf("%1.0f*(%1.0f+%1.0f)-%1.0f=24\n",a,b,c,d);}

if(a*(b+c-d)==24) {printf("%1.0f*(%1.0f+%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a*b+c*d==24) {printf("%1.0f*%1.0f+%1.0f*%1.0f=24\n",a,b,c,d);}

if(a*(b+c)*d==24) {printf("%1.0f*(%1.0f+%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a*(b+c)/d==24) {printf("%1.0f*(%1.0f+%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a*b-c+d==24) {printf("%1.0f*%1.0f-%1.0f+%1.0f=24\n",a,b,c,d);}

if(a*(b-c)+d==24) {printf("%1.0f*(%1.0f-%1.0f)+%1.0f=24\n",a,b,c,d);}

if(a*(b-c+d)==24) {printf("%1.0f*(%1.0f-%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a*b-c-d==24) {printf("%1.0f*%1.0f-%1.0f-%1.0f=24\n",a,b,c,d);}

if(a*(b-c)-d==24) {printf("%1.0f*(%1.0f-%1.0f)-%1.0f=24\n",a,b,c,d);}

if(a*(b-c-d)==24) {printf("%1.0f*(%1.0f-%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a*b-c*d==24) {printf("%1.0f*%1.0f-%1.0f*%1.0f=24\n",a,b,c,d);}

if(a*(b-c)*d==24) {printf("%1.0f*(%1.0f-%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a*b-c/d==24) {printf("%1.0f*%1.0f-%1.0f/%1.0f=24\n",a,b,c,d);}

if(a*(b-c)/d==24) {printf("%1.0f*(%1.0f-%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a*b*c+d==24) {printf("%1.0f*%1.0f*%1.0f+%1.0f=24\n",a,b,c,d);}

if(a*b*(c+d)==24) {printf("%1.0f*%1.0f*(%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a*b*c-d==24) {printf("%1.0f*%1.0f*%1.0f-%1.0f=24\n",a,b,c,d);}

if(a*b*(c-d)==24) {printf("%1.0f*%1.0f*(%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a*b*c*d==24) {printf("%1.0f*%1.0f*%1.0f*%1.0f=24\n",a,b,c,d);}

if(a*b*c/d==24) {printf("%1.0f*%1.0f*%1.0f/%1.0f=24\n",a,b,c,d);}

if(a*b*(c/d)==24) {printf("%1.0f*%1.0f*(%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a*b/c+d==24) {printf("%1.0f*%1.0f/%1.0f+%1.0f=24\n",a,b,c,d);}

if(a*b/(c+d)==24) {printf("%1.0f*%1.0f/(%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a*b/c-d==24) {printf("%1.0f*%1.0f/%1.0f-%1.0f=24\n",a,b,c,d);}

if(a*b/(c-d)==24) {printf("%1.0f*%1.0f/(%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a*b/c*d==24) {printf("%1.0f*%1.0f/%1.0f*%1.0f=24\n",a,b,c,d);}

if(a*(b/c)*d==24) {printf("%1.0f*(%1.0f/%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a*b/(c*d)==24) {printf("%1.0f*%1.0f/(%1.0f*%1.0f)=24\n",a,b,c,d);}

if(a*b/c/d==24) {printf("%1.0f*%1.0f/%1.0f/%1.0f=24\n",a,b,c,d);}

if(a*(b/c)/d==24) {printf("%1.0f*(%1.0f/%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a*b/(c/d)==24) {printf("%1.0f*%1.0f/(%1.0f/%1.0f)=24\n",a,b,c,d);}

//-----------------------------------------------------------

if(a/b+c+d==24) {printf("%1.0f/%1.0f+%1.0f+%1.0f=24\n",a,b,c,d);}

if(a/(b+c)+d==24) {printf("%1.0f/(%1.0f+%1.0f)+%1.0f=24\n",a,b,c,d);}

if(a/(b+c+d)==24) {printf("%1.0f/(%1.0f+%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a/b+c-d==24) {printf("%1.0f/%1.0f+%1.0f-%1.0f=24\n",a,b,c,d);}

if(a/(b+c)-d==24) {printf("%1.0f/(%1.0f+%1.0f)-%1.0f=24\n",a,b,c,d);}

if(a/(b+c-d)==24) {printf("%1.0f/(%1.0f+%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a/b+c*d==24) {printf("%1.0f/%1.0f+%1.0f*%1.0f=24\n",a,b,c,d);}

if(a/(b+c)*d==24) {printf("%1.0f/(%1.0f+%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a/((b+c)*d)==24) {printf("%1.0f/((%1.0f+%1.0f)*%1.0f)=24\n",a,b,c,d);} if(a/b+c/d==24) {printf("%1.0f/%1.0f+%1.0f/%1.0f=24\n",a,b,c,d);}

if(a/(b+c)/d==24) {printf("%1.0f/(%1.0f+%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a/((b+c)/d)==24) {printf("%1.0f/((%1.0f+%1.0f)/%1.0f)=24\n",a,b,c,d);}

if(a/b-c+d==24) {printf("%1.0f/%1.0f-%1.0f+%1.0f=24\n",a,b,c,d);}

if(a/(b-c)+d==24) {printf("%1.0f/(%1.0f-%1.0f)+%1.0f=24\n",a,b,c,d);}

if(a/(b-c+d)==24) {printf("%1.0f/(%1.0f-%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a/b-c-d==24) {printf("%1.0f/%1.0f-%1.0f-%1.0f=24\n",a,b,c,d);}

if(a/(b-c)-d==24) {printf("%1.0f/(%1.0f-%1.0f)-%1.0f=24\n",a,b,c,d);}

if(a/(b-c-d)==24) {printf("%1.0f/(%1.0f-%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a/b-c*d==24) {printf("%1.0f/%1.0f-%1.0f*%1.0f=24\n",a,b,c,d);}

if(a/(b-c)*d==24) {printf("%1.0f/(%1.0f-%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a/((b-c)*d)==24) {printf("%1.0f/((%1.0f-%1.0f)*%1.0f)=24\n",a,b,c,d);} if(a/b-c/d==24) {printf("%1.0f/%1.0f-%1.0f/%1.0f=24\n",a,b,c,d);}

if(a/(b-c)/d==24) {printf("%1.0f/(%1.0f-%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a/((b-c)/d)==24) {printf("%1.0f/((%1.0f-%1.0f)/%1.0f)=24\n",a,b,c,d);}

if(a/b*c+d==24) {printf("%1.0f/%1.0f*%1.0f+%1.0f=24\n",a,b,c,d);}

if(a/b*(c+d)==24) {printf("%1.0f/%1.0f*(%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a/(b*c+d)==24) {printf("%1.0f/(%1.0f*%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a/(b*(c+d))==24) {printf("%1.0f/(%1.0f*(%1.0f+%1.0f))=24\n",a,b,c,d);} if(a/b*c-d==24) {printf("%1.0f/%1.0f*%1.0f-%1.0f=24\n",a,b,c,d);}

if(a/b*(c-d)==24) {printf("%1.0f/%1.0f*(%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a/(b*c-d)==24) {printf("%1.0f/(%1.0f*%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a/(b*(c-d))==24) {printf("%1.0f/(%1.0f*(%1.0f-%1.0f))=24\n",a,b,c,d);} if(a/b*c*d==24) {printf("%1.0f/%1.0f*%1.0f*%1.0f=24\n",a,b,c,d);}

if(a/(b*c)*d==24) {printf("%1.0f/(%1.0f*%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a/b*(c*d)==24) {printf("%1.0f/%1.0f*(%1.0f*%1.0f)=24\n",a,b,c,d);}

if(a/(b*c*d)==24) {printf("%1.0f/(%1.0f*%1.0f*%1.0f)=24\n",a,b,c,d);}

if(a/b*c/d==24) {printf("%1.0f/%1.0f*%1.0f/%1.0f=24\n",a,b,c,d);}

if(a/(b*c)/d==24) {printf("%1.0f/(%1.0f*%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a/b*(c/d)==24) {printf("%1.0f/%1.0f*(%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a/(b*c/d)==24) {printf("%1.0f/(%1.0f*%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a/(b*(c/d))==24) {printf("%1.0f/(%1.0f*(%1.0f/%1.0f))=24\n",a,b,c,d);}

if(a/b/c+d==24) {printf("%1.0f/%1.0f/%1.0f+%1.0f=24\n",a,b,c,d);}

if(a/b/(c+d)==24) {printf("%1.0f/%1.0f/(%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a/(b/c)+d==24) {printf("%1.0f/(%1.0f/%1.0f)+%1.0f=24\n",a,b,c,d);}

if(a/(b/c+d)==24) {printf("%1.0f/(%1.0f/%1.0f+%1.0f)=24\n",a,b,c,d);}

if(a/(b/(c+d))==24) {printf("%1.0f/(%1.0f/(%1.0f+%1.0f))=24\n",a,b,c,d);} if(a/b/c-d==24) {printf("%1.0f/%1.0f/%1.0f-%1.0f=24\n",a,b,c,d);}

if(a/b/(c-d)==24) {printf("%1.0f/%1.0f/(%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a/(b/c)-d==24) {printf("%1.0f/(%1.0f/%1.0f)-%1.0f=24\n",a,b,c,d);}

if(a/(b/c-d)==24) {printf("%1.0f/(%1.0f/%1.0f-%1.0f)=24\n",a,b,c,d);}

if(a/(b/(c-d))==24) {printf("%1.0f/(%1.0f/(%1.0f-%1.0f))=24\n",a,b,c,d);}

if(a/b/c*d==24) {printf("%1.0f/%1.0f/%1.0f*%1.0f=24\n",a,b,c,d);}

if(a/b/(c*d)==24) {printf("%1.0f/%1.0f/(%1.0f*%1.0f)=24\n",a,b,c,d);}

if(a/(b/c)*d==24) {printf("%1.0f/(%1.0f/%1.0f)*%1.0f=24\n",a,b,c,d);}

if(a/(b/c*d)==24) {printf("%1.0f/(%1.0f/%1.0f*%1.0f)=24\n",a,b,c,d);}

if(a/(b/(c*d))==24) {printf("%1.0f/(%1.0f/(%1.0f*%1.0f))=24\n",a,b,c,d);} if(a/b/c/d==24) {printf("%1.0f/%1.0f/%1.0f/%1.0f=24\n",a,b,c,d);}

if(a/b/(c/d)==24) {printf("%1.0f/%1.0f/(%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a/(b/c)/d==24) {printf("%1.0f/(%1.0f/%1.0f)/%1.0f=24\n",a,b,c,d);}

if(a/(b/c/d)==24) {printf("%1.0f/(%1.0f/%1.0f/%1.0f)=24\n",a,b,c,d);}

if(a/(b/(c/d))==24) {printf("%1.0f/(%1.0f/(%1.0f/%1.0f))=24\n",a,b,c,d);}

}

void pailie(float a,float b,float c,float d) //进行运算数的全排列

{

float w,x,y,z;

w=a;x=b;y=c;z=d;jisuan(w,x,y,z);

w=a;x=b;y=d;z=c;jisuan(w,x,y,z);

w=a;x=c;y=b;z=d;jisuan(w,x,y,z);

w=a;x=c;y=d;z=b;jisuan(w,x,y,z);

w=a;x=d;y=b;z=c;jisuan(w,x,y,z);

w=a;x=d;y=c;z=b;jisuan(w,x,y,z);

//-----------------------------------------------------------

w=b;x=a;y=c;z=d;jisuan(w,x,y,z);

w=b;x=a;y=d;z=c;jisuan(w,x,y,z);

w=b;x=c;y=a;z=d;jisuan(w,x,y,z);

w=b;x=c;y=d;z=a;jisuan(w,x,y,z);

w=b;x=d;y=a;z=c;jisuan(w,x,y,z);

w=b;x=d;y=c;z=a;jisuan(w,x,y,z);

//-----------------------------------------------------------

w=c;x=a;y=b;z=d;jisuan(w,x,y,z);

w=c;x=a;y=d;z=b;jisuan(w,x,y,z);

w=c;x=b;y=a;z=d;jisuan(w,x,y,z);

w=c;x=b;y=d;z=a;jisuan(w,x,y,z);

w=c;x=d;y=b;z=a;jisuan(w,x,y,z);

w=c;x=d;y=a;z=b;jisuan(w,x,y,z);

//-----------------------------------------------------------

w=d;x=a;y=b;z=c;jisuan(w,x,y,z);

w=d;x=a;y=c;z=b;jisuan(w,x,y,z);

w=d;x=b;y=c;z=a;jisuan(w,x,y,z);

w=d;x=b;y=a;z=c;jisuan(w,x,y,z);

w=d;x=c;y=b;z=a;jisuan(w,x,y,z);

w=d;x=c;y=a;z=b;jisuan(w,x,y,z);

}

void main()

{

float a,b,c,d;

A:

printf("请输入4个整数:\n");

scanf("%f,%f,%f,%f",&a,&b,&c,&d);

printf("运算结果如下:\n");

pailie(a,b,c,d);

printf("\n");

goto A;

}

五、程序运行的测试与分析

运行程序

输入4个整数:例:2,1,3,4(注意用逗号隔开)

按下回车键

计算出以下结果后不会自动退出

图2

六、结论与心得

一开始选择这个题目的时候,心里就是本着计算一个有趣的数学问题,且算法应该比较基本的心里去对待。但是在开始设计时,并没有想到要进行运算数的位置排列等一系列繁琐的过程,在考虑再三之后,决定要加入运算数的位置排列

从而全面地进行运算。一想到如此繁琐的过程和代码要编写,有时候甚至思维会变乱,因为要编写的程序代码比较复杂,很容易在符号的输入上出错。曾一度让我纠结在是否有更简便的方法之中。设计运算数的位置排列,最早是希望用递归调用的方法来完成,但是由于时间和个人能力的原因,未能成功,最终仍是采取了穷举法,虽然未能成功,但是也让我对递归算法的调用有了一定的理解。七、参考资料

参考《C语言程序设计》清华大学谭浩强著

八、致谢

衷心感谢网页上一些好友在程序的编写上的提点和方法。

课程设计成绩评定表

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

机械设计综合实验指导书与实验报告

机械设计综合实验指导书 及实验报告 班级 学号 姓名 机械基础实验中心雷代明 2017年3月 第一部分机械设计

实验一机械零件认知与分析实验 一、实验目的 1、熟悉常用的机械零件的基本结构,以便对所学理论知识产生一定的感性认识。 2、分析常用机械零件的基本构造及制造原理。 3、了解常用机械零件的实际使用情况。 二、实验内容 通过观察,掌握常用的机械零件的基本结构及应用场合。 三、实验简介 机械零件陈列观摩,共包括: (1)螺纹联接与应用 (2)键、花键、销、铆、焊、铰接 (3)带传动 (4)链传动 (5)齿轮传动 (6)蜗杆传动 (7)滑动轴承与润滑密封 (8)滚动轴承与装置设计 (9)轴的分析与设计 (10)联轴器与离合器。 共10个陈列柜,罗列了机械设计内容中大多数常用的基本零件与标准件,并对相应的零件进行了结构和基本受力分析,联接和安装的基本方法的说明,有些常用的零件还给出了简单的应用举例。 通过本实验的观摩,学生可以对照书本所学的基本内容,初步领会机械设计的一些常用零部件的基本设计与应用原理,从而达到举一反三的教学目的,对其所学的课本理论知识进一步巩固和深化。 四、实验要求 1、学生必须带上课本,以便于与书本内容进行对照观察。 2、进入实验室必须保持安静,不得大声喧哗,以免影响其他同学。 3、不得私自打开陈列柜,不得用手触摸各种机械零件模型。 4、服从实验人员的安排,认真领会机械零件的构造原理。 五、思考题 1、常用螺纹联接的方法有哪些? 2、说明无键联结的优缺点. 3、在带传动中,带张紧的方法有哪些?

4、轴上零件轴向常用的定位方法有哪些?举例说明。 第二章滑动轴承实验 实验二滑动轴承基本性能实验 一、概述 滑动轴承用于支承转动零件,是一种在机械中被广泛应用的重要零部件。根据轴承的工作原理,滑动轴承属于滑动摩擦类型。滑动轴承中的润滑油若能形成一定的油膜厚度而将作相对转动的轴承与轴颈表面分开,则运动副表面就不发生接触,从而降低摩擦、减少磨损,延长轴承的使用寿命。 根据流体润滑形成原理的不同,润滑油膜分为流体静压润滑(外部供压式)及流体动压润滑(内部自生式),本章讨论流体动压轴承实验。 流体动压润滑轴承其工作原理是通过轴颈旋转,借助流体粘性将润滑油带入轴颈与轴瓦配合表面的收敛楔形间隙内,由于润滑油由大端入口至小端出口的流动过程中必须满足流体流动连续性条件,从而润滑油在间隙内就自然形成周向油膜压力(见图2-1),在油膜压力作用下,轴颈由图2-1(a)所示的位置被推向图2-1(b)所示的位置。 当动压油膜的压力p在载荷F方向分力的合力与载荷F平衡时,轴颈中心处于某一相应稳定的平衡位置O1,O1位置的坐标为O1(e,φ)。其中e=OO1,称为偏心距;φ为偏位角(轴承中心0与轴颈中心0l连线与外载荷F作用线间的夹角)。 随着轴承载荷、转速、润滑油种类等参数的变化以及轴承几何参数(如宽径比、相对间隙)的不同,轴颈中心的位置也随之发生变化。对处于工况参数随时间变化下工作的非

电子设计实验报告

电子技术课程设计报告

目录 1. 电子琴 (2) (1.1 )设计要求 (2) (1.2 )设计的作用. 目的 (2) (1.3 )设计的具体实现 (3) (1.4)心得体会、存在问题和进一步的改进意见等 (7) (1.5)附录 (8) (1.6 )参考文献 (9) (1.7 )附图 (9) 2. 温度控制电路 (10) 2.1 )设计要求 (10) (2.2 )设计的作用. 目的 (10) (2.3 )设计的具体实现 (10) (2.4)心得体会、存在问题和进一步的改进意见等12 (2.5)附录 (12) (2.6 )参考文献 (13) 3. ...................................................... 信号发生器13 (3.1 )设计要求 (13) (3.2 )设计的作用. 目的 (13) (3.3 )设计的具体实现 (14) (3.4)心得体会、存在问题和进一步的改进意见等 (17) (3.5)附录 (17) (3.6 )参考文献 (17) 4. ...................................................... 音频放大器18 (4.1 )设计要求 (18) (4.2 )设计的作用. 目的 (18) (4.3 )设计的具体实现 (18) 4.4)心得体会、存在问题和进一步的改进意见等 (21) (4.5) .......................................... 附录21

(4.6 )参考文献 (21) 简易电子琴设计报告 一.设计要求本设计是基于学校实验室的环境,根据实验室提供的实验条件来完成设计任务,设计一个简易电子琴。 (1).按下不同琴键即改变RC 值,能发出C 调的八个基本音阶,采用运算放大器构成振荡电路,用集成功放电路输出。 (2).选择电路方案,完成对确定方案电路的设计。计算电路元件参数并记录对应不同音阶时的电路参数值、元件选择、并画出总体电路原理图,阐述基本原理。(3).连接安装调试电路。 (4).写出设计总结报告。 二. 设计的作用、目的 1. 学会用仿真软件对设计的原理图进行仿真。培养创新能力和创新思维,锻炼学生 自学软件的能力,通过查阅手册和文献资料,培养独立分析问题和解决问题的能 力。 2. 培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科 学态度和勇于探索的创新精神。 3. 通过课程设计,使学生在理论计算、结构设计、工程绘图、查阅设计资料、标准 与规范的运用和计算机应用方面的能力得到训练和提高。

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

2011-年全国大学生电子设计竞赛实验报告

2011 年全国大学生电子设计竞赛实验报告 一、实验目的 1、熟练掌握各种常用实验仪器的使用方法。 2、熟悉LM324运放的典型参数及应用。 3、掌握PDF 资料的查询与阅读方法。 4、掌握电子设计与调试的基本流程及方法。 二、实验内容 设计要求: 使用一片通用四运放芯片LM324组成电路框图见图1,实现下述功能: 1. 使用低频信号源产生100.1sin 2()i U f t V =∏,f 0 =500Hz 的正弦波信号,加至 加法器输入端。 2. 自制三角波产生器产生T=0.5ms (±5%),V p-p =4V 的类似三角波信号1o u ,并加至加法器的另一输入端。 3. 自制加法器,使其输出电压U i2 = 10U i1+U o1。 4. 自制选频滤波器,滤除1o u 频率分量,得到峰峰值等于9V 的正弦信号2o u ,2o u 用示波器观察无明显失真。 5.将1o u 和2o u 送入自制比较器,其输出在1K Ω负载上得到峰峰值为2V 的输出电压3o u 。 方案论证与数值计算: 由于电源只能选用+12V 和+5V 两种单电源,由稳压电源供给,而

LM324N具有宽的单电源或双电源工作电压范围,单电源:3-30V,双电源:1.5V-15V,经过试验我们选择双电源供电,所以进行电源的搭建

三角波发生部分: 方案一: 三角波发生器电路按照由方波经过积分电路得到,需要两个放大器,不满足实验要求。 方案二: 利用RC充放电模拟三角波,通过两个电位器分别来调节周期和峰峰值至实验要求的值。达到合理利用现有资源高效达到要求的目的。因此我们采用方案二。题目要求三角波发生器产生的周期为T=0.5ms,Vpp=4V的类似三角波。我们由公式T=2*R14*C1*ln(1+2*R3/R15)另外运放1端输出电压设为U,则Uo1=(R15/(R15+R1))*U。选取电容为较常见的47nf , 计算得R1=2R14;R14=0-5K,所以取R1为0-10k;得到R15=0-10K; 加法器部分

计算机操作系统综合设计实验报告实验一

计算机操作系统综合设计 实验一 实验名称:进程创建模拟实现 实验类型:验证型 实验环境: win7 vc++6.0 指导老师: 专业班级: 姓名: 学号: 联系电话: 实验地点:东六E507 实验日期:2017 年 10 月 10 日 实验报告日期:2017 年 10 月 10 日 实验成绩:

一、实验目的 1)理解进程创建相关理论; 2)掌握进程创建方法; 3)掌握进程相关数据结构。 二、实验内容 windows 7 Visual C++ 6.0 三、实验步骤 1、实验内容 1)输入给定代码; 2)进行功能测试并得出正确结果。 2、实验步骤 1)输入代码 A、打开 Visual C++ 6.0 ; B、新建 c++ 文件,创建basic.h 头文件,并且创建 main.cpp 2)进行功能测试并得出正确结果 A 、编译、运行main.cpp B、输入测试数据 创建10个进程;创建进程树中4层以上的数型结构 结构如图所示:。

createpc 创建进程命令。 参数: 1 pid(进程id)、 2 ppid(父进程id)、3 prio(优先级)。 示例:createpc(2,1,2) 。创建一个进程,其进程号为2,父进程号为1,优先级为2 3)输入创建进程代码及运行截图 4)显示创建的进程

3、画出createpc函数程序流程图 分析createpc函数的代码,画出如下流程图:

四、实验总结 1、实验思考 (1)进程创建的核心内容是什么? 答: 1)申请空白PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 (2)该设计和实际的操作系统进程创建相比,缺少了哪些步骤? 答:只是模拟的创建,并没有分配资源 2、个人总结 通过这次课程设计,加深了对操作系统的认识,了解了操作系统中进程创建的过程,对进程创建有了深入的了解,并能够用高 级语言进行模拟演示。一分耕耘,一分收获,这次的课程设计让 我受益匪浅。虽然自己所做的很少也不够完善,但毕竟也是努 力的结果。另外,使我体会最深的是:任何一门知识的掌握, 仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能 达到功效。

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

微机综合设计实验报告

微机接口实验报告 学院:计算机与通信工程学院专业:计算机科学与技术 班级: 学号: 姓名: 综合设计实验

带分频的AD转换 实现功能: 利用8254实现分频功能,再利用AD0809实现数模转换功能。 设计思路: 首先利用8254芯片的计时功能,将CLK0端输入的1MHz的脉冲信号分频为0.1MHz的脉冲,并且从OUT0端输出,然后将输出的脉冲信号作为AD0809数模转换单元的输入信号,从而实现8254的分频功能和AD0809的数模转换功能。 设计接线图: 实验代码: (加粗为分频部分代码,未加粗为AD转换部分代码) IO8254_MODE EQU 283H ;8254控制寄存器端口地址 IO8254_COUNT0 EQU 280H ;8254计数器0端口地址 IO0809 EQU 298H ;AD0809DE STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, IO8254_MODE ;初始化8254工作方式 MOV AL,37H ;计数器0,方式3 00110111 OUT DX,AL MOV DX,IO8254_COUNT0 ;装入计数初值 MOV AX,000AH ;10D=0AH(可以自己设计分频倍数或者利用多个计数器实现更大倍数的分频) MOV AL,03H

OUT DX,AL MOV AL,AH OUT DX,AL MOV DX, IO0809 ;启动A/D转换器 OUT DX, AL MOV CX, 0FFH ;延时 DELAY: LOOP DELAY IN AL, DX ;从A/D转换器输入数据 MOV BL,AL ;将AL保存到BL MOV CL, 4 SHR AL, CL ;将AL右移四位 CALL DISP ;调显示子程序显示其高四位 MOV AL, BL AND AL, 0FH CALL DISP ;调显示子程序显示其低四位 MOV AH, 02 MOV DL, 20H ;加回车符 INT 21H MOV DL, 20H INT 21H PUSH DX MOV DL, 0FFH ;判断是否有键按下 MOV AH, 06H INT 21H POP DX JE START ;若没有转START MOV AH, 4CH ;退出 INT 21H DISP PROC NEAR ;显示子程序 MOV DL, AL CMP DL, 9 ;比较DL是否>9 JLE DDD ;若不大于则为'0'-'9',加30h为其ASCII码 ADD DL, 7 ;否则为'A'-'F',再加7 DDD: ADD DL,30H ;显示 MOV AH, 02 INT 21H RET DISP ENDP CODE ENDS END START

电工电子综合实验1--裂相电路仿真实验报告格 2

电子电工综合实验论文 专题:裂相(分相)电路 院系:自动化学院 专业:电气工程及其自动化 姓名:小格子 学号: 指导老师:徐行健

裂相(分相)电路 摘要: 本实验通过仿真软件Mulitinism7,研究如何将一个单相的交流分裂成多相交流电源的问题。用如下理论依据:电容、电感元件两端的电压和电流相位差是90度,将这种元件和与之串联的电阻当作电源,这样就可以把单相交流源分裂成两相交流电源、三相电源。同时本实验还研究了裂相后的电源接不同的负载时电压、功率的变化。得到如下结论: 1.裂相后的电源接相等负载时两端的电压和负载值成正相关关系; 2.接适当的负载,裂相后的电路负载消耗的功率将远大于电源消耗的功率; 3.负载为感性时,两实验得到的曲线差别较小,反之,则较大。 关键词:分相两相三相负载功率阻性容性感性 引言 根据电路理论可知,电容元件和电感元件最容易改变交流电的相位,又因它们不消耗能量,可用作裂相电路的裂相元件。所谓裂相,就是将适当的电容、电感与三相对称负载相配接,使三相负载从单相电源获得三相对称电压。而生活和工作中一般没有三相动力电源,只有单相电源,如何利用单相电源为三相负载供电,就成了值得深入研究的问题了。 正文 1.实验材料与设置装备 本实验是理想状态下的实验,所有数据都通过在电路专用软件Multisim 7中模拟实验测得的;所有实验器材为(均为理想器材) 实验原理: (1). 将单相电源分裂成两相电源的电路结构设计 把电源U1分裂成U1和U2输出电压,如下图所示为RC桥式分相电压原理,可以把输入电压分成两个有效值相等,相位相差90度的两个电压源。 上图中输出电压U1和U2与US之比为

Java程序设计实验报告2(弹球游戏)[1]1

《Java语言程序设计》课程设计 实习报告 题目: 班级: 学号: 姓名: 同组人员: 指导老师:张彬

一、实验目的 1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。 2、掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行 线程的创建、启动等工作。 3、培养独立查找资料,并解决问题的能力。 二、实验任务 1、设计并编程实现弹球游戏: 用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。 鼠标在界面中显示为方块状,玩家需按住鼠标来回移动以避开运动的小球及屏幕四周,如果鼠标碰到任一小球或者窗口四周,则游戏结束。 程序需提供计时功能,并最终显示玩家能坚持多少秒。 2、程序要求: (1)具备相应界面,并通过事件编程,实现相应的GUI组件功能。 (2)使用多线程技术,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。 (3)实现鼠标与屏幕四周,以及与小球的碰撞检测。 三、开发工具与平台 1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只

是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C++插件(CDT)。 2.开发平台:JDK1.5 四、设计思路 1.界面设计 (1)制作一个简单的面板JFrame,文件保存为bollFrame.java 其中为一public的类bollFrame,其构造方法为: bollFrame(int n){ super(); setTitle("我的弹球小游戏"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//得到电脑屏幕大小 setSize(450,450); setLocation((dimension.width-game.getWidth())/2-250, (dimension.height-game.getHeight())/2-250);//设置面板显示基中; this.n = n; myBollPanel = new bollPanel(n);//构造一个画板; add(myBollPanel);//将画板放入JFrame createMenu();//创建菜单; setJMenuBar(bar); } (2)构造画板类,文件保存为bollPanel.java 其构造函数如下: bollPanel(int n){ this.n = n; // executorThread = Executors.newCachedThreadPool();//创建线程池; mouse = new mouseThread(mxNow,myNow,groupThread,this);//启动鼠标线程; this.setIsOver(false);//游戏开始线程条件的判断; for(int i =0 ;i

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

电子电路综合设计实验报告

电子电路综合设计实验报告 实验5自动增益控制电路的设计与实现 学号: 班序号:

一. 实验名称: 自动增益控制电路的设计与实现 二.实验摘要: 在处理输入的模拟信号时,经常会遇到通信信道或传感器衰减强度大幅变化的情况; 另外,在其他应用中,也经常有多个信号频谱结构和动态围大体相似,而最大波幅却相差甚多的现象。很多时候系统会遇到不可预知的信号,导致因为非重复性事件而丢失数据。此时,可以使用带AGC(自动增益控制)的自适应前置放大器,使增益能随信号强弱而自动调整,以保持输出相对稳定。 自动增益控制电路的功能是在输入信号幅度变化较大时,能使输出信号幅度稳定不变或限制在一个很小围变化的特殊功能电路,简称为AGC 电路。本实验采用短路双极晶体管直接进行小信号控制的方法,简单有效地实现AGC功能。 关键词:自动增益控制,直流耦合互补级,可变衰减,反馈电路。 三.设计任务要求 1. 基本要求: 1)设计实现一个AGC电路,设计指标以及给定条件为: 输入信号0.5?50mVrm§ 输出信号:0.5?1.5Vrms; 信号带宽:100?5KHz; 2)设计该电路的电源电路(不要际搭建),用PROTE软件绘制完整的电路原理图(SCH及印制电路板图(PCB 2. 提高要求: 1)设计一种采用其他方式的AGC电路; 2)采用麦克风作为输入,8 Q喇叭作为输出的完整音频系统。 3. 探究要求: 1)如何设计具有更宽输入电压围的AGC电路; 2)测试AGC电路中的总谐波失真(THD及如何有效的降低THD 四.设计思路和总体结构框图 AGC电路的实现有反馈控制、前馈控制和混合控制等三种,典型的反馈控制AGC由可变增益放大器(VGA以及检波整流控制组成(如图1),该实验电路中使用了一个短路双极晶体管直接进行小信号控制的方法,从而相对简单而有效实现预通道AGC的功能。如图2,可变分压器由一个固定电阻R和一个可变电阻构成,控制信号的交流振幅。可变电阻采用基极-集电极短路方式的双极性晶体管微分电阻实现为改变Q1电阻,可从一个由电压源V REG和大阻值电阻F2组成的直流源直接向短路晶体管注入电流。为防止Rb影响电路的交流电压传输特性。R2的阻值必须远大于R1。

电子设计综合实训报告

目录 摘要 (2) 1、前言 (3) 2、设计过程 (4) 2.1、任务及要求 (4) 2.1.1、任务 (4) 2.1.2、要求 (4) 2.2、总体设计方案 (4) 2.2.1、系统设计原理 (4) 2.2.2、总体控制框图 (4) 2.3、硬件电路 (5) 2.3.1、SCT89C52单片机介绍 (5) 2.3.2、时钟电路 (7) 2.3.3、复位电路 (7) 2.4、软件电路 (9) 2.4.1、系统流程图 (9) 2.4.2、系统程序 (9) 3、结果 (11) 4、结论 (11) 5、参考文献 (12) 6、致谢 (12)

摘要 彩灯,又名花灯,是我国普遍流行的传统的民间的综合性的工艺品。彩灯艺术也就是灯的综合性的装饰艺术。 在古代,彩灯主要作用是照明,人类用动植物和矿物的油蜡来作采光的灯。由纸或者绢作为灯笼的外皮,骨架通常使用竹或木条制作,中间放上蜡烛。《周礼、司恒氏》载“凡邦之大事,供烛庭燎、烛麻烛也”,可见,周朝就有了烛灯。到了战国,灯的制造工艺蓬勃发展,这在屈原《楚辞》中就有所表述:“兰膏明烛华铜错”。汉代是铜灯制作的鼎盛时期。《西京杂记》载:“汉高祖入咸阳宫,秦有青玉五枝灯,高七尺五寸,下作蟠螭,口衔灯,燃则鳞甲皆动,焕炳若列星盈盈。””到了唐朝,元宵放灯发展成盛况空前的灯市,京城“作灯轮高二十丈,衣以锦绮,饰以金银,燃五万盏灯,簇之如花树”。这之后,各地花灯活动尤为盛行。 到了现代彩灯蕴涵着丰富的文化底蕴,被广泛地应用于各种店面的装饰。变换无穷的彩灯样式,给城市增添活力,吸引着人们的注意力,深受人民的喜爱。在日常生活中,人们还将彩灯摆放成各种图案,增添美感。随着社会的发展传统的彩灯逐渐被LED彩灯所代替,可以通过单片机编程控制的LED彩灯变换更加丰富多彩。 关键词:LED灯单片机控制系统

《程序设计课程设计》实验报告材料

《程序设计》课程设计 姓名: 学号: 班级:软件工程14 班 指导教师: 成绩:

1.消除类游戏 1.1【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 1.2【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 1.3【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 1.4【功能实现】 #include #include using namespace std;

int main() { int m, n, i ,j; int temp; cin >> n >> m; temp = m; m = n; n = temp; int * map = new int[m * n]; int * mark = new int[m * n]; int * tmap = map; int * tmark = mark; int dif = 0; //输入 for ( i = 0 ; i < m ; i++ ) for (j = 0; j < n; j++) cin >> *(tmap + i * n + j); for (i = 0; i < m; i++) for (j = 0; j < n; j++) { //横行 if ((tmap + 2 - map) % n != 0 || (tmap + 1 - map) % n != 0) if (*(tmap) == *(tmap + 1) && * (tmap + 1) == *(tmap + 2)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + 1) = 0; *(tmark + dif + 2) = 0; } //竖列 if (tmap + 2 * n - map < m * n || tmap + n - map < m * n) if (*(tmap) == *(tmap + n) && * (tmap + n) == *(tmap + 2 * n)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + n) = 0; *(tmark + dif + 2 * n) = 0; } tmap = map + (j+1) + i * n; } //输出 cout << endl; tmap = map; for (i = 0; i < m; i++)

吉林大学无机化学研究生化学综合设计实验报告--全

化学综合和设计实验 实验报告 姓名:李玲云 学号:2014332036 专业:无机化学

扫描电子显微镜和EDS能谱演示实验 一、实验目的 1、初步了解扫描电子显微镜的工作原理、基本构造、操作及用途 2、掌握样品的制备方法 二、扫描电子显微镜的工作原理及用途 从电子枪阴极发出的直径20cm~30cm的电子束,受到阴阳极之间加速电压的作用,射向镜筒,经过聚光镜及物镜的会聚作用,缩小成直径约几毫微米的电子探针。在物镜上部的扫描线圈的作用下,电子探针在样品表面作光栅状扫描并且激发出多种电子信号。这些电子信号被相应的检测器检测,经过放大、转换,变成电压信号,最后被送到显像管的栅极上并且调制显像管的亮度。显像管中的电子束在荧光屏上也作光栅状扫描,并且这种扫描运动与样品表面的电子束的扫描运动严格同步,这样即获得衬度与所接收信号强度相对应的扫描电子像,这种图象反映了样品表面的形貌特征。第二节扫描电镜生物样品制备技术大多数生物样品都含有水分,而且比较柔软,因此,在进行扫描电镜观察前,要对样品作相应的处理。扫描电镜样品制备的主要要求是:尽可能使样品的表面结构保存好,没有变形和污染,样品干燥并且有良好导电性能。 在高压(2~20kV)的作用下,利用聚焦得到非常细的高能电子束,使其在试样上扫描(电子束与试样表层物质相互作用),激发出背散射电子、二次电子等信息,通过对上述信息的接收、放大和显示

成像,对试样表面进行分析。 根据量子力学理论,物质中存在着隧道现象,电子可以通过隧道穿过一个能级高度大于其总能量的势垒而出现在势垒的另一侧。因此,物质的表面电子可以借助隧道作用散逸出来,在物质表面附近形成电子云。在导体表面电子云中某位置的电子几率密度,会随着此位置与表面距离的增大而以指数形式迅速衰减。 扫描电子显微镜被广泛应用于材料科学、生物医学、信息产业、地质、石油化工和其它相关学科领域。是在微观尺度范围内,对样品的形貌进行观察、分析和测量的工具。现在的扫描电子显微镜,在配备相应附件后,可以获得试样表面的化学成分,晶体缺陷、电势、磁场及晶体取向等信息,是对固体物质表层进行综合分析的仪器。 吉林大学无机合成与制备化学国家重点实验室拥有场发射扫描电子显微镜。该显微镜通过接收二次电子信息来对样品表面形貌进行分析。显微镜的扫描倍数从25到650000倍,最大分辨率可达到1nm。显微镜有Oxford的能谱附件,可以进行样品的能谱测试。该显微镜不能对具有较强磁性的物质进行分析。 三、扫描电子显微镜的构造 1、电子光学系统(镜筒) 电子枪、三个电磁透镜、扫描线圈、试样室 电子枪中的灯丝产生高能电子束,电子枪的引出电压直接反映了灯丝状态的好坏(5kV~8kV不等)。每次实验都必须注意并记录电子枪引出电压。

电子设计大赛实验报告

2014年江苏省大学生电子设计竞赛实验报告 无线电能传输装置(F题) 2014年8月15日 摘要:本设计基于磁耦合式谐振荡电路来进行无线电能传输,点亮LED灯。由于输入和输出都是直流电 的形式,因此本系统将分为以下四个部分:第一部分为驱动电路(DC-AC),为使直流分量转化成交流电并通过耦合线圈将电能传输给负载,采用LC谐振的方式让回路中电容和电感构成一个二阶LC谐振电路,驱动MOS管形成交流电。第二部分为发射电路(AC-AC),应用电磁感应原理,在二次线圈中产生感应电流并输给接受电路。第三部分为电能转换电路(AC-DC),输出的感应交流电经整流桥桥式整流后流入升压电路。第四部分为升压电路(DC-DC),对整流之后的直流进行升压,防止整流后的电压无法驱动LED。本设计分模块搭建并对各个部分电路进行原理分析。在调试时,采用分模块调试,根据调试结果修改参数,最终形成一个完整的稳定系统。 关键词: 磁耦合式谐振荡电路LC振荡电路桥式整流DC-DC升压 [Abstract] The design is based on magnetic resonance oscillation circuit coupled to the wireless power transmission, lit LED lights. Since the input and output are in the form of direct current, so the system will be divided into the following four parts: The first part of the drive circuit (DC-AC), is converted into alternating current so that the DC component and the power transmission through the coupling coil to the load, using LC resonant circuit in a manner so that the capacitance and inductance form a second order LC resonant circuit, the AC drive MOS tube formation. The second part is the transmitter circuit (AC-AC), application of the principle of electromagnetic induction,

物联网传输综合课程设计实验报告 人体红外数据通信实验

物联网传输综合课程设计实验报告 人体红外数据通信实验 一、实验目的 1. 了解基于Z-Stack 协议栈的SappWsn 应用程序框架的工作机制 2. 掌握在ZigBee 协议栈中添加人体红外传感器驱动的方法。 二、实验设备 1. 装有IAR 开发工具的PC 机一台 2. 下载器一个 3. 物联网多网技术开发设计平台一套 三、实验原理 在Z-Stack APP中的HAL\Target\CC2530EB\Includes组中,提供了一个hal_io.h的文件,如图所示。 其中,提供了名为HalIOSetInput 的函数,可以将燃气传感器端口(P1.0)设置为输入,然后通过调用HalIOGetLevel 函数来获取传感器状态。 四、实验步骤 1、将单片机zigbee协调器拆卸下来,取出烧写器。通过Mini USB接口将zigbee 协调器与下载器和PC机相连。

2、将实验箱控制方式切换开关拨至“手动”一侧,转动实验箱“旋钮节点选择”旋钮,使得协调器旁边的LED灯被点亮 3、打开配套代码中的ZStack-CC2530\Projects\SappWsn\SappWsn.eww工程文件,在“Tools”组中,找到“f8wConfig.cfg”文件,双击打开,并找到大概第59 行的“-DZAPP_CONFIG_PAN_ID=0xFFFF”,将其中的“0xFFFF”修改为其他值,例如0x0010

4、在工程目录结构树上方的下拉列表中,选择“CoordinatorEB”,点击工具栏中的“Make”按钮,编译工程,等待工程编译完成,如看到警告,可以忽略。在工程目录结构树中的工程名称上点击鼠标右键,选择“Options”,并在弹出的对话框中选择左侧的“Debugger”,并在右侧的“Driver”列表中选择“Texas Instruments”,点击“Download and Debug”按钮。待程序下载完毕后,点击“Go”按钮,使程序开始运行。点击工具栏中的“Stop Debugging”,退出调试模式, 5、转动实验箱“旋钮节点选择”旋钮,使得热释红外传感器节点旁边的LED灯被点亮,在工程目录结构树上方的下拉列表中,选择“EndDeviceEB”,在“SAPP_Device.h”文件中,取消“HAS_IRPERS”的注释,并保证其他的功能均被注释,如图所示

相关文档
最新文档