程序设计 - 用dev c++写程序遇到了一个叫ld returned 1 exit status的error大家帮我看看怎么回事啊
本文介绍了程序设计 - 用dev c++写程序遇到了一个叫ld returned 1 exit status的error大家帮我看看怎么回事啊的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
数模课上看到一个商人过河的问题。
三个商人三个随从过河,船上最多坐两人,如果两岸的任意一边随从人数超过商人,随从就会杀人越货。求过河方式。
初学者只会c语言,想试一下结果就成了这样。
源代码:
#include<stdio.h>
#define x 10
#define y 1
int check(int *pj,int a,int i);
void walk(int *pa,int b,int m,int n,int *pi);
void box(int a,int m,int n,int *pj,int *pi,int *pa,int i);
void find(int a,int *pj,int *pi,int *pa,int i);
int main(void)
{
int a=33;//起始位置
int *pa;//用来改写a
pa=&a; int i=0;//步数计数器
int *pi=&i;
pi=&i;
int *pj=&a;//记录已经走过的点
pj=&a;
find(a,pj,pi,pa,i);
return 0;
}
int check(int *pj,int a,int i)
{ int m,n;
for(m=0;m<=i;m++)
{
if(a==*(pj+i))
{ n=0; break; }
else
n=1;
}
return n;
}
void walk(int *pa,int b,int m,int n,int *pi,int *pj)
{ *pa=b;
*(pj+(*pi))=*pa;
printf("%d ",b);
(*pi)++;
}
void box(int a,int m,int n,int *pj,int *pi,int *pa,int i)
{
int b=a+n*x+m*y;
if(check(pj,b,i)==1)
{
walk(pa,b,m,n,pi);
find(a,pj,pi,pa,i);
}
if(check(pj,b,i)==0)
printf("%d",check(pj,b,i));
}
void find(int a,int *pj,int *pi,int *pa,int i)
{
if((*pj)%2)
{
if(a-2*x>=0)
box(a,-2,0,pj,pi,pa,i);
if(a-x>=0)
box(a,-1,0,pj,pi,pa,i);
if(a-2*y>=0)
box(a,0,-2,pj,pi,pa,i);
if(a-y>=0)
box(a,0,-1,pj,pi,pa,i);
if((a-y>=0)&&(a-x>=0))
box(a,-1,-1,pj,pi,pa,i);
}
else
{
if(a-2*x>=0)
box(a,2,0,pj,pi,pa,i);
if(a-x>=0)
box(a,1,0,pj,pi,pa,i);
if(a-2*y>=0)
box(a,0,2,pj,pi,pa,i);
if(a-y>=0)
box(a,0,1,pj,pi,pa,i);
if(a-y>=0&&a-x>=0)
box(a,1,1,pj,pi,pa,i);
}
}
复制粘贴过来我的缩进就都没了。。。版式手机粗略调了一下。。。大家见谅
解决方案
你的函数walk()声明与实现不一致,你数数参数个数←_←
这篇关于程序设计 - 用dev c++写程序遇到了一个叫ld returned 1 exit status的error大家帮我看看怎么回事啊的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文