首先,你輸出的不是正弦圖像,而是反正弦圖像。
創新互聯公司是一家集網站建設,江華企業網站建設,江華品牌網站建設,網站定制,江華網站建設報價,網絡營銷,網絡優化,江華網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力??沙浞譂M足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
#includestdio.h
#includemath.h
int
main(){
double
y;
int
x,m,i;
printf("y=sin(x)
[0x2*pi]\n");
for(y=1;y=-1;y-=0.1){//表示y的取值范圍是[-1,1]
if(y=0){
m=asin(y)*10;
//反正弦函數,確定空格的數量,最大值為15
for(x=1;xm;x++)printf("
");
//printf("*",m);
printf("*");//注意此時不換行,因為后面還有一個點
for(;x31-m;x++)printf("
");//輸出第二個點,并換行
printf("*\n");}
else{//同理輸出y小于0的點
m=-1*asin(y)*10;
for(i=0;i32;i++)printf("
");
for(x=1;xm;x++)printf("
");
//printf("*",m);
printf("*");
for(;x31-m;x++)printf("
");
printf("*\n",m);
}
}
getchar();
return
0;
}
1、首先,打開VS2019,并且創建一個C語言源文件,會看到如下的頁面。
2、鼠標在下圖紅色圈所示的區域單擊一下。
3、之后,再按Enter鍵,會看到新的一行。
4、在這一行中輸入:#includemath.h。
5、接著,在void main()中去定義一個單精度型變量。
6、定義完回車后,輸入a=sin(90);注意,90指的是90弧度。
7、再次回車,輸入printf("%f",a);。
8、可以按F5鍵去運行這段程序,會看到如下的結果。即90弧度的正弦值約為0.893997。
挺有意思的問題,簡單談一下看法
將你的需求分成兩部分,一是讓程序自行解析用戶輸入的函數解析式,二是繪制函數圖像。
首先,關于第一個功能,最直接的思路就是字符串解析,按照數學知識定義不同的運算符號,按照使用習慣定義常用的變量和常量的符號字母,然后據此規則解析輸入的字符串,再根據解析結果確定函數中基本運算的次數及運算順序,最后將整個操作流程以一定形式存儲起來即可。
例如,對于y=log(x^2+x),包含三次基本運算,第一步是x^2,第二步是上一步的結果+x,第三步是上一步的結果求對數。注意到log有定義域的限制,這也是要在程序中實現的。
然后,對于第二個功能,根據給定函數繪制圖像并不難,對于一元和二元函數來說很容易實現,難點在于多元函數應如何繪制直觀易懂的函數圖像?不過這一點超出編程語言的范疇了,而且二元函數可以滿足大部分應用場景了。
繪制函數圖像的程序只需在定義域上按指定的步長求出不同自變量對應的函數值,然后將點連成線,即可繪制出函數圖像。例如對于logx,定義域為x0。假設步長為0.1,則可求出0.1,0.2,0.3,...,99.9,100.0的函數值,然后繪制出點,再連點成線,即可得到函數圖像。
另外,這里還有很多細節沒有討論,例如輸入數據是字符串還是圖像;是否可以用其他方法解析輸入,例如神經網絡。這些就很復雜了,不再深入。
回答中可能有考慮不周的地方,希望上述內容對你有參考意義
我畫了半個正弦函數,其余的你可以照著畫,歡迎討論,
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "graphics.h"
void main()
{
int driver,mode,i;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setcolor(15);
for(i=0;i360;i++)
line(i,200*sin(i*3.14/360),i+1,200*sin((i+1)*3.14/360));
getch();
restorecrtmode();
}