c语言数学算法

Python012

c语言数学算法,第1张

不是%d,换成%f或%lf,

log以e为底直接是log(x),以10为底是log10(x)

exp(2.567)就是e的2.567次方

以上都要在头文件math.th中说明

#include "stdio.h" void main() { int a,b,cscanf("%d%d",&a,&b)c=a+bprintf("%d\n",c)getch()}

具体如下:

1、简介C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

2、基本介绍

C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。

3、运算

C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,对此合理进行分类,找出它们与数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。

#include<iostream>

#include<string>

using namespace std

//////加法

void addtion(string str1,string str2)

{

int n1=str1.size(),n2=str2.size()

int i,d,e

e=0

for(i=0i<n1i++)

{

if(i<n2)

{

d=str1[n1-1-i]-'0'+str2[n2-i-1]-'0'+e

e=d/10

str1[n1-1-i]=d%10+'0'

}

else

{

d=str1[n1-1-i]-'0'+e

e=d/10

str1[n1-1-i]=d%10+'0'

}

}

if(e!=0) cout<<e

cout<<str1<<endl

}

//////////减法

void subtration(string str1,string str2)

{

int n1=str1.size(),n2=str2.size()

int i,t,k

for(i=0i<n2i++)

{

if(str1[n1-1-i]<str2[n2-1-i])

{

for(k=n1-i-2k>=0k--)

if(str1[k]!='0') {t=kbreak}

str1[t]=str1[t]-1

for(k=t+1k<=n1-2-ik++)

str1[k]=str1[k]+9

str1[n1-1-i]=str1[n1-1-i]+10-str2[n2-1-i]+'0'

}

else

{

str1[n1-1-i]=str1[n1-1-i]-str2[n2-1-i]+'0'

}

}

t=-1

for(i=0i<n1i++)

if(str1!='0') {t=ibreak}

if(t==-1) cout<<'0'<<endl

else

{

for(i=ti<n1i++)

cout<<str1

cout<<endl

}

}

///////////////////乘法

void multiplication(string str1,string str2)

{

char a[100],b[100]

int n1,n2,i,j,k,d,e,m

n1=str1.size()

n2=str2.size()

for(i=0i<100i++)

a='0',b='0'

for(i=0i<n2i++)

{

e=0

for(j=0j<n1j++)

{

d=(str1[n1-1-j]-'0')*(str2[n2-1-i]-'0')+e

e=d/10

b[j]=d%10+'0'

}

m=j

if(e!=0)

{b[n1]=e+'0'm=m+1}

e=0

for(k=0k<mk++)

{

d=(a[k+i]-'0')+(b[k]-'0')+e

e=d/10

a[k+i]=d%10+'0'

}

for(k=me!=0k++)

{

d=(a[k+i]-'0')+e

e=d/10

a[k+i]=d%10+'0'

}

}

for(i=99i>=0i--)

if(a!='0') {m=ibreak}

for(i=mi>=0i--)

cout<<a

cout<<endl

}

int main()

{

string str1,str2

int n1,n2

char c

while(cout<<"输入运算符与数字:"<<endl,cin>>c>>str1>>str2)

{

n1=str1.size()

n2=str2.size()

switch(c)

{

case '+': if(n1<n2) addtion(str2,str1)else addtion(str1,str2)break

case '-':

if((n1<n2)||(n1==n2&&str2>str1)) {cout<<'-'subtration(str2,str1)}

else subtration(str1,str2)break

case '*':

if(n1<n2) multiplication(str2,str1)

else multiplication(str1,str2)

break

default:cout<<"输入错误"<<endl

}

}

return 0

}