LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 11164|回复: 61

如何用c写一个算24的小游戏

[复制链接]
发表于 2002-8-27 22:13:03 | 显示全部楼层 |阅读模式
我的设想是这样的:首先计算机给出四个随机数,然后
*如果这四个数可以计算出24则等待直到用户按键,显示出计算方法;
*如果这四个数不能计算出24则显示impossible;

其中我想不明白的有两点:

(1)怎么实现让计算机随机给出一个数?

(2)计算机怎么自己计算24,难道是人工智能?
发表于 2002-8-28 08:46:11 | 显示全部楼层
A1:可以用rand()产生伪随机数。
A2:你的前提条件太少。如果这样算的话,是否可以用平方根、对数等等呢?还是只能用“+”、“-”、“*”、“/”?
 楼主| 发表于 2002-8-28 11:21:53 | 显示全部楼层
只能用 加 减 乘 除

望不吝赐教
发表于 2002-8-28 16:06:20 | 显示全部楼层
/*
*这个程序是由scream兄提出的算24的小游戏程序的一个试验算法.
*
*说明:目前暂时只实现用"+","-","*","/"的1000以内数算法.可能算法有遗漏。:-(
*我认为采用伪随机数不如由用户输入仍数为好。
*编译: gcc game.c -o game
*
*执行: ./game
*            
*                by jerboa 2002-8-28
*
* */
#include <stdio.h>
#include <stdlib.h>

int Process(int,int,int,int);
void bubble(int *,int);

int Num[4];

int main()
{
        int i,j=0,Data;
        printf("\nthe game is guess the number 24.Press Ctrl-c into Exit.");
        while(1){
                for(i=0;i<4;i++){
//                        ptintf("\n请输入第 %d 个数:"i+1);
//                        scanf("%d",&Num);
//

//----------------------------------------------------------------------------------------
                                while(1){
                                                   Data=rand();
                                        if(Data>1000) continue;
                                        break;
                                }
                                Num=Data;
//-----------------------------------------------------------------------------------------
                }
                bubble(Num,4);//汽泡排序
                Process(Num[3],Num[2],Num[1],Num[0]);
        }
                       
}
void bubble(int *item,int count)
{
        register int a,b,t;
        for(a=1;a<count;++a)
                for(b=count-1;b>=a;--b){
                        if(item[b-1]>item){
                                t=item[b-1];
                                item[b-1]=item;
                                item=t;
                        }
                }
}
                                       
int Process(int Num1,int Num2,int Num3,int Num4)  //各种可能中,可能有遗漏!
{
        if(Num1+Num2+Num3+Num4==24) printf("\n%d+%d+%d+%d=24",Num1,Num2,Num3,Num4);
        if(Num1*Num2*Num3*Num4==24) printf("\n%d*%d*%d*%d=24",Num1,Num2,Num3,Num4);
       
        if(Num1+Num2+Num3-Num4==24) printf("\n%d+%d+%d-%d=24",Num1,Num2,Num3,Num4);
        if(Num1+Num2-Num3+Num4==24) printf("\n%d+%d-%d+%d=24",Num1,Num2,Num3,Num4);
        if(Num1+Num2-Num3-Num4==24) printf("\n%d+%d-%d-%d=24",Num1,Num2,Num3,Num4);
       
        if(Num1-Num2+Num3+Num4==24) printf("\n%d-%d+%d+%d=24",Num1,Num2,Num3,Num4);
        if(Num1-Num2+Num3-Num4==24) printf("\n%d-%d+%d-%d=24",Num1,Num2,Num3,Num4);
        if(Num1-Num2-Num3+Num4==24) printf("\n%d-%d-%d+%d=24",Num1,Num2,Num3,Num4);
        if(Num1-Num2-Num3-Num4==24) printf("\n%d-%d-%d-%d=24",Num1,Num2,Num3,Num4);
       
        if((Num1-Num2)*Num3+Num4==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num2)*Num4+Num3==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)*Num2+Num4==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)*Num4+Num2==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)*Num2+Num3==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)*Num3+Num2==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);

        if((Num2-Num3)*Num1+Num4==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num2-Num3)*Num4+Num1==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num2-Num4)*Num1+Num3==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num2-Num4)*Num3+Num1==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);

        if((Num3-Num4)*Num1+Num2==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num3-Num4)*Num2+Num1==24) printf("\n(%d-%d)*%d+%d=24",Num1,Num2,Num3,Num4);

        if((Num1-Num2)*(Num3-Num4)==24) printf("\n(%d-%d)*(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)*(Num2-Num4)==24) printf("\n(%d-%d)*(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)*(Num2-Num3)==24) printf("\n(%d-%d)*(%d-%d)=24",Num1,Num2,Num3,Num4);

        if((Num1-Num2-Num3)*Num4==24) printf("\n(%d-%d-%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num2-Num4)*Num3==24) printf("\n(%d-%d-%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3-Num4)*Num2==24) printf("\n(%d-%d-%d)*%d=24",Num1,Num2,Num3,Num4);
        if(Num1*(Num2-Num3-Num4)==24) printf("\n%d*(%d-%d-%d)=24",Num1,Num2,Num3,Num4);

        if((Num1+Num2+Num3)*Num4==24) printf("\n(%d+%d+%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1+Num2+Num4)*Num3==24) printf("\n(%d+%d+%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1+Num3+Num4)*Num2==24) printf("\n(%d+%d+%d)*%d=24",Num1,Num2,Num3,Num4);
        if(Num1*(Num2+Num3+Num4)==24) printf("\n%d*(%d+%d+%d)=24",Num1,Num2,Num3,Num4);

        if((Num1-Num2+Num3)*Num4==24) printf("\n(%d-%d+%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num2+Num4)*Num3==24) printf("\n(%d-%d+%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3+Num4)*Num2==24) printf("\n(%d-%d+%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1+Num2-Num3)*Num4==24) printf("\n(%d+%d-%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1+Num2-Num4)*Num3==24) printf("\n(%d+%d-%d)*%d=24",Num1,Num2,Num3,Num4);
        if((Num1+Num3-Num4)*Num2==24) printf("\n(%d+%d-%d)*%d=24",Num1,Num2,Num3,Num4);
        if(Num1*(Num2+Num3-Num4)==24) printf("\n%d*(%d+%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num1*(Num2-Num3+Num4)==24) printf("\n%d*(%d-%d+%d)=24",Num1,Num2,Num3,Num4);

        if((Num1+Num2)*(Num3+Num4)==24) printf("\n(%d+%d)*(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num3)*(Num2+Num4)==24) printf("\n(%d+%d)*(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num4)*(Num2+Num3)==24) printf("\n(%d+%d)*(%d+%d)=24",Num1,Num2,Num3,Num4);

        if((Num1*Num2)+(Num3*Num4)==24) printf("\n(%d*%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num3)+(Num2*Num4)==24) printf("\n(%d*%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num4)+(Num2*Num3)==24) printf("\n(%d*%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);

        if((Num1+Num2)*(Num3-Num4)==24) printf("\n(%d+%d)*(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num2)*(Num3+Num4)==24) printf("\n(%d-%d)*(%d+%d)=24",Num1,Num2,Num3,Num4);
       
        if(Num1%(Num2+Num3+Num4))
                if(Num1/(Num2+Num3+Num4)==24) printf("\n%d/(%d+%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%(Num2-Num3+Num4))
                if(Num1/(Num2-Num3+Num4)==24) printf("\n%d/(%d-%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%(Num2+Num3-Num4)==0)
                if(Num1/(Num2+Num3-Num4)==24) printf("\n%d/(%d+%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%(Num2-Num3-Num4)==0)
                if(Num1/(Num2-Num3-Num4)==24) printf("\n%d/(%d-%d-%d)=24",Num1,Num2,Num3,Num4);

        //if(Num2/(Num1+Num3+Num4)==24) printf("\n%d/(%d+%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%(Num1-Num3+Num4)==0)
                if(Num2/(Num1-Num3+Num4)==24) printf("\n%d/(%d-%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%(Num1+Num3-Num4)==0)
                if(Num2/(Num1+Num3-Num4)==24) printf("\n%d/(%d+%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%(Num1-Num3-Num4)==0)
                if(Num2/(Num1-Num3-Num4)==24) printf("\n%d/(%d-%d-%d)=24",Num1,Num2,Num3,Num4);

        //if(Num3/(Num1+Num2+Num4)==24) printf("\n%d/(%d+%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num3%(Num1-Num2+Num4)==0)
                if(Num3/(Num1-Num2+Num4)==24) printf("\n%d/(%d-%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num3%(Num1+Num2-Num4)==0)
                if(Num3/(Num1+Num2-Num4)==24) printf("\n%d/(%d+%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num3%(Num1-Num2-Num4)==0)
                if(Num3/(Num1-Num2-Num4)==24) printf("\n%d/(%d-%d-%d)=24",Num1,Num2,Num3,Num4);

        //if(Num4/(Num1+Num2+Num3)==24) printf("\n%d/(%d+%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num4%(Num1-Num2+Num3)==0)
                if(Num4/(Num1-Num2+Num3)==24) printf("\n%d/(%d-%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num4%(Num1+Num2-Num3)==0)
                if(Num4/(Num1+Num2-Num3)==24) printf("\n%d/(%d+%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num4%(Num1-Num2-Num3)==0)
                if(Num4/(Num1-Num2-Num3)==24) printf("\n%d/(%d-%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num2)%Num3==0)
                if((Num1-Num2)/Num3+Num4==24) printf("\n(%d-%d)/%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num2)%Num4==0)
                if((Num1-Num2)/Num4+Num3==24) printf("\n(%d-%d)/%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)%Num2==0)
                if((Num1-Num3)/Num2+Num4==24) printf("\n(%d-%d)/%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)%Num4==0)
                if((Num1-Num3)/Num4+Num2==24) printf("\n(%d-%d)/%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)%Num2==0)
                if((Num1-Num4)/Num2+Num3==24) printf("\n(%d-%d)/%d+%d=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)%Num3==0)
                if((Num1-Num4)/Num3+Num2==24) printf("\n(%d-%d)/%d+%d=24",Num1,Num2,Num3,Num4);

        if((Num1-Num2)%(Num3-Num4)==0)
                if((Num1-Num2)/(Num3-Num4)==24) printf("\n(%d-%d)/(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)%(Num2-Num4)==0)
                if((Num1-Num3)/(Num2-Num4)==24) printf("\n(%d-%d)/(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)%(Num2-Num3)==0)
                if((Num1-Num4)/(Num2-Num3)==24) printf("\n(%d-%d)/(%d-%d)=24",Num1,Num2,Num3,Num4);

        if((Num1+Num2)%(Num3+Num4)==0)
                if((Num1+Num2)/(Num3+Num4)==24) printf("\n(%d+%d)/(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num3)%(Num2+Num4)==0)
                if((Num1+Num3)/(Num2+Num4)==24) printf("\n(%d+%d)/(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num4)%(Num2+Num3)==0)
                if((Num1+Num4)/(Num2+Num3)==24) printf("\n(%d+%d)/(%d+%d)=24",Num1,Num2,Num3,Num4);

        if((Num1%Num2==0)&&(Num3%Num4==0))
                if((Num1/Num2)+(Num3/Num4)==24) printf("\n(%d/%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num3==0)&&(Num2%Num4==0))
                if((Num1/Num3)+(Num2/Num4)==24) printf("\n(%d/%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num4==0)&&(Num2%Num3==0))
                if((Num1/Num4)+(Num2/Num3)==24) printf("\n(%d/%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);

        if((Num1%Num2==0)&&(Num3%Num4==0))
                if((Num1/Num2)-(Num3/Num4)==24) printf("\n(%d/%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num3==0)&&(Num2%Num4==0))
                if((Num1/Num3)-(Num2/Num4)==24) printf("\n(%d/%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num4)&&(Num2%Num3))
                if((Num1/Num4)-(Num2/Num3)==24) printf("\n(%d/%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);

        if((Num3%Num4)==0)       
                if((Num1*Num2)+(Num3/Num4)==24) printf("\n(%d*%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num2%Num4)==0)
                if((Num1*Num3)+(Num2/Num4)==24) printf("\n(%d*%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num2%Num3)==0)
                if((Num1*Num4)+(Num2/Num3)==24) printf("\n(%d*%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);

        if((Num3%Num4)==0)
                if((Num1*Num2)-(Num3/Num4)==24) printf("\n(%d*%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num2%Num4)==0)
                if((Num1*Num3)-(Num2/Num4)==24) printf("\n(%d*%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num2%Num3)==0)
                if((Num1*Num4)-(Num2/Num3)==24) printf("\n(%d*%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);

        if((Num1%Num2)==0)
                if((Num1/Num2)+(Num3*Num4)==24) printf("\n(%d/%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num3)==0)
                if((Num1/Num3)+(Num2*Num4)==24) printf("\n(%d/%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num4)==0)
                if((Num1/Num4)+(Num2*Num3)==24) printf("\n(%d/%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);

        if((Num1%Num2)==0)
                if((Num1/Num2)-(Num3*Num4)==24) printf("\n(%d/%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num3)==0)
                if((Num1/Num3)-(Num2*Num4)==24) printf("\n(%d/%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if((Num1%Num4)==0)
                if((Num1/Num4)-(Num2*Num3)==24) printf("\n(%d/%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);

        if(Num3%Num4)
                if((Num1-Num2)+(Num3/Num4)==24) printf("\n(%d-%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num4)
                if((Num1-Num3)+(Num2/Num4)==24) printf("\n(%d-%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num3)
                if((Num1-Num4)+(Num2/Num3)==24) printf("\n(%d-%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);

        if(Num3%Num4)
                if((Num1-Num2)-(Num3/Num4)==24) printf("\n(%d-%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num4)
                if((Num1-Num3)-(Num2/Num4)==24) printf("\n(%d-%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num3)
                if((Num1-Num4)-(Num2/Num3)==24) printf("\n(%d-%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);

        if(Num3%Num4)
                if((Num1+Num2)+(Num3/Num4)==24) printf("\n(%d+%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num4)
                if((Num1+Num3)+(Num2/Num4)==24) printf("\n(%d+%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num3)
                if((Num1+Num4)+(Num2/Num3)==24) printf("\n(%d+%d)+(%d/%d)=24",Num1,Num2,Num3,Num4);

        if(Num3%Num4)
                if((Num1+Num2)-(Num3/Num4)==24) printf("\n(%d+%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num4)
                if((Num1+Num3)-(Num2/Num4)==24) printf("\n(%d+%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);
        if(Num2%Num3)
                if((Num1+Num4)-(Num2/Num3)==24) printf("\n(%d+%d)-(%d/%d)=24",Num1,Num2,Num3,Num4);

        if((Num1-Num2)+(Num3*Num4)==24) printf("\n(%d-%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)+(Num2*Num4)==24) printf("\n(%d-%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)+(Num2*Num3)==24) printf("\n(%d-%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);

        if((Num1-Num2)-(Num3*Num4)==24) printf("\n(%d-%d)-(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num3)-(Num2*Num4)==24) printf("\n(%d-%d)-(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1-Num4)-(Num2*Num3)==24) printf("\n(%d-%d)-(%d*%d)=24",Num1,Num2,Num3,Num4);

        if((Num1+Num2)+(Num3*Num4)==24) printf("\n(%d+%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num3)+(Num2*Num4)==24) printf("\n(%d+%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num4)+(Num2*Num3)==24) printf("\n(%d+%d)+(%d*%d)=24",Num1,Num2,Num3,Num4);

        if((Num1+Num2)-(Num3*Num4)==24) printf("\n(%d+%d)-(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num3)-(Num2*Num4)==24) printf("\n(%d+%d)-(%d*%d)=24",Num1,Num2,Num3,Num4);
        if((Num1+Num4)-(Num2*Num3)==24) printf("\n(%d+%d)-(%d*%d)=24",Num1,Num2,Num3,Num4);

        if((Num1*Num2)+(Num3-Num4)==24) printf("\n(%d*%d)+(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num3)+(Num2-Num4)==24) printf("\n(%d*%d)+(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num4)+(Num2-Num3)==24) printf("\n(%d*%d)+(%d-%d)=24",Num1,Num2,Num3,Num4);

        if((Num1*Num2)-(Num3-Num4)==24) printf("\n(%d*%d)-(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num3)-(Num2-Num4)==24) printf("\n(%d*%d)-(%d-%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num4)-(Num2-Num3)==24) printf("\n(%d*%d)-(%d-%d)=24",Num1,Num2,Num3,Num4);

        if(Num1%Num2)
                if((Num1/Num2)+(Num3-Num4)==24) printf("\n(%d/%d)+(%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num1/Num3)
                if((Num1/Num3)+(Num2-Num4)==24) printf("\n(%d/%d)+(%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num4)
                if((Num1/Num4)+(Num2-Num3)==24) printf("\n(%d/%d)+(%d-%d)=24",Num1,Num2,Num3,Num4);

        if(Num1%Num2)
                if((Num1/Num2)-(Num3-Num4)==24) printf("\n(%d/%d)-(%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num3)
                if((Num1/Num3)-(Num2-Num4)==24) printf("\n(%d/%d)-(%d-%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num4)
                if((Num1/Num4)-(Num2-Num3)==24) printf("\n(%d/%d)-(%d-%d)=24",Num1,Num2,Num3,Num4);

        if((Num1*Num2)+(Num3+Num4)==24) printf("\n(%d*%d)+(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num3)+(Num2+Num4)==24) printf("\n(%d*%d)+(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num4)+(Num2+Num3)==24) printf("\n(%d*%d)+(%d+%d)=24",Num1,Num2,Num3,Num4);

        if((Num1*Num2)-(Num3+Num4)==24) printf("\n(%d*%d)-(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num3)-(Num2+Num4)==24) printf("\n(%d*%d)-(%d+%d)=24",Num1,Num2,Num3,Num4);
        if((Num1*Num4)-(Num2+Num3)==24) printf("\n(%d*%d)-(%d+%d)=24",Num1,Num2,Num3,Num4);

        if(Num1%Num2)
                if((Num1/Num2)+(Num3+Num4)==24) printf("\n(%d/%d)+(%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num3)
                if((Num1/Num3)+(Num2+Num4)==24) printf("\n(%d/%d)+(%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num4)
                if((Num1/Num4)+(Num2+Num3)==24) printf("\n(%d/%d)+(%d+%d)=24",Num1,Num2,Num3,Num4);

        if(Num1%Num2)
                if((Num1/Num2)-(Num3+Num4)==24) printf("\n(%d/%d)-(%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num3)
                if((Num1/Num3)-(Num2+Num4)==24) printf("\n(%d/%d)-(%d+%d)=24",Num1,Num2,Num3,Num4);
        if(Num1%Num4)
                if((Num1/Num4)-(Num2+Num3)==24) printf("\n(%d/%d)-(%d+%d)=24",Num1,Num2,Num3,Num4);
//        printf("\n%d,%d,%d,%d,is impossible!\n",Num1,Num2,Num3,Num4);
}
 楼主| 发表于 2002-8-28 16:39:27 | 显示全部楼层
哇~~~~~


受小弟一拜
让我研究几天先
 楼主| 发表于 2002-8-28 21:55:49 | 显示全部楼层
看过jerboa(真拗口的名字)兄写的程序
限于我是新手
有若干疑问:
?1:在main函数中定义的j=0在什么地方用到了?
?2:第一处显示中"printf Ctrl-c into exit"在程序的什么地方实现了?
?3:在main中的while(1)是判断的什么条件?  
?4:请教一下rand()的详细用法?
?5:在if(data>1000)continue;语句中是data>1000(大于?)
?6:在冒泡函数中为什么要把形参定义成寄存器变量?
?7:冒泡函数中的for(; ;++a)跟for(; ;a++)有什么区别吗?
有些问题可能很傻,请勿见笑
另外我还以为计算机自己计算24很神奇呢
没想到还是要人教啊 哈哈
发表于 2002-8-29 08:10:15 | 显示全部楼层
A1.j=0为笔误。本来实现此程序用了一些别的算法,后来感觉用不大删除了,于是就忘了删j=0。:-<
A2.Ctrl-C在linux中如果不捕获信号的,默认情况下,按此组合键后,发送INT信号,进程立即终止。此处程序,没有必要捕获Crtl-C。
A3.while(1)相当于for(;;)是一死循环。
A4.请在linux里用man 3 rand 来看,实际上伪随机函数可以有不同的序列,可以用srand()来产生新序列,然后rand()则产生此相应的序列码。
A5.>1000意思是1000以上的数不要。
A6.如果此数据大于100个以上的话,汽泡排序是最费时间的,不了进一步加快速度,于是使用寄存器变量,这样会快一些。不过如果有这么大的数组的话,改用其它算法为好。这里在10个以内的话汽泡排序是最快的。
A7.++a是在没进行循环前先进行加1,a++是进行了循环后才进行加1

另外,process处理中我已经看出遗漏了一些可能情况。也是写代码的时候没考虑到。
发表于 2002-8-29 08:23:45 | 显示全部楼层
这样的程序让我晕!:p
网上很多此类程序,google吧。
发表于 2002-8-29 10:04:59 | 显示全部楼层
  看别人的东西不如自己写(虽然我写的不好)。如果到处找(这里我不反对找),一样能找到。但一些写程序的基本技能得有吧?如果自己一行也不写,您的水平能提高么?我以为看不起简单的东西,往往自己在简单上容易有失误,我写了多年程序(用一部分C),但就在上面的简单程序中也犯了基本概念错误,回头查了有关书才搞明白。实际上大部分人,看人家的东西总感觉不过如此,可是轮到自己写的时候,却总是感觉不知道如何下手,这就是差别。目前LINUX上的源码好多,但有多少人看过源码,改过相应源码?国内目前的LINUX的普及只是停留在安装和简单的汉化,各个论坛的讨论大多也是如此。而真正用在实际工作中的应用只是少之又少,哪象windows下那样应用广泛?真正象Yuking兄那样为linux写应用的又有多少人?
  另外在论坛里常看到一些人老问一些老掉牙的问题,有些人老问一些在起步书中就讲的很清楚的问题,而有些问题本来在精华贴里就写着方法,什么原因?主要是自己懒的看,想取些捷径。但是这种方法就象在沙上建塔。
  学LINUX也需要些基础的,那种想用学习windows的方法用在LINUX上不见得有好效果的。我以为要想弄清楚一些LINUX的技术,弄一本有关LINUX的书看看是非常有必要的。如果一点也不看就想驾车,能开的好?
  这里我想说,我写的代码并不好。但有时候我们需要实践,只有自己写程序、调试程序才能对编程有种真实的感觉,有进一步的理解。其实代码写的不论好坏,编程论坛要的是一种讨论气氛,这样大家在讨论中才能有进步。
 楼主| 发表于 2002-8-29 12:26:36 | 显示全部楼层
是啊
不要打击我的积极性嘛  
好不容易才找到这么个地方啊
我们数学老师总是教导我们不要  眼高手低
诚良训也
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表