首页 > c 编译错误,请高手纠错。

c 编译错误,请高手纠错。

#include<stdio.h>
#include<math.h>
int main(){
    int i,t,a,k;
    scanf("%d",&i);
    i=fabs(i);
    a=1,t=11,k=0;
   while(t>=10){
    t=i/a;a=a*10;k=k+1; };
   printf("%d",k);
} 

错误提示: [Error] ld returned 1 exit status

哪里出问题了呢?


不是return 0的问题。ld returned 1 exit status意思是连接器返回码为1,表示连接的时候出错了。具体什么错误因为你的编译器没有说所以不知道,但应该是顶上的两个库找不到,试试在编译选项中指定一下路径


你这个问题估计高手就不会理睬的。。。代码太乱了,你想做什么功能呢?如果是验证是几位数就这个代码吧:

int test(int n)
{
    int count = 0;
    while(n > 0)
    {
        n = n / 10;
        count += 1;
    }
    return count;
}

编译连接参数加-lm


1.code error

while(t>=10){
    t=i/a;a=a*10;k=k+1; };

delete the semicolon after brace.
2. link to math lib.
gcc a.c -lm


codepad通过了,输出了1

不知道你的编译环境怎么了。试一试return 0;

还有个小建议,int取绝对值用abs就可以了,没必要转成float用fabs,虽然也能编译过。


fbs()函数的参数是浮点型,这个可能和编译器有关,最后return 0;试一下


  1. ld 的错误是 链接错误,把 编译错误链接错误 分清楚很重要。
  2. 注意代码格式排版,不然很难看明白。
  3. 整数绝对值用 abs,浮点数才用 fabs
  4. 编译链接时加上 -lm 开关以使用数学库。
  5. 提供你的开发环境信息,操作系统,编译器,生成命令行等,越详细越好。
【热门文章】
【热门文章】