c语言实现高精度加减法主函数(c语言高精度算法)

本篇文章给大家谈谈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语言高精度算法)

怎样用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语言高精度算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 11:03:54
下一篇 2024年3月31日 11:10:08

相关推荐

  • 翻转二叉树c语言,二叉树翻转伪代码

    二叉树(C语言) 1、您好,想要实现一个二叉树,需要用到结构体来存储每个节点的信息,并使用指针来存储每个节点的左右子节点的地址。 2、在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。 3、只有一个根,没有…

    2024年5月19日
    3200
  • java判断输入回车,c语言判断输入回车

    Java:Scanner(System.in)获取的输入为什么带回车符? 当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。 因为Scanner类默认的分隔符就是空格,…

    2024年5月19日
    3300
  • 用c语言创建邻接矩阵,c语言创建邻接表

    数据结构-图的邻接矩阵表示(C语言) 1、为对称矩阵。根据矩阵性质可知原因:邻接矩阵(adjacencymatrix):是表示顶点之间相邻关系的矩阵。设g=(v,e)是一个图,其中v={v1,v2,…,vn}。 2、网络矩阵若G是网络,则邻接矩阵可定义为:其中:w ij 表示边上的权值;∞表示一个计算机允许的、大于所有边上权值的数。【例】下面带权图的两种邻接…

    2024年5月19日
    3400
  • c语言中complex.h用法,c语言complex的用法

    如何用c语言编一个复数的四则运算 1、复数的四则运算公式 (1)加法运算 设z1=a+bi,z2=c+di是任意两个复数,它的实部是原来两个复数实部的和,它的虚部是原来两个虚部的和:(a+bi)±(c+di)=(a±c)+(b±d)i。 2、在数学中一个复数可以定义为 (z=a + bi) 的形式。 C 语言在 ISO C99 时就引入了复数类型。它是通过 …

    2024年5月19日
    3700
  • c语言数据结构第三章,c语言数据结构基础

    请C语言版数据结构高手帮帮忙! 1、//参照书本,经测试,此代码可以。使用了一维数组实现循环队列。 2、实验一 单链表有一个头节点h e a d,指向链表在内存的首地址。 3、(2)第一:这个void DFSTraverse(ALGraph G,void(*print)(char*)) 为什么不能直接调用print函数,像调用DFS函数一样?可以的,使用函数…

    2024年5月19日
    4200
  • c语言数组的字节数,c语言字符数组所占字节

    c语言中整型的一维数组中每个元素地址的长度为什么会是4个字节?? 1、C语言的int变量具体占多少字节,跟计算机系统和编译器相关,有的计算机系统或编译器规定int变量占2个字节,有的则规定为4个字节,一般可以用sizeof(int)确定每个系统或编译器中规定的int变量的长度。 2、int变量占的字节数取决于机器的指令字长,32位的机器指令就是4字节。 3、…

    2024年5月19日
    5500
  • c语言中5的原码,c语言原码怎么求

    C语言中,原码,补码和反码怎么换算? 1、的原码为01100100 按位取反,得到反码为10011011 将反码加1,即10011011+1 = 10011100。于是-100的补码表示就是10011100,也就是0x9c(16进制)。 2、方法:(1)正整数的原码,反码和补码计算。【符号位为0,原码=反码=补码】(2)负整数的原码,反码和补码计算,先求原码…

    2024年5月19日
    3900
  • c语言蛇形矩阵代码,编程蛇形矩阵

    用C语言输出一个N阶蛇形矩阵(随意输出n*n个数之后,不要从1开始的,是自… 先说思想:N=4时候和N=5的时候前面4条斜线上三角是相同的!所以这个可以用递归做。 输入 矩阵阶数n(n10),每个输出数据占3位。 这是一门纯属于设计的科目,它需用把理论变为上机调试。 COORD c;int n;printf(请输入n\n);scanf(%d,&a…

    2024年5月19日
    3000
  • c语言%数字,c语言数字运算代码

    如何在C语言中输入百分数 1、c语言怎么输出百分号:首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。在test.cpp文件中,输入C语言代码:printf(百分号:%%);。编译器运行test.cpp文件,此时成功通过“%%”打印出了百分号。 2、C语言中,百分之2可以表示为 0.02。在C语言中使用小数表示百分数时,需要将百分数除…

    2024年5月19日
    3500
  • java语言转换c语言,java转其他语言

    怎样把java转换成C语言 1、这段代码涉及到密钥生成和加密操作,需要引入相关的加密库来实现。在C语言中,可以使用 OpenSSL 库来实现AES加密和解密操作。 2、理论上讲,任何不同类型的程序设计语言都可以相互转换,只不过是实现的语句不同罢了。 3、Java没有枚举、联合类型,因为Java认为没有必要。将可有可无的语言元素去掉是Java对C/C++做出的…

    2024年5月19日
    5100

发表回复

登录后才能评论



关注微信