易码技术论坛

 找回密码
 加入易码
搜索
查看: 351129|回复: 7

【求助】小弟编的程序 求C(LAVA)语言高手指点

[复制链接]
发表于 2007-7-13 09:56:22 | 显示全部楼层
首先,我不是高手,但我想给楼主提个醒。YAN的编译器链接库文件stdio.y里有scanf函数,楼主可以用它来代替你的scanf函数,看是否你的scanf函数有问题。
发表于 2007-7-14 00:19:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-7-14 20:11:11 | 显示全部楼层
引用第1楼CJJR2007-07-13 09:56发表的“”:
首先,我不是高手,但我想给楼主提个醒。YAN的编译器链接库文件stdio.y里有scanf函数,楼主可以用它来代替你的scanf函数,看是否你的scanf函数有问题。

scanf函数没有问题,该程序能够成功输入数据,只是在运算中星星死机。
另外,还是用自己写的函数比较有成就感,呵呵!
 楼主| 发表于 2007-7-14 20:13:09 | 显示全部楼层
引用第2楼红色激情2007-07-14 00:19发表的“”:
循环太深
也许吧,有15层循环,可能我的TC1000经受不了这样的考验,只能中途罢工了。
发表于 2007-7-14 20:15:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-8-10 07:40:03 | 显示全部楼层
做广告的禁言、抄家,卖妓院!!
发表于 2007-8-10 09:00:37 | 显示全部楼层
楼上厉害
 楼主| 发表于 2007-7-12 18:27:34 | 显示全部楼层 |阅读模式
本程序应实现:
输入三酒杯的容量,程序通过穷举法搜索将指定X升酒利用已有酒杯折腾分为两半。
在星星上编译通过,可是一运行星星就“过去了”(就想按RESET一样)

scanf.h:

int scanf()
{
int c,in=0;
while((c=GetWord(1))!=13)
    {in=in*10+(c-48);
    printf("%d",c-48);
      }
      return in;
}              int scanf()
{
int c,in=0;
while((c=GetWord(1))!=13)
    {in=in*10+(c-48);
    printf("%d",c-48);
      }
      return in;
}
#include<scanf.h>
int n,x;
int A[15],B[15],C[15],Amax,Bmax,Cmax;
void A2B();void A2C();void B2A();void B2C();void C2A();void C2B();
void M2N(int Mmax,int Nmax,int M[],int N[])
{
if(M[n]==x){
}  
else{
    if(M[n]>Nmax-N[n])
    {M[n+1]=M[n]-Nmax+N[n];
    N[n+1]=M[n]-M[n+1]+N[n];
    }
    else
    {M[n+1]=0;
    N[n+1]=M[n]+N[n];
    }
n++;
  }
}
void A2B()
  {
  if(n<15)
  {M2N(Amax,Bmax,A,B);
  A2C();n--;
  C2A();n--;
  B2C();n--;
  C2B();
  }
  }
void B2A()
  {
  if(n<15)
  {M2N(Bmax,Amax,B,A);
  A2C();n--;
  C2A();n--;
  B2C();n--;
  C2B();
  }
  }
void A2C()
{if(n<15)
  {M2N(Amax,Cmax,A,C);
  A2B();n--;
  B2A();n--;
  B2C();n--;
  C2B();
}}
void C2A()
{if(n<15)
  {M2N(Cmax,Amax,C,A);
  A2B();n--;
  B2A();n--;
  B2C();n--;
  C2B();
}}
void B2C()
{if(n<15)
  {M2N(Bmax,Cmax,B,C);
  A2B();n--;
  B2A();n--;
  A2C();n--;
  C2A();
}}
void C2B()
{if(n<15)
  {M2N(Cmax,Bmax,C,B);
  A2B();n--;
  B2A();n--;
  A2C();n--;
  C2A();
}}
void move(){
  n=1;A2B();
  n=1;B2A();
  n=1;A2C();
  n=1;B2C();
}
void main(){
SetScreen(1);
printf("       平均分酒\n");
printf("第1杯容量?");
Amax=scanf();
printf("\n第2杯容量?");
Bmax=scanf();
printf("\n第3杯容量?");
Cmax=scanf();
printf("\n第1杯有几升?");
A[0]=scanf();
printf("\n第2杯有几升?");
B[0]=scanf();
C[0]=0;
printf("\n");
x=(A[0]+B[0])/2;
move();
int t;
for(t=0,t<14,t++)
  printf("%d ",A[t]);
printf("\n");
for(t=0,t<14,t++)
  printf("%d ",B[t]);
printf("\n");
for(t=0,t<14,t++)
  printf("%d ",C[t]);
getchar();
}
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-24 13:28 , Processed in 0.010370 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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