本篇文章给大家谈谈c语言实现高精度加减法主函数,以及c语言高精度算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、使用c语言编程,用函数实现一个计算器,在主函数中调用函数,包括加减乘除,乘方,绝对值和sin函数。2、c语言 定义结构体类型,分别编写函数实现复数的加、减运算,在主函数中调用这些函数进行计算并输出计算结3、C语言 高精度 求2个大数(0< L , W < 2^1000 )的最大公约数,看清楚高精度!!!不要给我小数的程序!4、C语言:在主函数中输入两个整数,调用以上四个函数,实现两个整数的加、减、乘、除运算。5、怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器?
使用c语言编程,用函数实现一个计算器,在主函数中调用函数,包括加减乘除,乘方,绝对值和sin函数。
#includestdio.h
#includestdlib.h
double jia(double a,double b)
{
return a+b;
}
double jian(double a,double b)
{
return a-b;
}
double cheng(double a,double b)
{
return a*b;
}
double chu(double a,double b)
{
return a/b;
}
double juedui(double a)
{
return a0 ? a : -a;
}
double chengfang(double a,double b)
{
return pow(a,b);
}
double sinx(double a)
{
return sin(a);
}
int main()
{
int m;
double a,b;
while(1)
{
printf(“请输入第一个操作数:”);
scanf(“%lf”,a);
printf(“0、退出\n1、加\n2、减\n3、乘\n4、除\n5、绝对值\n6、乘方\n7sin、\n请选择一个:”);
scanf(“%d”,m);
if(1==m || 2==m || 3==m || 4==m || 6==m)
{
printf(“请输入第二个操作数:”);
scanf(“%lf”,b);
}
switch(m)
{
case 0:
exit(0);
break;
case 1:
printf(“%lf+%lf=%lf\n”,a,b,jia(a,b));
break;
case 2:
printf(“%lf-%lf=%lf\n”,a,b,jian(a,b));
break;
case 3:
printf(“%lf*%lf=%lf\n”,a,b,cheng(a,b));
break;
case 4:
if(0.0==b)
{
printf(“除数不能为0。\n”);
}
else
{
printf(“%lf/%lf=%lf\n”,a,b,chu(a,b));
}
break;
case 5:
printf(“|%lf|=%lf\n”,a,juedui(a));
break;
case 6:
printf(“%lf的%lf方=%lf\n”,a,b,chengfang(a,b));
break;
case 7:
printf(“sin(%lf)=%lf\n”,a,sinx(a));
break;
default:
printf(“无法处理的命令。\n”);
break;
}
}
system(“PAUSE”);
return EXIT_SUCCESS;
}
c语言 定义结构体类型,分别编写函数实现复数的加、减运算,在主函数中调用这些函数进行计算并输出计算结
#include stdio.h
struct complex
{
int re;
int im;
};
void add(struct complex a, struct complex b, struct complex *c)
{
c-re=a.re+b.re;
c-im=a.im+b.im;
}
void minus(struct complex a, struct complex b, struct complex *c)
{
c-re=a.re-b.re;
c-im=a.im-b.im;
}
int main()
{
struct complex x,y,s,p;
scanf(“%d%d”,x.re,x.im);
scanf(“%d%d”,y.re,y.im);
add(x,y,s);
printf(” sum=%5d+%5di\n”,s.re,s.im);
minus(x,y,p);
printf(” product=%5d+%5di\n”,p.re,p.im);
return 0;
}
<h2 id='C语言 高精度 求2个大数(0< L , W C语言 高精度 求2个大数(0< L , W < 2^1000 )的最大公约数,看清楚高精度!!!不要给我小数的程序!
Hpre.h 文件
//HighPrecision
// 1234567890 高位存在数组最末
#include iostream
#include string.h
#include vector
using namespace std;
const int maxlen=300;
class HP{
public:
HP() { (*this).len=0; }
HP(int inte,int len);
~HP() {num.clear();};//
HP(int inte);
HP(const char*str);
int HP_DectoB(int sum,int b,int *S);
friend ostream operator (ostream cout,const HP x)
{
if(x.sign_bit) cout”-“;
for(int i=x.len;i0;i–)
{
coutx.num.at(i);
if((i-1)%3==0 i!=1) cout”,”;
}
return cout;
}
HP operator=(int inte);
HP operator=(const char* str);
HP operator*(const HP b);
HP operator+(const HP b);
HP operator-(const HP b);
HP operator/(const HP b);
HP operator%(const HP b);
HP operator++();
HP operator++(int);//后置自增运算符
HP operator–();
HP operator–(int);
int Compare(const HP b);
HP GCD(const HP b);
private:
int len;
vectorint num;
bool sign_bit;//符号位 1 – 0 +
};
/////////////////////////////
Hpre.cpp 文件
#include “HPre.h”
#include “HPre.h”
HP::HP(int inte)
{
if(inte0) sign_bit=1;
else sign_bit=0;
num.clear();
num.push_back(0);
if(inte==0) { len=1; num.push_back(0); return;}
for(len=0;inte0;)
{ num.push_back(inte%10);inte/=10; len++;}
}
HP::HP(const char*str)
{
num.clear();
num.push_back(0);
if(str[0]!=’-‘) sign_bit=0,str++;
else sign_bit=1;
len=strlen(str);
for(int i=1;i=len;i++) num.push_back(str[len-i]-‘0’);
}
HP HP::operator=(int inte)
{
if(inte0) sign_bit=1;
else sign_bit=0;
num.clear();
num.push_back(0);
if(inte==0) { len=1; num.push_back(0); return (*this); }
for(len=0;inte0;){ num.push_back(inte%10);inte/=10; len++;}
return (*this);
}
HP HP::operator=(const char *str)
{
if(str[0]!=’-‘) sign_bit=0,str++;
else sign_bit=1;
len=strlen(str);
num.push_back(0);
for(int i=1;i=len;i++) num.push_back(str[len-i]-‘0’);
return (*this);
}
HP HP::operator*(const HP b)
{
int i,j;
int c_len=len+b.len;
HP c(0);
c.num.resize(c_len+1,0);
if(this-sign_bit!=b.sign_bit) c.sign_bit=1;
else c.sign_bit=0;
for(i=1;i=len;i++)
for(j=1;j=b.len;j++) c.num[i+j-1]+=num[i]*b.num[j];
for(i=1;ic_len;i++) { c.num[i+1]+=c.num[i]/10; c.num[i]%=10; }
while(c.num[i]) { c.num.push_back(c.num[i]/10);c.num[i]%=10; i++; }
while(i1 !c.num[i]) i–;
c.len=i;
return c;
}
HP HP::operator-(const HP b)
{
int i,j;
HP c;
int tlen=0;
if(b.lenthis-len) tlen=b.len;
else tlen=this-len;
c.num.resize(tlen+1,0);
if(Compare(b)=0) c.sign_bit=0;
else c.sign_bit=1;
for(i=1,j=0;i=len;i++)
{
c.num[i]=num[i]-j;
if(i=b.len) c.num[i]-=b.num[i];
if(c.num[i]0) { j=1; c.num[i]+=10; }
else j=0;
}
c.len=len;
while(c.len1 !c.num[c.len]) c.len–;
return c;
}
HP HP::operator/(const HP b)
{
int i,j;
HP d(0),c;
int tlen=0;
if(b.lenthis-len) tlen=b.len;
else tlen=this-len;
c.num.resize(tlen+1,0);//商
d.num.resize(tlen+1,0);//余数
if(this-sign_bit!=b.sign_bit) c.sign_bit=1;
else c.sign_bit=0;
for(i=len;i0;i–)
{
if(!(d.len==1 d.num[1]==0))//除数不为0
{
for(j=d.len;j0;j–)
d.num[j+1]=d.num[j];
++d.len;
}
d.num[1]=num[i];c.num[i]=0;
while( (j=d.Compare(b))=0)
{ d=d-b; c.num[i]++;
if(j==0) break;
}
}
c.len=len;
while((c.len1)(c.num[c.len]==0)) c.len–;
return c;
}
HP HP::operator+(const HP b)
{
int i;
HP c;
int tlen=0;
if(b.lenthis-len) tlen=b.len;
else tlen=this-len;
c.num.resize(tlen,0);
c.num[1]=0;
for(i=1;i=len||i=b.len || c.num[i];i++){
if(i=len) c.num[i]+=num[i];
if(i=b.len) c.num[i]+=b.num[i];
c.num.push_back(c.num[i]/10); c.num[i]%=10;
}
c.len=i-1; if(c.len==0) c.len=1;
return c;
}
int HP::Compare(const HPy)
{
if(leny.len) return 1;
if(leny.len) return -1;
int i=len;
while((i1) (num[i]==y.num[i])) i–;
return num[i]-y.num[i];
}
HP HP::operator %(const HP b)
{
int i,j;
HP d(0);
int tlen=b.len;
d.num.resize(tlen+3,0);
for(i=len;i0;i–)
{
if(!(d.len==1 d.num[1]==0))
{
int t=d.num.size()-1;
if(t==d.len) d.num.push_back(0);
for (j=d.len;j0;j–)
d.num[j+1]=d.num[j];
++d.len;
}
d.num[1]=num[i];
while ((j=d.Compare(b)=0))
{
d=d-b;
if(j==0) break;
}
}
return d;
}
HP HP::GCD(HP b)
{
HP d(1);
const HP zero(0);
int d_len=0;
if(lenb.len) d_len=b.len;
else d_len=len;
d.num.resize(d_len+2);
d=*this%b;
if(d.Compare(zero)==0)
{d=b; return d;}
else return b.GCD(d);
}
//////////////////////
main.cpp文件
#include iostream
#include “HPre.h”
using namespace std;
#include iostream
#include “HPre.h”
using namespace std;
int main()
{
HP t(“18446744073709551616”);//2^64
HP a(12);
HP b(9);
HP c(3);
a=a*t;
b=b*t;
couta.GCD(b)endl;
coutc*tendl;
return 1;
}
验算没错 不知道有其他错误没 自己写的类
C语言:在主函数中输入两个整数,调用以上四个函数,实现两个整数的加、减、乘、除运算。
#include
stdio.h
int
max(int
*p,int
n){
int
i=0;
int
k=0;
while(in-1){
if(*(p+i)*(p+1+i))
*(p+1+i)=*(p+i);
k=*(p+1+i);
i++;
}
return
k;
}
main(){
int
a[100];
int
i=0;
int
n=0;
printf(“请输入你要输入的数的个数:\n”);
scanf(“%d”,n);//这里输入4,就可以了,本代码适合n个数的比较大小;
for(i=0;in;i++){
printf(“请输入第
%d
个数:\n”,i+1);
scanf(“%d”,a[i]);
}
printf(“你输入的
%d
个数是\n”,n);
for(i=0;in;i++)
printf(“
%d
“,a[i]);
int
*p=a;
int
k=max(p,n);
printf(“\n其中最大值为\n
%d\n”,k);
}
怎样用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器?
用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器的方法:
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File;
2、输入预处理命令和主函数:
#includestdio.h /*函数头:输入输出头文件*/
void main()/*空类型:主函数*/
3、定义变量:
int a,b,d; /*定义变量的数据类型为整型*/
char c;/*定义变量的数据类型为字符型*/
4、输入四则运算式:
printf(“输入如“3*4”或“5+2”的四则运算式:”);/*输出文字提示*/
scanf(“%d%c%d”,a,c,b);/*输入四则运算式*/
5、判断运算符号:
switch(c) /*判断运算符号*/
{
case’+’:d=a+b;break;/*进行加法运算*/
case’-‘:d=a-b;break;/*进行减法运算*/
case’*’:d=a*b;break;/*进行乘法运算*/
case’/’:d=a/b;break; /*进行除法运算*/
}
6、输出结果:
printf(“%d%c%d=%d\n”,a,c,b,d);/*输出结果*/
完整的源代码:
#includestdio.h /*函数头:输入输出头文件*/
void main()/*空类型:主函数*/
{
int a,b,d;/*定义变量的数据类型为整型*/
char c;/*定义变量的数据类型为字符型*/
printf(“输入如“3*4”或“5+2”的四则运算式:”);/*输出文字提示*/
scanf(“%d%c%d”,a,c,b);/*输入四则运算式*/
switch(c)/*判断运算符号*/
{
case’+’:d=a+b;break;/*进行加法运算*/
case’-‘:d=a-b;break;/*进行减法运算*/
case’*’:d=a*b;break;/*进行乘法运算*/
case’/’:d=a/b;break;/*进行除法运算*/
}
printf(“%d%c%d=%d\n”,a,c,b,d);/*输出结果*/
}
关于c语言实现高精度加减法主函数和c语言高精度算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。