c语言sin程序(好答案追加分数)

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:42:47
我编了如下程序:
#include<stdio.h>
#include<math.h>
main(){
float x,y;
printf("Enter x=");
scanf("%f",&x);
y=sin(x);
printf("\ny=%.10f",y)
getch();}
程序运行正常,但是把x,y的变量类型改为double,则一按RUN,就输出y=0.0000000000 。怎么回事?函数sin()输入、输出的都是双精度型的啊??
怎么回事。。
顺便问下,程序结尾的getcj();语句有何作用,含义是什么。
(我用的是 "Turbo C 2.01 英文版").
我的意思是说,x,y用浮点型就运行OK,用双精度型就有毛病了。
提出的问题是:为什么要求输入输出是double型变量的sin()函数,用double型的却会有毛病,反而是float型运行正常呢?

程序没错!!!!!
我也在TC上运行正确!!

函数sin()的输入的精度足够高,要不假设它的精度才精确到小数点后2位,你想要4位的就不行的.实际其精确度也是有限的.

输出的双精度,你可以强制转化,如:
int n;
n=(int)(sin(x)); 这样不是可以变成int了.
但这样似乎没用,不是0就是1了.
当然了,x也可以是整数.计算时,系统自动进行将x转为双精度型.

程序结尾的getch();语句作用:
为了让你很好的看程序结果,
不让程序提前结束,
当然不用也可以看,但是上面不是显示"按任意键结束"吗?
当你想看结果时,不小心按了哪个键看不到了.

加上getch();后,这个函数的作用是从键盘(控制台)上接受一个字符.
这样加了一次保险,不小心按一次,还可以看.就象带保险套一样,按多了一次,也就会结束了.

一句话,它就是为了让你安全看程序结果.

double 型,输入输出格式 %lf [L -- 长 ,F -- 浮点]

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

void main(){
double x,y;
printf("Enter x=");
scanf("%lf",&x);
y=sin(x);
printf("\ny=%.10lf\n",y) ;
getch();
}

getch(); -- 保持黑屏幕回车后再消失

你的printf不能输出double的。你的f指的是float哦。

要输出double的话,用puts(gcvt(double value,int ndigit,char *buf))