关于你要实现的程序的功能并没有描述的十分清楚,我这就主要从你语法上的错误给予更正:
#include "stdio.h"
//因为你的主函数在你要调用 的两个函数的前面,因此要先声明函数
int center_to_left_get_black(int a[]); //主函数中调用函数是传了参数的,需要有形参
int center_to_right_get_black(int a[]); //主函数中调用函数是传了参数的,需要有形参
void main()
{int leftblack,rightblack;
//int i,a[i]; 数组的定义不能用变量,应该如下行
int i, a[128];
printf("输入128个光 电管二值化以后的电平:");
for(i=0;i<128;i++)
scanf("%d",&a[i]);
//直接传入数组地址调用,而不是a[i]
//center_to_right_get_black(a[i]); //从中线向右查找
//center_to_left_get_black(a[i]); //从中线向左查找
center_to_right_get_black(a);
center_to_left_get_black(a);
printf("leftblack=%d,rightblack=%d",m,n);
}
//*****************************************************//
//从中线向左查找函数
//*****************************************************//
int center_to_left_get_black(a[]) //有形参
{
int i; //这里的 a数组不再需要定义,而且你的定义还是不对,不能用变量定义数组长度
int sum,m;
for(i=63;i>0;i--)
{
if a[i]==1
continue;
else
sum=a[i]+a[i-1]+a[i-2]+a[i-3]+a[i-4];
if sum<2
{m=i-2;
break;
}
else continue;//判断所检测到为0的点确定是否为有效黑点,即黑线边缘
}
if i=0
{m =0;
break;
}//没检测到左黑线,跳出循环
return(m);
}
//*****************************************************//
//从中线向右查找函数
//*****************************************************//
int center_to_right_get_black(a[]) //错误同上个函数
{
int i;
int sum,n;
for(i=64;i<127;i++)
{
if a[i]==1
continue;
else
sum=a[i]+a[i+1]+a[i+2]+a[i+3]+a[i+4];
if sum<2
{n=i+2;
break;
}
else continue; //判断所检测到为0的点确定是否为有效黑点,即黑线边缘
}
if i=127
{n=128;
break;
}//没检测到右黑线,跳出循环
return(n);
}
/********************************************************************/
这程序有点乱:
1、有的变量声明后没有使用,如int leftblack,rightblack;
2、条件语句if无括号,像if a[i]==1之类,另外在条件语句中赋值,像if i=0之类。
3、函数定义有错误,center_to_right_get_black(a[i]);enter_to_left_get_black(a[i]); 这两个函数必须先在main函数前声明。而且函数定义时无参数,使用时有参数。
先看出来这些。有工夫再说。