❶ 怎么用c语言编正弦函数计算

  1. 楼上的各位已经提到了scanf输入控制与目标数据类型不匹配的问题,即应改为:scanf("%f",&n);

  2. 另外三楼有提到说角度与弧度的问题,就是说sin()和cos()输入需要保证为弧度,所以你需要转换一下,比如你这个90度就应该约是1.57。

  3. 其实我觉得应该弄清楚的是为什么在输入控制错误的情况下,还会产生这样的结果。

    这是因为输入控制错误,导致n的值没有变化,也就是说后边计算正弦余弦的时候也是计算的n的初始值。你可以在先不改正输入控制的前提下,在输入语句前加一个输出语句,看看n值为多少,如果没猜错的话,应该是0,进而计算的结果也当是正确的。也许你要问了,不是说局部变量自动变量未初始化的话值是随机值么,怎么会是0呢?是的,我也很纳闷,也许适合具体的编译环境有关吧,不同的编译环境对这种情况可能处理会有所不同吧,留待自己去探究咯~

    希望能帮到你~欢迎交流~

❷ C语言中如何描绘正弦曲线

NO!思路和方法那是完全的不对啊,对于普通的8位单片机来说,都是不带硬件除法器的,而且更不支持浮点运算,所有这些都将需要软件来完成,除非你用的是高端的32位处理器,比如STM32的或者是DSP之类的,才可以从理论上计算得到正弦,方法是采用多项式进行数值计算,你可以参考一下《数值分析》中关于正弦的求解算法

但是对于常规的单片机,采用最好的方法是查表,事实上这种求解正弦的方法早就被采用了,采用查表和插值的方法,可以完全的避免浮点和除法计算,这才是你需要采用的思路

❸ C语言正弦函数

#include<stdio.h>
#include<math.h>
int main (void)
{
double x,y;
printf("输入角度值:");
scanf("%lf",&x);
printf("%f\n",x);
y=sin(x);
printf("sin(%.2f)=%2f\n",x,y);
}scanf("%f",&x);中转制符%lf就对了,因为x是double类型的。

❹ 用C语言求正弦值

用C求正弦值有以下几点要注意:

  1. 正弦值的计算需要使用C语言的数学库<math.h>,因此必须开开头include进去

  2. C语言的sin函数默认输入为弧度,因此需要转化为角度,转化公式为弧度=PI*角度/180

参考代码如下:

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

intmain(){
doubledegree;
printf("请输入角度值:");
scanf("%lf",&degree);
printf("sin(%.2f°)=%.2f",degree,sin(PI*degree/180));
}

执行效果如下:

❺ 怎样用c语言画正弦函数

1、首先,打开VS2019,并且创建一个C语言源文件,会看到如下的页面。内

❻ 请问用C语言怎么编写程序产生一个正弦波

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#defineFQ1000
#defineAM1000
#definePI3.14
intmain()
{
FILE*stream;
inti=0,j=0;
doublevalue=0,bb=0;
shortgg[1000];
stream=fopen("sine_wave.raw","wb");
value=(2*PI/8);
for(i=0;i<1000;i++)
{
bb=AM*sin(value*i);
gg[i]=(short)bb;
//fprintf(stream,"%d/n",gg);
}
fwrite(gg,2,1000,stream);
fclose(stream);
return;
}

❼ c语言,打印正弦曲线 ,请高手解决

/*整型数组sin2[100]存放正弦函数的值,假设屏幕共有80列,将区间[-PI,PI]分为80等份*/
#include "stdio.h"
#include "math.h"
const double PI=3.14159265;
main()
{
int j,k,sin2[100];
double x,t;
//t=__________;
t=(2*PI)/80;
for (j=0,x=-PI;x<PI;x=x+t,j++)
//sin2[j]=floor(_________________);
sin2[j]=floor( 9*sin(x)+0.5);//因为行是[-9,11],因此画sin的区间取[-8,10]

printf("\n");
for (k=11;k>=-9;k--)//k是行
{
for (j=0;j<=80;j++)//j是列
if (j==40)
putchar('|');//40列打印一条竖线
else
//if(____________)
if(sin2[j]==k)//这行有数值
putchar('*');//那就画sin上的点
else
//if (________)
if (k!=0)
putchar(' ');
else//画横轴
putchar('-');
printf("\n");
}
//system("pause");
getchar();
}

❽ 正弦波产生C语言源程序代码

以经验看来你是要做单片机方面波形输出,DAC输出,或者做模拟示波器什么的。

有两种办法:

一是查表法,优点是计算量少,占用RAM少,算法简单,缺点是占用储存内存较多,参数比较固定。

查表法的基本思路就是,通过把sin函数进行采样,得到的值记录成一个表,将表以数组的形式放在程序中,通过循环读取数组的值达到查表的目的。

二是计算值法,优缺点跟查表法恰好相反。

计算值法的基本思路是通过特定算法,将特定时间所需的特定值计算出来。

这里给你提供一个计算值法的核心代码,作为指导建议,根据实际情况修调。

doubleSinWave(doublescale,intcycle_time)
{
inta;
doublePI=3.1416;
intresolution_ratio=100;//分辨率,描述采样量,越高的分辨率计算越多
for(a=0;a<resolution_ratio;a++)
{
DAC_OUT(scale*sin(2*PI*a/resolution_ratio));
delay(cycle_time/resolution_ratio);
}
}
voiddelay(intus)
{
//......
}
voidDAC_OUT(intdata)
{
//......
}

❾ C语言怎样画正弦曲线

c语音本身是不能画东西的……必须借助操作系统或是操纵系统之上的东西。

具体可以选的很多,给你推荐几个吧。

你可以去搜下面几个选择,都不错的:

borland图形库

GDI编程

SDL库

这2种方法都不错。borland图形库其实就是很多人说的“c语言画图”,你可能听说的是这个方法。其实是因为十几年前大家都用torbo C来学C语言,然后torbo C自带了这个库,所以很多人以为C语音画图就是指这个。

GDI是windows里的标准的方法,对初学者来说会麻烦一点。这个你可以去装一个本地的MSDN library,如果你英语好的话可以研究下。

我比较喜欢的是SDL库……不过工作量比起BORLAND图形库会多一些,好处是不需要BORLAND自己的编译器……代码量其实相对来说很少的……而且还是C语言的哈哈……
当然你如果用GDI的话也必须用微软的编译器,比如VC++6,VS8之类的。

BORLAND图形库不好的地方就是好像只有BORLAND自己的编译器才能用这个东西,这个是个致命伤。不过如果你用TORBO C或者BORLAND C做编译器的话就无所谓吧。
否则的话我还是推荐其他方式。windows下用GDI,不用windows的话,linux可以用KDE,QT之类的。

另外SDL这样的非官方的图形库也不错。 这一类的不限定你用什么编译器。