读书人

这个小程序小弟我居然调了五个小时沮

发布时间: 2012-08-03 00:12:14 作者: rapoo

这个小程序我居然调了五个小时,沮丧啊!
这个小程序我居然调了五个小时,沮丧啊!
明显感觉到没有算法就没有生命啊!
希望 指点!!1

[code=C/C++][/#include <stdio.h>
#include <math.h>


int *dec_bin(int, double);
void main()
{
double n,all;
int i,choice,*p,j,t=0;
printf("从all中选择choice:\n");
scanf("%lf%d",&all,&choice);
for(i=0;i<pow(2,all);i++)
{
int count=0;
for(n=0;n<all;n++)
{
t=(int)pow(2,n);
if((i&t)==t) count++;
}
if(count==choice)
{
p=dec_bin(i,all)+(int)all-1;
printf("\n");
for(j=0;j<all;j++)
printf("%d",*p--);
printf("\t%d",i);
}


}
}
int *dec_bin(int d, double all)
{
int i,a[100]={0};
for(i=0;i<all;i++)
{
a[i]=d%2;
d=d/2;
if(d<2) {a[++i]=d;break;}
}
return a;
}]

[解决办法]
有个明显的问题
int *dec_bin(int d, double all)
{
int i,a[100]={0};
....
return a;
}
返回了局部变量的地址,结果可能会有问题
[解决办法]
return a;///这个肯定有错的,如果你主函数要用到a的地址的话
a[100]={0};是局部的,这个函数返回了数组就被销毁了,返回的地址无效哈。我也不知道你要什么目的,调了一下。不过现在放学了。走了
[解决办法]
把 int a[100]={0};
定义为全局变量,可以解决!
函数返回局部变量就销毁了!

读书人网 >C语言

热点推荐