跪求C语言大神帮小弟看一段C程序里的错误!谢谢

2025-03-11 05:12:10
推荐回答(2个)
回答1:

关于你要实现的程序的功能并没有描述的十分清楚,我这就主要从你语法上的错误给予更正:

#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);
}
/********************************************************************/

回答2:

这程序有点乱:

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函数前声明。而且函数定义时无参数,使用时有参数。
先看出来这些。有工夫再说。