Chinaunix

标题: 求二次方程根的小程序 编译通过运行报错 [打印本页]

作者: a811032338    时间: 2012-01-27 00:12
标题: 求二次方程根的小程序 编译通过运行报错
  1. #include <stdio.h>
  2. #include <math.h>

  3. void main()
  4. {
  5.         printf("Please input a,b,c!\n");
  6.         double a,b,c,answer,answer1,answer2,f,r;
  7.         scanf("%lf %lf %lf",&a,&b,&c);
  8.         f=b*b-4*a*c;
  9.         if (f<0.0)
  10.         {
  11.                 printf("There are no answers!\n");
  12.         }
  13.         else if(f==0.0)
  14.         {
  15.                 answer=(-b/(2.0*a));
  16.                 printf("The answer is %lf!\n",answer);
  17.         }
  18.         else
  19.         {
  20.                 r=sqrt(f);
  21.                 answer1=((-b+r)/(2*a));
  22.                 answer2=((-b-r)/(2*a));
  23.                 printf("The answers are %lf and %lf!\n",answer1,answer2);
  24.         }
  25. }
复制代码
这是求二次方程根的小程序

编译通过 运行时报错:

Linking...
求根.obj : error LNK2005: _main already defined in za1.obj
Debug/za总.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.

za总.exe - 1 error(s), 0 warning(s)


求解
作者: pmerofc    时间: 2012-01-27 01:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: pmerofc    时间: 2012-01-27 01:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: btdm123    时间: 2012-01-27 10:23
我还以为你写计算开方的数值算法呢
作者: btdm123    时间: 2012-01-27 10:32
这种习题也是害人不浅,从设计上来说不合理,首先,运算的具体逻辑是不适合放在main里面的,其次,你得运算要能提供正交的功能,至少,二次方程的所有情况你要能处理,包括复数,
第三,输入要接受别的程序的输出,输出要能给别的程序当输入
作者: MMMIX    时间: 2012-01-27 10:55
btdm123 发表于 2012-01-27 10:32
这种习题也是害人不浅,从设计上来说不合理,首先,运算的具体逻辑是不适合放在main里面的,其次,你得运算 ...


你說的這些都是程序風格的問題,而這些問題都是從他當前所看的書中學習/繼承下來的。
作者: pmerofc    时间: 2012-01-27 14:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: MMMIX    时间: 2012-01-27 14:52
pmerofc 发表于 2012-01-27 14:18
void main
f==0.0
到处都是毛病


最開始學習編程,選不對語言,或選了語言選不對書都會令學習功倍而事半。許多人一上來就學習 C 語言,卻不知 C 語言只是在彙編語言基礎上的一層薄薄的抽象,在用 C 編程的時候,你需要對要解決的問題做細致的折分,同時提供同樣細致而精確的解決步驟(細致到足以用 C 的語法及庫函數描述的程度)。但是這種細致的折分問題、對每個細分問題給出細致精確解答的思考風格,正是初學編程的人所普遍欠缺的。這往往導致許多初學者面對需要編程解決的問題一籌莫展,即使發貼求助也只能把問題籠統的重複一遍。
作者: pmerofc    时间: 2012-01-27 14:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: MMMIX    时间: 2012-01-27 15:24
MMMIX 发表于 2012-01-27 14:52
即使發貼求助也只能把問題籠統的重複一遍。


這裡有個典型的例子:http://bbs.chinaunix.net/thread-3666014-1-1.html
作者: a811032338    时间: 2012-01-27 15:45
回复 7# pmerofc
0.0那些是自己试试的 开始是0的 我以为报错是这个问题.........

   
作者: a811032338    时间: 2012-01-27 15:48
回复 8# MMMIX
我开始选的是汇编学了三分之二  越来越感觉调动不了积极性.....  就先学c 学完在回去学汇编

   
作者: MMMIX    时间: 2012-01-27 16:31
a811032338 发表于 2012-01-27 15:48
回复 8# MMMIX
我开始选的是汇编学了三分之二  越来越感觉调动不了积极性.....  就先学c 学完在回去学汇编 ...


計算機現有知識體系就像是一張網絡:你要理解彙編語言,需要了解計算機的體系結構,而要理解體系結構則需要了解 OS 和應用程序是如何工作的、需要硬件提供什麼功能,而要理解 OS 和應用程序在硬件上是如何執行的,你又要了解彙編和 OS。
作者: ddddddddd    时间: 2012-01-29 16:22
我一直认为c并不适合作为第一门语言。
作者: inzahgi    时间: 2012-01-30 20:03
把 void main() 改为了int main(void),在dev c++可以运行,不过结果好像不对
作者: slucx    时间: 2012-02-01 14:31
我也是看算法来的,以为是牛顿什么的,不过你的头像太给力了
btdm123 发表于 2012-01-27 10:23
我还以为你写计算开方的数值算法呢

作者: siseniao    时间: 2012-02-02 10:40
啥叫编译通过,运行出错,明明就是link就出问题了,你的程序里怎么会有两个main函数呢,这不坑爹吗
作者: a811032338    时间: 2012-02-03 19:12
这个问题是在同一个工程里建了两个 source file  
所以有些会出错




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2