C语言问题

#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s = 1.0/2*(a+b+c);
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2g,b=%7.2g,c=%7.2g,s=%7.2g\n",a,b,c,s);
printf("area = %7.2f\n",area);
}
提示:
Linking...
02.obj : error LNK2005: _main already defined in vter.obj
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/active.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
不知道哪里出问题了。求大神帮忙

#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s = 1.0/2*(a+b+c);
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2g,b=%7.2g,c=%7.2g,s=%7.2g\n",a,b,c,s);
printf("area = %7.2f\n",area);
}

我在Linux系统下帮你调试了一下,存在两个问题

    double 类型的输入,最好用%lf。

    scanf("%lf,%lf,%lf",&a,&b,&c);

    这个问题就是你的链接问题,sqrt函数内的值(s*(s-a)*(s-b)*(s-c))不能保证是正值。因此会报错。

还有一个问题呢,就是编码风格的问题,即使main的函数类型为void,也要写上返回值return;华为一直这么要求我们。

加油,祝好运……

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-09
这个是提示你这个c的project里已经有一个main主函数在vter.obj里(可能就在vter.c里),冲突了。
第2个回答  2015-07-09
doule 的输入有问题,如果double改为float ,在devcpp下测试没问题。注意scanf的输入格式。格式控制里面不要加 “,”(逗号)
第3个回答  2015-07-09
1、scanf("%f,%f,%f",&a,&b,&c);
你输入数据是也要加“,”
2、double的输入输出格式为%lf。