首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟我的代码到底什么原因导致最后high的返回值总是4210688

2013-10-04 
我的代码到底什么原因导致最后high的返回值总是4210688#include stdio.h#include stdlib.h#define Max

我的代码到底什么原因导致最后high的返回值总是4210688
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
int findmaxcross(int A[],int low,int mid,int high)
{
int left_sum=-65535;
int right_sum=-65536;
int sum,max_left,max_right;
int i;
for (i=mid,sum=0;i>=low;i--)
{
sum +=A[i];
if(sum>left_sum)
{
left_sum=sum;
max_left=i;
}
}
for (i=mid+1,sum=0;i<=high;i++)
{
sum+=A[i];
if (sum>right_sum)
{
right_sum=sum;
max_right=i;
}
}
return(max_left,max_right,left_sum+right_sum);
}
int find (int A[],int low,int high)
{
int mid,left_low,left_high,right_low,right_high,left_sum,right_sum,cross_low,cross_high,cross_sum;
if(low==high)
return(low,high,A[low]);
else
{
mid=(low+high)/2;
(left_low,left_high,left_sum)=find(A,low,mid);
(right_low,right_high,right_sum)=find(A,mid+1,high);
(cross_low,cross_high,cross_sum)=findmaxcross(A,low,mid,high);
if(left_sum>=right_sum&&left_sum>=cross_sum)
{
return(left_low,left_high,left_sum);
}
else if (right_sum>=left_sum&&right_sum>=cross_sum)
{
return(right_low,right_high,right_sum);

else
{
return(cross_low,cross_high,cross_sum);
}
}
}
int main()
{
int A[MaxSize];
int i,n,low,high,sum;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&A[i]);
}
(low,high,sum)=find(A,0,n-1);
printf("%d %d %d",low,high,sum);
system("pause");
return 0;
} 最大子数组
[解决办法]
出现这种值的情况一般是因为没有初值,就是变量建立后没有赋值或赋值无效导致的,LZ你最好加上缩进和代码高亮,这样看起来会方便,
[解决办法]
return(cross_low,cross_high,cross_sum); 
好嘛,这不是一个C程序员写的程序。。。
c 不可以返回三个值,只能有一个。
[解决办法]
如果非常需要返回三个值,可以使用全局变量或者传递数组指针。
[解决办法]
return(max_left,max_right,left_sum+right_sum);返回逗号表达式
===>return(left_sum+right_sum);
(low,high,sum)=find(A,0,n-1);
这个真不知道返回值,赋值给哪一个变量。
这似乎是 matlab 的方式。

[解决办法]
int findmaxcross(int A[],int amax[],int low,int mid,int high)
{
.....
amax[0]=max_left;
amax[1]=max_right;
return left_sum+right_sum;

这不就成了
调用:
int amax[2];
sum = findmaxcross(A,amax,0,n-1);
 
[解决办法]
咳咳
(low,high,sum)=find(A,0,n-1);
这个真不知道返回值,赋值给哪一个变量。
测试了一下(low,high,sum)居然是左值,结果是 sum
返回值赋给sum!

热点排行