计算器怎么算以2为底的log_log2怎么用计算器算

计算器怎么算以2为底的log_log2怎么用计算器算。 函数计算器是一种电子计算器,可以进行幂、根、指数、对数、三角函数、统计等运算。它也被称为科学计算器。仅供参考: /* – 函数计算器(VC++6.0,Win32控制台) 功能: 目前,提供了10…

大家好,我是讯享网,大家多多关注。

函数计算器是一种电子计算器,可以进行幂、根、指数、对数、三角函数、统计等运算。它也被称为科学计算器。仅供参考:

/* –

函数计算器(VC++6.0,Win32控制台)

功能:

目前,提供了10多个常用的数学函数:

(1)原罪

余弦余弦

⑵正切Tan

⑵方形sqrt

5]反正弦

[6]反余弦反余弦

⑵反正切反正切

常用对数lg

⑼自然对数ln

⑽ e指数指数

⑾动力功能

⑿向上舍入上限

[13]圆形地板向下。

[13]舍入和舍入舍入

用法:

如果你要求2的32次方,你可以输入2 32 :

tan(π/6)型:

注意不要进入:谭(30)<回车& gt

如果需要1.23弧度的正弦值,有几种方法是有效的:

罪(1.23)& lt;输入& gt

sin 1.23 & lt输入& gt

sin1.23 & lt输入& gt

如果验证了正弦和余弦的平方和公式,sin(1.23)2+cos(1.23)2 < Enter & gt;或者sin 1.23 2+cos 1.23 2 ;

另外,两个函数表达式连在一起,自动理解为乘法如:sin1.23cos0.77+cos1.23sin0.77等价于sin(1.23)* cos(0.77)+cos(1.23)* sin(0.77)。

当然,你也可以用sin(1.23+0.77),即sin2,根据三角变换来验证。

这个计算器充分考虑了运算符的优先级,所以如:2+3 * 4 2实际上等价于:2+(3*(4*4))

此外,如果函数名前面有数字,它将自动被视为乘法。

同样,如果一个数的右边是左括号,则自动认为该数和括号之间有一个隐含的乘法符号。

例如,3sin1.2 2+5cos2.1 2相当于3*sin2(1.2)+5*cos2(2.1)。

再比如:4(3-2(sqrt5-1)+ln2)+lg5相当于4*(3-2*(√5 -1)+loge(2))+log10(5)

此外,该计算器提供了Pi在输入字母时不区分大小写,使用方便。

– */

# include & ltiostream & gt

# include & ltiomanip & gt

# include & ltcstdlib & gt

# include & ltcstring & gt

# include & ltcctype & gt

# include & ltcmath & gt

# include & ltstdio.h & gt

# include & ltstring.h & gt

# include & ltwindows.h & gt

usingnamespacestd

constcharTab = 0x9

constit digit = 1;

constintMAXLEN = 16384

chars[MAXLEN],* endss

intpcs = 15

doubleround(doubledVal,short iPlaces){//iPlaces & gt;=0

chars[30];

doubledRetval

sprintf(s,”%。*lf”,iPlaces,dVal);

sscanf(s,” %lf “,& ampdret val);

返回(dret val);

}

doublefun(doublex,charop[],int*iop) {

while(op[* IOP-1]& lt;32) //这行代码使得调用嵌套函数时不需要加括号,比如arc sin(sin(1.234))。只需键入arcsin sin1.234 < Enter & gt

开关(op[*iop-1]) {

case 7:x = sin(x);(* IOP)-;打破;

情况8:x = cos(x);(* IOP)-;打破;

情况9:x = tan(x);(* IOP)-;打破;

案例10:x = sqrt(x);(* IOP)-;打破;

案例11:x = asin(x);(* IOP)-;打破;

案例12:x = acos(x);(* IOP)-;打破;

案例13:x = atan(x);(* IOP)-;打破;

案例14:x = log10(x);(* IOP)-;打破;

案例15:x = log(x);(* IOP)-;打破;

案例16:x = exp(x);(* IOP)-;打破;

案例17:x = ceil(x);(* IOP)-;打破;

案例18:x =楼层(x);(* IOP)-;打破;

case19: x=round(x,0);(* IOP)-;打破;

}

returnx

}

doublecalc(char*expr,char**addr) {

staticintdeep//递归深度

staticchar*fname[]={“sin “,” cos “,” tan “,” sqrt “,” arcsin “,” arccos “,” arctan “,” lg “,” ln “,” exp “,” ceil “,” floor “,” round “,NULL };

doubleST[10]= { 0.0 };//数字堆栈

charop[10]= { ‘+’ };//运算符堆栈

charc、*rexp、*pp、* pf

intist=1,iop=1,last,I;

如果(!深度){

pp = pf = expr

做{

c = * pp++;

如果(c!=“”& amp;& ampc!=制表符)

* pf++ = c;

} while(c!='[94]’);

}

pp = expr

if((c=*pp)==’-‘||c==’+’) {

op[0]= c;

pp++;

}

last =!数字;

while((c=*pp)!='[102]’) {

If(c=='(‘) {//左括号

deep++的;

ST[ist++] = calc(+PP,addr);

深-;

乐趣(ST[ist-1],op,ampIOP);

pp = * addr

last =数字;

if(* PP = = ‘(‘ | | isalpha(* PP)& amp;& ampSTIICMP (PP,” PI “,2)){//目的是:当右括号右端为左括号或函数名时,默认为乘法。

op[iop++]= ‘ * ‘;

last =!数字;

c = op[-IOP];

gotooperate

}

}

Elseif(c==’)’) {//右括号

pp++;

打破;

} elseif(isalpha(c)) {

如果(!strnicmp(pp,” Pi “,2)) {

if(last==DIGIT) {

cout & lt& lt“π相遇于左)”< & ltendl出口(1);

}

ST[ist++]= 3.14159265358979323846264338328;

乐趣(ST[ist-1],op,ampIOP);

PP+= 2;

last =数字;

如果(!strnicmp(pp,” Pi “,2)) {

cout & lt& lt“两个π相连”

}

if(*pp=='(‘) {

cout & lt& lt“π相遇(”

}

}否则{

for(I = 0;(pf=fname[i])!= NULLi++)

如果(!strnicmp(pp,pf,strlen(pf)))破位;

如果(pf!=NULL) {

op[iop++]= 07+I;

PP+= strlen(pf);

}否则{

cout & lt& lt”不熟悉的函数名”

}

}

} elseif(c==’+’||c==’-‘||c==’*’||c==’/’||c==’%’||c==’^’){

charcc

如果(最后!=数字){

cout & lt& lt“操作员卡住”

}

pp++;

if(c==’+’||c==’-‘) {

做{

cc = op[-IOP];

-ist;

开关(cc) {

case ‘+’:ST[ist-1]+= ST[ist];打破;

case ‘-‘:ST[ist-1]-= ST[ist];打破;

case ‘ * ‘:ST[ist-1]* = ST[ist];打破;

case ‘/’:ST[ist-1]/= ST[ist];打破;

case ‘ % ‘:ST[ist-1]= fmod(ST[ist-1],ST[ist]);打破;

case’^’: ST[ist-1]= pow(ST[ist-1],ST[ist]);打破;

}

} while(IOP);

op[iop++]= c;

} else if(c = = ‘ * ‘ | | c = = ‘/’ | | c = = ‘ % ‘){

operate:cc = op[IOP-1];

if(cc==’+’||cc==’-‘) {

op[iop++]= c;

}否则{

-ist;

op[IOP-1]= c;

开关(cc) {

case ‘ * ‘:ST[ist-1]* = ST[ist];打破;

case ‘/’:ST[ist-1]/= ST[ist];打破;

case ‘ % ‘:ST[ist-1]= fmod(ST[ist-1],ST[ist]);打破;

case’^’: ST[ist-1]= pow(ST[ist-1],ST[ist]);打破;

}

}

}否则{

cc = op[IOP-1];

if(cc==’^’) {

cout & lt& lt“电源符号一起使用”

}

op[iop++]= c;

}

last =!数字;

}否则{

if(last == DIGIT) {

cout & lt& lt“两个数字粘在一起”

}

ST[ist++]=strtod(pp,& amprexp);

乐趣(ST[ist-1],op,ampIOP);

if(pp == rexp) {

cout & lt& lt”非法字符”

}

pp = rexp

last =数字;

if(*pp == ‘(‘||isalpha(*pp)) {

op[iop++]= ‘ * ‘;

last =!数字;

c = op[-IOP];

gotooperate

}

}

}

* addr = pp

如果(iop & gt=ist) {

cout & lt& lt”表达式错误”

}

while(iop) {

-ist;

开关(op[ – iop]) {

case ‘+’:ST[ist-1]+= ST[ist];打破;

case ‘-‘:ST[ist-1]-= ST[ist];打破;

case ‘ * ‘:ST[ist-1]* = ST[ist];打破;

case ‘/’:ST[ist-1]/= ST[ist];打破;

case ‘ % ‘:ST[ist-1]= fmod(ST[ist-1],ST[ist]);打破;

case’^’: ST[ist-1]= pow(ST[ist-1],ST[ist]);打破;

}

}

returnST[0];

}

intmain(intargc,char**argv) {

inta

if(argc & lt;2) {

if(GetConsoleOutputCP()!=936)系统(” chcp 936 >NUL”);//中文代码页

cout & lt& lt”计算函数表达式的值.”& lt& ltendl & lt& lt” support(),+,-,*,/,%,pi,sin,cos,tan,sqrt,arcsin,arccos,arctan,LG,ln,exp,ceil,floor,round ” < & ltendl

while(1) {

cout & lt& lt请输入表达式:“;

获取;

if(s[0]= = 0)break;//

cout & lt& lts & lt& lt”=”;

cout & lt& ltsetprecision(15)& lt计算(s,& ampendss)& lt;& ltendl

}

} else if(argc = = 2 & amp;& amp0==strcmp(argv[1],”/?”)) {

if(GetConsoleOutputCP()!=936)系统(” chcp 936 >NUL”);//中文代码页

cout & lt& lt”计算由≥1个命令行参数给定的函数表达式的值。最后一个参数是. 0 ~ .15,表示保留计算结果中的小数位0 ~ 15 ” < & lt;endl & lt& lt” support(),+,-,*,/,%,pi,sin,cos,tan,sqrt,arcsin,arccos,arctan,LG,ln,exp,ceil,floor,round ” < & ltendl

}否则{

strncpy(s,argv[1],MAXLEN-1);s[MAXLEN-1]= 0;

if(argc & gt;2) {

for(a = 2;a & ltargc-1;a++) strncat(s,argv[a],MAXLEN-1);//将空网格区间的参数连接到s。

if(1==sscanf(argv[a],”。%d “,& amppcs)和amp& amp0 & ltpcs & amp& amppcs & lt=15) {//最后一个参数是. 0 ~ .15,表示计算结果的小数位数是0 ~ 15。

printf(“%。*lf\n “,pcs,calc(s,& ampendss));

}否则{

strncat(s,argv[a],MAXLEN-1);

printf(“%.15lg\n “,calc(s,& ampendss));

}

}否则{

printf(“%.15lg\n “,calc(s,& ampendss));

}

}

return0

}

希望能帮到你,也期待你指出问题。

如果你对此感兴趣,可以加入群:233026065。大家一起学习交流吧。

还有很多学习资料,书籍,视频,免费课等等。……

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://51itzy.com/40207.html
(0)
上一篇 2022年 12月 12日 23:51
下一篇 2022年 12月 13日 00:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注