阿撩 发表于 2016-9-22 20:57:03

新人求问这是怎么回事?

#include <stdio.h>
int main( )
{
    int sqrt_1(int x);
    int n,c;
    scanf("%d",&n);
    c=sqrt_1(n);
    if(c<0)
    {
    printf("This is a error number!");

    }
    else
      printf("%d sqrt is %d ",n,c);
    return 0;
}
    int sqrt_1(int x)
    {
   
      int temp,i;
      temp=x/2;
      
      for(i=1;i<temp;i++)
      {
      if(temp*temp==x)
      
            return temp;
         
      
      }
         
      else
         return -1;
    }


编译出现一个错误:illegal else without matching if
说没有合法配套的if。
但是我else的前面不就有一个if吗?
所以求问各位大神这是怎么回事?

aclii 发表于 2016-9-22 21:56:28

{:10_279:}{:10_279:}第25行后面没有大括号啊,你的else判定在for 循环外面了,能不报错么

康小泡 发表于 2016-9-23 11:50:34

int sqrt_1(int x)

    {

   

      int temp,i;

      temp=x/2;

      

      for(i=1;i<temp;i++)

      {

      if(temp*temp==x)

      

            return temp;

         

      

      }

         

      else

         return -1;

    }


这段代码有问题,改成这个样子
int sqrt_1(int x) {

    int temp,i;
    temp=x/2;

    for(i=1;i<temp;i++){
                if(temp*temp==x){
            return temp;   
      }         
      else
         return -1;

    }
}



{:10_250:} 还有就是能别要那么多换行么,明明几行就能搞定的东西,到你这就好多行了。害死强迫症

怎么还是菜鸟 发表于 2016-9-23 14:20:05

同感

阿撩 发表于 2016-9-23 20:31:17

康小泡 发表于 2016-9-23 11:50
这段代码有问题,改成这个样子




哈哈哈哈哈哈哈哈哈哈之前也是不怎么换行 看小甲鱼视频说 不要怕换行 要勇敢的进行 然后我就经常换行了 新手见谅见谅 我会慢慢改正的 谢谢了
页: [1]
查看完整版本: 新人求问这是怎么回事?