24点游戏 高质量C语言程序_c语言实现24点游戏
24点游戏 高质量C语言程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实现24点游戏”。
设计题目: 24点游戏
2012年 9 月 1 日
目录
一题目及要求 二项目概述 三项目分析 四程序思路分析
五总结 六答辩记录 七教师意见
一 题目及要求 计算24点游戏
输入四个数,通过加减乘除计算出24,显示计算过程,并提示成功信息。二 项目概述
我设计的是24点游戏,它功能是输出给定4个数运算得出24的算式。大概思路很简单,就是穷举4个数字排列组合后的所算式,选择其中结果为24的,并筛选符合数学法则的输出,难点在于穷举 三项目分析
通过题目这是大家很熟悉的游戏,大家也都知道直接计算很难,想不出具体的算法,但考虑到计算机的特点——运算速度快,不知疲倦,我们可以另辟蹊径,让计算机算出所有与这4个数字相关的算式,选择其中得24的算输出即可。所以确定思路,穷举。大概分几个模块,主函数,转化四则运算的fun函数,for循环,if选择,scanf,printf。四 程序思路分析
程序要求给出4个数字,输出算出等于24的结果的所有算式,所以大体上首先scanf4个数字储存在数组中,然后试用定义的fun函数,fun函数为将4则运算
转化为数字的函数,然后用多个for语句实现数字的排列组合,关于括号的问题,分两种情况,一种是“三一”的,一种是“二二”的。然后写一个报错的语句,关于结果用printf输出,如果结果为-24,-1/24,1/24的,可以改变输出结果的顺序。
下面附上源程序: #include double fun(double a1,double a2,int b){ switch(b){
case 0:return(a1+a2);
case 1:return(a1-a2);
case 2:return(a1*a2);
case 3:return(a1/a2);} } void main(){ int g;for(g=0;g
int i,j,k,l,n,m,r,save[4];
double num[4]={1,1,1,1},tem1,tem2,tem3,abc=1111;
char sign[5]=“+-*/”;
printf(“请输入4个数,数字与数字之间用空格隔开:”);
for(i=0;i
{
scanf(“%lf”,num+i);
save[i]=num[i];
} for(i=0;i
for(j=0;j
if(j!=i)
{
for(k=0;k
if(k!=i&&k!=j)
{
for(l=0;l
if(l!=i&&l!=j&&l!=k)
{
for(n=0;n
for(m=0;m
for(r=0;r
{
tem1=fun(num[i],num[j],n);
tem2=fun(tem1,num[k],m);
tem3=fun(tem2,num[l],r);
if(tem3==24.0)printf(“{(%d%c%d)%c%d}%c%d=24n”,save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
else if(tem3==-24.0)printf(“{%d%c(%d%c%d)}%c%d=24n”,save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);
else if(tem3==1.0/24.0)printf(“%d%c{(%d%c%d)%c%d}=24n”,save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);
else if(tem3==-1.0/24.0)printf(“%d%c{%d%c(%d%c%d)}=24n”,save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]);
else
{
tem1=fun(num[i],num[j],n);
tem2=fun(num[k],num[l],r);
if(tem2 == 2 && m == 3)
printf(“此处省略出现的一个非法运算n”);
else
{
tem3=fun(tem1,tem2,m);
if(tem3==24.0)
printf(“(%d%c%d)%c(%d%c%d)=24n”,save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
}
}
}
}
}
} g++;} } 下面详细说明:
double fun(double a1,double a2,int b)//定义fun函数 { switch(b)
{
case 0:return(a1+a2);
case 1:return(a1-a2);
case 2:return(a1*a2);
case 3:return(a1/a2);} }用switch语句将四则运算转化。void main()定义主函数
int i,j,k,l,n,m,r,save[4];
double num[4]={1,1,1,1},tem1,tem2,tem3,abc=1111;
char sign[5]=“+-*/”;
printf(“请输入4个数,数字与数字之间用空格隔开:”);
for(i=0;i
{
scanf(“%lf”,num+i);//输入语句
save[i]=num[i];}
定义参数,有fun函数转化四则运算,但需要将四则运算的符号存入字符数组中以便输出时使用。用for语句循环实现输入。
用两段语句分两种情况计算for(n=0;n
for(m=0;m
for(r=0;r
{
tem1=fun(num[i],num[j],n);
tem2=fun(tem1,num[k],m);
tem3=fun(tem2,num[l],r);for循环实现运算的排列组合,上面是一种情况(不带有括号的),下面是另一种
else
{
tem1=fun(num[i],num[j],n);
tem2=fun(num[k],num[l],r);else 下面是两两组合的情况
{tem3=fun(tem1,tem2,m);
if(tem3==24.0)printf(“(%d%c%d)%c(%d%c%d)=24n”,save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
用for和if语句实现数字的排列组合,for(i=0;i
for(k=0;k
{
for(l=0;l
if(l!=i&&l!=j&&l!=k)
{ 输出语句如下 if(tem3==24.0)printf(“{(%d%c%d)%c%d}%c%d=24n”,save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);
else if(tem3==-24.0)printf(“{%d%c(%d%c%d)}%c%d=24n”,save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);
else if(tem3==1.0/24.0)printf(“%d%c{(%d%c%d)%c%d}=24n”,save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);
else if(tem3==-1.0/24.0)printf(“%d%c{%d%c(%d%c%d)}=24n”,save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]);对于其他几种结果通过改变输出时变量的顺序即可。五 总结
通过这次学习,我学到了很多,这个程序的难度级别是B,不是很难,但是算法比较繁琐,考虑要细心才行。通过此次程序设计,也让我们把平时学的理论知识用在了实际问题上,有助于我们的理解和运用,而且这个程序设计本身也比较有趣,能激发我们自己去深入研究。
以上就是我对这次程序设计的心得体会,也希望在以后的专业课学习中能够充分利用计算机本身速度快的优势,利用编写程序完成一些用手工计算很难完成的问题。
张博禹 05111112 六 答辩记录
七 教师意见
#include #include #include struct student { int num; char name[15];//定义学生结构体,st数组。int score[5]; float jqave; int rank; }st[27]; struct kecheng {......
#include course_name(int i)/*把科目变成数字函数*/ { switch(i){case 1:printf("英语 ");break;case 2:printf("数学");break;case 3:printf("C语言");break;case......
C语言程序总结1·C程序是由函数构成的。一个C源程序至少包含一个函数(main函数),也可以包含一个main和若干其他函数。C的函数相当于其它语言中的子程序。用函数来实现特定的功能。......
提高C语言程序运行稳定性的方法一、前言由于C语言的灵活性,用C语言开发出来的程序容易造成内存泄漏、运行异常、运行结果不可预期等程序质量问题,在用C语言开发程序的过程中,必......
业余党校笔记(全部整理)2009年4月16日 第一讲《中国共产党的性质和指导思想》 党的性质,是指一个政党所具有的质的规定性,即它代表哪个阶级利益,具有哪个阶级的特性。中国共产党......
