C语言程序设计计算24游戏实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);}
三、程序框图或流程图,程序清单与调用关系
整个程序只用到了一个主函数,不涉及其他调用。分布列出所有情况。
Main 函数,程序的主函数 定义浮点类型变量 a,b,c,d,w,x,y,z a,b,c,d 分别代表定义输入的四个数 w,x,y,z 分别代表输出计算四个数 Multiplex 部分代表各个计算公式
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);}
本次上机实践所使用的平台和相关软件。 平台:Windows XP or Windows7 相关软件:VC6.0。
二、方案设计与论证
关于这个计算 24 游戏的设计,首先我将题目看成两部分,一部分为运算数, 一部分为运算符。首先由于有四个数,则只有三个运算符,三个运算符中在加减 乘除中选取。由于涉及了括号,个人认为用穷举法才能全面地进行运算,我们可 以将运算符和括号这部分归为主运算部分,在这部分中,运算数的位置固定,但 是运算符和括号的位置会改变,而且程序主要就是在这部分运算,直接将数值引 入,然后计算判断是否等于 24,若等于 24,则输出数值和这些运算符、括号的 位置构成的运算式;然而,这是不够全面的,因为还要考虑到运算数的排列位置, 于是有了第二部分,运算数的位置全排列,同样是采用穷举法,将运算数全排列, 在每个排列后面调用主运算的方法,从而达到全面不遗漏地计算。在 MAIN 函数 中,我们仅需要记录输入的 4 个数字,然后将数值用在全排列函数中即可。整个 程序的设计只需定义一个主函数,并不涉及相关的函数调用。看起来很繁琐,但 在运用上很简单,只要将各种情况运用数学思维列举出来,能简明扼要地表现出 来。具体程序过程如图 1 所示。
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);}
图1
四、全部源程序清单
#include <stdio.h> 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);}
课程设计报告
学院、系: 专业名称: 课程设计科目 所在班级: 学生学号: 学生姓名: 指导教师: 完成时间:
吉林大学珠海学院计算机科学与技术系 软件工程
C 语言程序课程设计 10来自百度文库班
04121010 赵学文 郭晓燕 2013 年 3 月-5 月
计算 24 游戏 一、设计任务与目标
题目计算 24 游戏,最终要求是输入四个一位数,通过加减乘除,允许加入 括号,计算出 24,显示计算过程,并提示成功信息。可以首先完成输入三个一 位数,只通过加减,计算出 12;再完成通过加减乘除,再完成可以加入括号。 刚看到题目的时候,手上并无其他资料,纯粹觉得是一个有趣的数学问题,需要 自己全动手设计才能到达目标,而目标是在输入四个数之后,先进行全排列,然 后进行全运算,从而最终得到结果以输出。
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);}
三、程序框图或流程图,程序清单与调用关系
整个程序只用到了一个主函数,不涉及其他调用。分布列出所有情况。
Main 函数,程序的主函数 定义浮点类型变量 a,b,c,d,w,x,y,z a,b,c,d 分别代表定义输入的四个数 w,x,y,z 分别代表输出计算四个数 Multiplex 部分代表各个计算公式
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);}
本次上机实践所使用的平台和相关软件。 平台:Windows XP or Windows7 相关软件:VC6.0。
二、方案设计与论证
关于这个计算 24 游戏的设计,首先我将题目看成两部分,一部分为运算数, 一部分为运算符。首先由于有四个数,则只有三个运算符,三个运算符中在加减 乘除中选取。由于涉及了括号,个人认为用穷举法才能全面地进行运算,我们可 以将运算符和括号这部分归为主运算部分,在这部分中,运算数的位置固定,但 是运算符和括号的位置会改变,而且程序主要就是在这部分运算,直接将数值引 入,然后计算判断是否等于 24,若等于 24,则输出数值和这些运算符、括号的 位置构成的运算式;然而,这是不够全面的,因为还要考虑到运算数的排列位置, 于是有了第二部分,运算数的位置全排列,同样是采用穷举法,将运算数全排列, 在每个排列后面调用主运算的方法,从而达到全面不遗漏地计算。在 MAIN 函数 中,我们仅需要记录输入的 4 个数字,然后将数值用在全排列函数中即可。整个 程序的设计只需定义一个主函数,并不涉及相关的函数调用。看起来很繁琐,但 在运用上很简单,只要将各种情况运用数学思维列举出来,能简明扼要地表现出 来。具体程序过程如图 1 所示。
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);}
图1
四、全部源程序清单
#include <stdio.h> 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);}
课程设计报告
学院、系: 专业名称: 课程设计科目 所在班级: 学生学号: 学生姓名: 指导教师: 完成时间:
吉林大学珠海学院计算机科学与技术系 软件工程
C 语言程序课程设计 10来自百度文库班
04121010 赵学文 郭晓燕 2013 年 3 月-5 月
计算 24 游戏 一、设计任务与目标
题目计算 24 游戏,最终要求是输入四个一位数,通过加减乘除,允许加入 括号,计算出 24,显示计算过程,并提示成功信息。可以首先完成输入三个一 位数,只通过加减,计算出 12;再完成通过加减乘除,再完成可以加入括号。 刚看到题目的时候,手上并无其他资料,纯粹觉得是一个有趣的数学问题,需要 自己全动手设计才能到达目标,而目标是在输入四个数之后,先进行全排列,然 后进行全运算,从而最终得到结果以输出。
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);}