这个C程序的错误是什么?

时间:2014-04-10 13:44:55

标签: c gcc

我做了两个简单的程序,但得到了意想不到的答案。有人可以帮忙吗?

//main program
#include<stdio.h>
#include<conio.h>
float main(int argc, char* argv[])
{
float a,b,c;
a=5; b=10;
c=sum(a,b);
printf("%f + %f = %f \n",a,b,c); 
return (0);
}

//sum program
#include<stdio.h>
float sum (float a,float b)
{
float c;
c=a+b;
return(c);
}

该程序的输出错误。我不明白为什么。我用gcc编译了程序。有人可以评论吗?

4 个答案:

答案 0 :(得分:4)

这应该是您的实际代码:

#include<stdio.h>

float sum (float,float);
int main(int argc, char* argv[])
{
    float a,b,c;
    a=5; b=10;
    c=sum(a,b);
    printf("%f + %f = %f \n",a,b,c); 
    return (0);
}

//sum program
float sum (float a,float b)
{
    float c;
    c=a+b;
    return(c);
}

最初你没有提到sum的原型,通常根据C99它应该默认为int所以你的代码不会编译 - 而且你还包括stdio.h两次而且你包括conio.h没有理由。同样main根据ISO应该返回int而不是float,而conio.h是非标准的。

答案 1 :(得分:1)

函数声明总是在main函数之前,您也可以在main函数之前编写函数定义。这是你的错误!

请改为尝试:

//main program
#include<stdio.h>
#include<conio.h>
#include<stdio.h>

float sum (float a,float b)
{
   float c;
   c=a+b;
  return(c);
}

float main(int argc, char* argv[])
{
      float a,b,c;

      a=5; b=10;

      c=sum(a,b);
      printf("%f + %f = %f \n",a,b,c);
      getch();
     return (0);

 }

答案 2 :(得分:0)

我的编译器只抱怨float main(int argc, char* argv[]),说它想要int,但其余的似乎没问题。

答案 3 :(得分:-1)

以下是一些提示......

  1. 永远不要将参数放在main函数中。
  2. 拥有一个没有返回值的主块(无效)
  3. 会更好
  4. 头文件只能使用一次..
  5. 在主要区块之前拥有其他功能会更好。或者写下函数的原型。
  6. 以下是代码:

    #include<stdio.h>
    float sum(float a,float b)
    {
     float c;
     c=a+b;
     return(c);
    }
    void main()
    {
     float a,b,c;
     a=5; b=10;
     c=sum(a,b);
     printf("%f + %f = %f \n",a,b,c);
    }
    

    希望这有助于你:)