❶ 怎麼用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這樣的非官方的圖形庫也不錯。 這一類的不限定你用什麼編譯器。