真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言編程三角函數(shù)計(jì)算器 c#計(jì)算器三角函數(shù)

用C語(yǔ)言編寫三角函數(shù)計(jì)算器,怎樣寫

首先輸入要計(jì)算什么

創(chuàng)新互聯(lián)主營(yíng)開平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,開平h5成都微信小程序搭建,開平網(wǎng)站營(yíng)銷推廣歡迎開平等地區(qū)企業(yè)咨詢

比如

sin

cos

...

然后輸入要計(jì)算的值

接著調(diào)用對(duì)應(yīng)的數(shù)學(xué)函數(shù)就可以了

sin

con

tan

cot這些都是有對(duì)應(yīng)數(shù)學(xué)函數(shù)的

最后輸出結(jié)果。

需要注意的是

C的數(shù)學(xué)三角函數(shù)都是弧度做參數(shù)

而不是角度。

如何用C語(yǔ)言編寫一個(gè)科學(xué)計(jì)算器

用棧 就可以辦到了。。。這個(gè)很詳細(xì)的, lz 隨便輸入一個(gè)表達(dá)式,中間的計(jì)算過(guò)程全部輸出了,lz試兩個(gè) 就知道怎么回事了。 #include stdio.h

#include stdlib.h

#include string.h

#define MAXSIZE 4000;

typedef struct

{

char data[10];

int top;//頭地址

int base;//基地址

int length;//長(zhǎng)度

}Stack;

void init(Stack *st)//初始化棧

{

st-base=0;

st-top=0;

st-length=0;

}

int isEmpty(Stack *st)

{

int n=0,top,base;

top =st-top;

base =st-base;

if(top==base)

{

return 1;

}

return n;

}

int isFull(Stack *st)

{

int n=0,top,base;

top =st-top;

if(top=4000)

{

return 1;

}

return n;

}

char getTop(Stack *st)// 返回top值,不改變棧的結(jié)構(gòu)

{

char n;

if(isEmpty(st))

{

printf("棧為空\(chéng)n");

return 0;

}

int positon= st-top-1;

n= st-data[positon];//取出數(shù)據(jù);

return n;

}

char pop(Stack *st)// 出棧,返回

{

char n;

if(isEmpty(st))

{

printf("棧為空\(chéng)n");

return 0;

}

int positon= st-top-1;

n= st-data[positon];//取出數(shù)據(jù);

st-top--;

st-length--;

st-data[positon]='\0';//消除數(shù)據(jù)

return n;

}

void push(char n,Stack *st)//入棧

{

int positon ;

if(isFull(st))

{

printf("棧滿\n");

}

else

{

positon= st-top;//獲取位置

st-data[positon]=n;//存入數(shù)據(jù)

st-top++;//改變位置

}

}

void show(Stack *m1)//輸出棧中的數(shù)據(jù)

{

int top,base;

top=m1-top;

base=m1-base;

while(topbase)

{

printf("%c,",m1-data[--top]);

}

printf("\n");

}

int isOperate(char temp)//是否是操作符

{

if(temp=='+'||temp=='-'||temp=='*'||temp=='/'||temp=='('||temp==')'||temp=='#')

{

return 1;

}

return 0;

}

int isValue(char temp)//是否是數(shù)值

{

if(temp='0'temp='9')//

{

return 1;

}

else

{

return 0;

}

}

int isAvail(char temp)//是否有效字符

{

if(isOperate(temp)||isValue(temp))//如果temp既不是操作符和數(shù)值的話,則它是非法的

{

return 1;

}

return 0;

}

int detect(char temp)//搜索矩陣位置

{

int i=0;

char oper[7]={'+','-','*','/','(',')','#'};

for(i=0;i7;i++)

{

if(temp==oper[i])

{

return i;

}

}

}

char Priority(char temp,char optr)//判斷優(yōu)先級(jí)

{

/**//*

+ - * / ( ) #

1 2 3 4 5 6 7

+ 1

- 2

* 3

/ 4

( 5 = 0

) 6 = 0

# 7 0 =

*/

int row ,col;

char priority[7][7]={/**//* + - * / ( ) # */

{'','','','','','',''},

{'','','','','','',''},

{'','','','','','',''},

{'','','','','','',''},

{'','','','','','=',''},

{'','','','','=','0',''},

{'','','','','','','='},

};

row = detect(temp);//找出對(duì)應(yīng)的矩陣下標(biāo);

col = detect(optr);

// printf("%d,%d",row,col);

//優(yōu)先級(jí)存儲(chǔ)在一個(gè)7x7的矩陣中,對(duì)應(yīng)關(guān)系上圖;

return priority[row][col];

}

char evaluate(int a,int b,char oper)

{

switch(oper)

{

case '+': return a+b+'0';

case '-': return a-b+'0';

case '*': return a*b+'0';

case '/': return a/b+'0';

default : return 0+'0';

}

}

int calculateExpress(char *express)//計(jì)算表達(dá)式

{

int result=0;

int a,b;

// char oper,result;

Stack OPTR,OPND;//OPTR存儲(chǔ)操作符,OPND操作數(shù)值

init(OPTR);

init(OPND);

push('#',OPTR);//默認(rèn)第一個(gè)位'#'

////////////////////-算法-////////////////////////////

while(*express!='\0')

{

char temp;

temp= *(express);

printf("---------------------------------\n");

printf("當(dāng)前的符號(hào)為%c\n",temp);

if(isAvail(temp))//是否是有效字符

{

if(isOperate(temp) )//輸入的是操作符

{

char oper,result;

char optr = getTop(OPTR);//棧中top位的操作符

printf("棧頂操作符位:%c\n",optr);

char prior = Priority(temp,optr);//判斷優(yōu)先級(jí)

switch(prior)

{

case '':

push(temp,OPTR);

printf("將符號(hào)位%c入棧\n",temp);

express++;

break;

case '':

//int a,b;

//char oper,result;

a=pop(OPND)-'0';//存在棧中的都是char字符

b=pop(OPND)-'0';

oper=pop(OPTR);

result=evaluate(b,a,oper);//出棧一個(gè)操作符,計(jì)算結(jié)果

//printf("%d",result-'0');

push(result,OPND);//結(jié)果入OPND

printf("%d%c%d結(jié)果為:%d\n",b,oper,a,result-'0');

break;

case '=':

//消除括號(hào)

pop(OPTR);

printf("消除括號(hào)\n");

express++;

break;

}

}

if(isValue(temp))//輸入的是數(shù)值

{

push(temp,OPND);//將數(shù)值位入棧;

express++;

printf("將數(shù)值%c壓入棧\n",temp);

//show(OPND);

}

}

else //表達(dá)式中有非法字符

{

printf("表達(dá)式中有非法字符\n");

exit(-1);//退出程序

}

}

// show(OPND);

// show(OPTR);

return getTop(OPND)-'0';

}

void inputExpress(char *express)//輸入表達(dá)式

{

int length=0;

printf("請(qǐng)輸入一個(gè)表達(dá)式:");

scanf("%s",express);

int len =strlen(express);

express[len]='#';//表達(dá)式最后一位默認(rèn)為'#';

express[len+1]='\0';

}

void output(char *express,int result)//輸出表達(dá)式

{

int i=0;

printf("----------------------------------------\n表達(dá)式:");

while(express[i]!='#')

{

printf("%c",express[i]);

i++;

}

printf("=%d\n",result);

}

int main()

{

char express[100];//表達(dá)式

int result =0;

inputExpress(express);//輸入表達(dá)式

result = calculateExpress(express);//計(jì)算表達(dá)式;

output(express,result); //輸出表達(dá)式

//、、、、、、、、、、、、、測(cè)試優(yōu)先級(jí)。

/**//*

char m='7' ;

m=Priority('+','*');

printf("優(yōu)先級(jí)為%c",m);

int m=evaluate(5,6,'m');

printf("%d",m);

*/

return 0;

}

緊急求助啊c語(yǔ)言計(jì)算器實(shí)現(xiàn)加減乘除混合運(yùn)算及三角函數(shù)計(jì)算以及對(duì)數(shù)階乘計(jì)算。

#includestdio.h

#includewindows.h

#includemath.h

double EPS=10E-6;

double sum(double a,double b)

{

return a+b;

}

double sub(double a,double b)

{

return a-b;

}

double mul(double a,double b)

{

return a*b;

}

double divv(double a,double b)

{

return a/b;

}

int rem(int a , int b)

{

return a%b;

}

int addnumber(int c,int d)

{

int sum=0;

for(int i=c;i=d;i++)

{

sum+=i;

}

return sum;

}

int factor(int n)

{

int f=1;

for(int i=1;i=n;i++)

{

f*=i;

}

return f;

}

void displaymenu()

{

printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n");

printf("*############高級(jí)計(jì)算器############* \n");

printf("************************************ \n");

printf("* ①加法運(yùn)算 * \n");

printf("* ②減法運(yùn)算 * \n");

printf("* ③乘法運(yùn)算 * \n");

printf("* ④除法運(yùn)算 * \n");

printf("* ⑤取余運(yùn)算 * \n");

printf("* ⑥累加運(yùn)算 * \n");

printf("* ⑦階乘運(yùn)算 * \n");

printf("* ⊙結(jié)束運(yùn)算 * \n");

printf("************************************ \n");

printf("************************************ \n");

}

void main()

{

int c,d; /*用于做四則運(yùn)算的兩個(gè)數(shù)值的說(shuō)明*/

double a,b; /*用來(lái)做累加函數(shù)的兩個(gè)參數(shù)值的說(shuō)明*/

int intresult;

double result; /*用于保存表單運(yùn)算中函數(shù)的返回值*/

int choice;

displaymenu();/*保存用戶選擇項(xiàng)目菜單項(xiàng)*/

while(1)

{

printf("請(qǐng)選擇你所進(jìn)行運(yùn)算項(xiàng)目的符號(hào):");

scanf("%d",choice);

switch(choice)

{

case 1: /*加法計(jì)算*/

printf("請(qǐng)輸入兩個(gè)數(shù)字:");

scanf("%lf%lf",a,b);

result=sum(a,b);

printf("%lf+%lf的計(jì)算結(jié)果是:%lf\n",a,b,result);

break;

case 2: /*減法計(jì)算*/

printf("請(qǐng)輸入兩個(gè)數(shù)字:");

scanf("%lf%lf",a,b);

result=sub(a,b);

printf("%lf-%lf的計(jì)算結(jié)果是:%lf\n",a,b,result);

break;

case 3: /*乘法計(jì)算*/

printf("請(qǐng)輸入兩個(gè)數(shù)字:");

scanf("%lf%lf",a,b);

result=mul(a,b);

printf("%lf*%lf的計(jì)算結(jié)果是:%lf\n",a,b,result);

break;

case 4: /*除法計(jì)算*/

{

scanf("%lf%lf",a,b);

if(b-0.0EPS) printf("數(shù)字錯(cuò)誤\n");

else

{

printf("請(qǐng)輸入兩個(gè)數(shù)字:");

result=divv(a,b);

printf("%lf/%lf的計(jì)算結(jié)果是:%lf\n",a,b,result);

}

break;

}

case 5: /*取余計(jì)算*/

printf("請(qǐng)輸入兩個(gè)數(shù)字:");

scanf("%d%d",c,d);

result=rem(c,d);

printf("%d % %d的計(jì)算結(jié)果是:%d\n",c,d,result);

break;

case 6: /*累加計(jì)算*/

printf("請(qǐng)輸入兩個(gè)整數(shù)");

scanf("%d%d",c,d);

intresult=addnumber(c,d);

printf("%d-%d的累加計(jì)算結(jié)果是:%d\n",c,d,intresult);

break;

case 7: //階乘計(jì)算

{

printf("請(qǐng)輸入一個(gè)大于0小于10的整數(shù)字");

scanf("%d",c);

if(c0||c10)

{

printf("請(qǐng)輸入一個(gè)大于0小于10的整數(shù)字,數(shù)據(jù)錯(cuò)誤。\n");

break;

}

intresult=factor(c);

printf("%d的階乘計(jì)算結(jié)果是:%d\n",c,intresult);

break;

}

case 0:

printf("謝謝使用。歡迎下次再用。\n");

return ;

default:

printf("選擇錯(cuò)誤,程序結(jié)束\n");

break;

}

}

}

三角函數(shù)直接用庫(kù)函數(shù)

#include "math.h"

#include "stdio.h"

void main()

{

char a = ' ';

double i;

printf("請(qǐng)輸入要計(jì)算的函數(shù)類型!例如:s(arcsin),c(arccosine),t(arctangent)\n");

scanf("%c",a);

printf("請(qǐng)輸入要計(jì)算的值!\n");

scanf("%lf",i);

switch(a)

{

case 's':printf("%lf",asin(i));break;

case 'c':printf("%lf",acos(i));break;

case 't':printf("%lf",atan(i));break;

}

}

c語(yǔ)言計(jì)算器怎樣做三角函數(shù)功能?

很簡(jiǎn)單的,比如你已經(jīng)有一個(gè)表達(dá)式char exp[];

那么 char * s = strstr(exp, "sin");

if(s) {

執(zhí)行sin(alpha)

}

就可以了

strstr是一個(gè)字符串函數(shù),用于查找字符串內(nèi)與關(guān)鍵字匹配的那個(gè)位置

比如char exp[] = "cos(a) + sin(b) - tan(c)";

那么char * s = strstr(exp, "sin");

printf(s)的結(jié)果是:

sin(b) - tan(c)

求一個(gè)計(jì)算三角函數(shù)的C語(yǔ)言程序(不要使用C庫(kù),要自己定義函數(shù))

#include

#include

int main()

{

double n; //sin cos是函數(shù),不能定義成變量

scanf("%lf",n);

n=sin(n); //求n的sin()值,并返回給n

printf("%lf\n",n);//輸出n

return 0;

}

如何用C語(yǔ)言實(shí)現(xiàn)三角函數(shù)的計(jì)算

包含頭文件math.h后,所有三角函數(shù)的庫(kù)函數(shù)就都可以直接引用了。比如求x的正弦就用sin(x),它返回一個(gè)double值。注意x以弧度計(jì)……


網(wǎng)站欄目:c語(yǔ)言編程三角函數(shù)計(jì)算器 c#計(jì)算器三角函數(shù)
分享鏈接:http://weahome.cn/article/dosogsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部