| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1578 人关注过本帖
标题:求助:高手帮忙看看错在哪里?
只看楼主 加入收藏
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 

用指针做形参,哪位高手做下,

我搞了一下午,.......


学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-10 16:48
沉默的羔羊1013
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-12-10
收藏
得分:0 

1。cll函数返回值问题
返回的b[8]是数组中的一个元素,但你定义的数组最后一个元素应该是b[7],所以返回的是内存中紧挨着b[7]的下一个单元中的数,应该是一个未知的数。
2。通过你的cll函数没有给b这个数组赋任何的值.
3。主函数中b[8]=cll(a);这句话并不是给b这个数组赋值,而是给b数组中的第九个元素赋值
4。for(j=0;j<8;j++)
printf("%d\n",b[j]); 输出的是b这个数组从0到7的元素,但跟本没有赋值,所以打印出来的应该是未知的数。
根据你的本意,我觉得这个程序应改为:
#include <stdio.h>
void cll(int *a,int *b)
{
int j;
for(j=1;j<8;j++)
{
if(a[j-1]==a[j])
{
b[j]=1;
}
else
{
b[j]=0;
}
}
if(a[0]==a[7])
{
b[0]=1;
}
else
{
b[0]=0;
}
}

main()
{
int j,b[8],a[]={0,1,0,1,0,1,0,1};
cll(a,b);
for(j=0;j<8;j++)
{
printf("%d\n",b[j]);
}
getch();
}

2005-12-10 18:08
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
getch();
这干什么??

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-10 18:31
沉默的羔羊1013
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-12-10
收藏
得分:0 
不好意思,getch();是为了能看到结果加的,其实没啥用。。。。
2005-12-10 18:42
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
上机试过吗??

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-10 19:23
沉默的羔羊1013
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-12-10
收藏
得分:0 
试过没问题
2005-12-10 19:28
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 

int b[8];
int *p2=b;
int j;
int cll(int *p)
{int *p1;
p1=p;
for(j=0;p<p1+7;p++,j++)
{if(*p==*(p+1))
b[j]=1;
else
b[j]=0;
}
if(*p1==*(p+1))
b[7]=1;
else b[7]=0;
}
main()
{int a[8]={0,1,0,1,0,1,0,1};
cll(a);
for(;p2<p2+8;p2++)
printf("%d ",*p2);
}
这又哪里错呢??

[此贴子已经被作者于2005-12-10 19:47:53编辑过]


学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-10 19:46
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
救命啊!!!!

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-10 20:02
流金岁月张
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-11
收藏
得分:0 
#include<stdio.h>
int cll(int a[])
{
int j,b[8];
for(j=1;j<8;j++)
{
if (a[j-1]==a[j])
b[j]=1 ;
else
b[j]=0;
}
if (a[0]==a[7])
b[0]=1;
else b[0]=0;
return b;
}
void main()
{int j,b[8],a[]={0,1,0,1,0,1,0,1} ;
b=cll(a);
for(j=0;j<8;j++)
printf("%d\n",b[j]); }
这样应该可以了
2005-12-11 14:08
沈阳男孩
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-12-11
收藏
得分:0 
不用返回形参数组是不是因为形参数组与实参树组公用一个地址啊。
2005-12-11 18:05
快速回复:求助:高手帮忙看看错在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023022 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved