C语言程序设计中的错误。sqrt

作者&投稿:徒琰 (若有异议请与网页底部的电邮联系)
C语言编程中sqrt出现异常~

#include"stdio.h"
#include"math.h"
void main()
{
float a,b,c,area,p;
printf("input number:
");
scanf("%f%f%f",&a,&b,&c);
if(a<=0&&b<=0&&c<=0&&a+b<c&&a+c<b&&b+c<a)
printf("erro
");
else
{
p= (a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("area is %f
",area);
}
}
你的公式也错了,而且if里面六个条件有一个不满足的话就为假,因此用&&。

这样的源程序,重新编译是不能通过的。

sqrt 自变量必须是 double,float ..., 不可用整型。
sqrt 返回 double,float ..., 要用 (int) 转为 int。但失去精度。

a=(int) sqrt( (double) i);

sqrt返回的是一个double型值
我用VS2008测试了一下得到的是
1>WNL测试.c
1>c:\documents and settings\administrator\桌面\wnl测试.c(8) : warning C4244: “=”: 从“double”转换到“int”,可能丢失数据
1>c:\documents and settings\administrator\桌面\wnl测试.c(22) : warning C4013: “getch”未定义;假设外部返回 int
1>生成日志保存在“file://g:\C++\test\test\Debug\BuildLog.htm”
1>test - 0 个错误,2 个警告
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

把a改成double就只有第二个警告了

#include <stdio.h>
#include <math.h>

int main(void)
{
int i,j,a,p=0;

for(i=900;i>=200;i--)
{
a=sqrt(i);

for(j=2;j<a;j++)
{
if(i%j==0) break;
}

if(j>=a)
{
printf("%d ",i);
p++;

if(p%5==0) printf("\n");
}

if(p==20) break;
}
printf("\n");

return 0;

}

稍微修改了一下。。

这个程序应该是计算素数的。。

LZ建的文件是CPP文件,不是C文件,只要另存为.C文件,然后编译就OK了。

使用 GCC 编译器+VIM编辑器,可以通过。。


学习C语言程序设计要注意哪些易犯的错误?
分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。{ z=x+y;t=z\/100;printf("%f...

C语言程序设计中出现too many initializers
"too many initializers" 是C语言编译器中的一个错误消息,表示在一个结构体或联合体的声明中,初始化子项的数量超过了实际子项的数量。这种错误通常发生在试图初始化一个结构体或联合体时,其中包含的初始化子项数量超过了实际子项数量。例如,以下代码会导致“too many initializers”的错误:在这个例...

程序设计语言|源程序可能出现的错误
源程序中可能出现的错误主要有三类:词法错误、语法错误和语义错误。1.词法错误:如非法字符或拼写错关键字、标识符等。2.语法错误:是指语法结构出错,如少分号、begin\/end不配对等。3.静态语义错误:如类型不一致、参数不匹配等。4.动态语义错误(逻辑错误):如死循环、变量为零时作除数等。大多数...

以下关于程序设计语言叙述中,错误是( )。
【答案】:C 本题考查程序语言基础知识。选项A涉及程序语言一般概念,程序设计语言基本成分包括数据、运算、控制和传输等。选项B考查高级语言和低级语言概念。关于程序设计语言,高级语言和低级语言是指其相对于运行程序机器抽象程度。低级语言在形式上越接近机器指令,汇编语言就是与机器指令一一对应。高级语言...

C语言编程最常见的15个错误
编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。{ z=x+y;t=z\/100;printf("%f",t);} 对于复合语句来说,最后一个语句中...

c语言程序设计中出现too many initializers怎么办
c语言程序设计中出现too many initializers,是设置错误造成的,解决方法如下:1、首先在电脑中,找到并启动c语言编译软件程序,然后点击编译程序。2、接下来找到并点击链接程序按钮。3、然后点击运行按钮。4、也可以在键盘上按下快捷键,进行运行。5、此时,页面之中将会弹出一个命令提示符,就完成了。

C语言程序设计.. 函数设计。请问下,下面的代码哪里错了?真恼人~
3,void readin(company)函数中的update(comapny...)这里的comapny写错了,应该是company,还有这里的汪海洋后面的括号写反了。4.typedef struct employee定义的字和你后面用到的不一致,应该是*PEMP;我帮你改了如下:include<stdio.h> include <stdlib.h> define num 10 typedef struct employee { ...

关于C++语言程序设计中出现的问题
【2】盗版系统或Ghost版本系统,系统文件错误或丢失,也会出现该问题,及时安装官方发行的补丁,{检查电脑年、月、日是否正确}。建议:安装【正版】系统。【3】检查驱动是否出现问题,重新安装驱动或及时更新驱动。【4】病毒引起的:升级杀毒软件或下载专杀工具,清理恶意插件,对电脑全盘杀毒。【5】硬件引起...

c语言程序设计 急!!!
错误1,scanf("%f",&score); 你最后输入-1时,score=-1;score进入了if语句 min=-1了;修改,将scanf("%f",&score); 放入到i++语句的上面;错误2,最值判断中有错误,你成功的选出了最大值,但是最小值始终会=你最后的输入值;修改if(score>max)max=score;else if (score<min)min=...

<<C++语言程序设计>>中的第一题,我编了以下程序,可老出错,想请各位大侠...
"当输入:"后面的那句"How about you?"和"输入:"后的那句"OK"是由你从键盘中输入的,其它的都由程序自动输出 (2)你存在很多语法错误 比如C++中是分大小写的,可你的代码中大小写不分;类成员函数的定义格式也不对 建议你先看一下C++基础教材,先掌握语法,模仿教材上的设计 include<iostream> inclu...

衡水市13458429109: 我编的一个判断质数的c语言程序,结果出现这样的错误: “sqrt”: 对重载函数的调用不明确.谢谢啦! -
常景复方: m=sqrt(i); sqrt是float 或者double型的,如果用于int型,要这样:m=sqrt((float)i);

衡水市13458429109: C语言编程中sqrt出现异常 -
常景复方: 需要在头文件中加入#include

衡水市13458429109: c语言 中sqrt 到底是什么意思 例如 x=sqrt(i+100) 在这里的意思 是干什么 -
常景复方: c语言中sqrt到底是一个非负实数的平方根,sqrt系Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力. x=sqrt(i+100) 意思是将i+100开平方,然后赋值给x.VC 2008后为重载函数,原型为 float sqrt (float),double ...

衡水市13458429109: 请问 c语言 sqrt()函数运行时出现 do main error 是什么原因? -
常景复方: 函数名: sqrt 功 能: 计算平方根 用 法: double sqrt(double x); 程序例:#include <math.h>#include <stdio.h> int main(void){double x = 4.0, result; result = sqrt(x);printf("The square root of %lf is %lf\n", x, result);return 0; }

衡水市13458429109: 编写C语言程序,我用了sqrt(),编译的时候却显示如图所示,请问怎么回事? -
常景复方: 首先 你没有包含math.h头文件 ,所以显示 sqrt未定义,第二,collect2的意思是,控制台还有该程序的残留进程.

衡水市13458429109: 为什么sqrt报错?(C语言编程新手菜鸟求求指点...) -
常景复方: 需要包含包含各种数学函数的头文件 : #include<math.h> 望采纳

衡水市13458429109: C语言中出现sqrt:domain error -
常景复方: float C/C++数据类型浮点数(floating point number),占用4byte ,范围:3.4e + / - 38 (7 个数字(7digits))懂了? 位不够

衡水市13458429109: C语言为什么加上了头文件sqrt还是显示出错 -
常景复方: int m =sqrt((double)i);C语言是没有重载的,C++才有,你应该是用C++的编译器来写C语言吧在C++中sqrt有两个重载函数,一个参数是double,另一个是float由于你传的参数是int在默认的隐式类型转换中int可以转换成float也可以转换为double,编译器就不知道你想调用哪一个.

衡水市13458429109: C语言sqrt()的用法 -
常景复方: 用法:计算一个非负实数的平方根. 函数原型: 在VC6.0中的math.h头文件的函数原型为double sqrt(double); 说明:sqrt系SquareRootCalculations(平方根计算),通过这种运算可以考验CPU的浮点能力. 程序举例: #include<stdio.h> #...

衡水市13458429109: 编写一个程序中,开方用的函数sqrt被列为错误
常景复方: 你少了math.h头文件当然错

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网