当前位置:首页 » 编程语言 » 用c语言编写程序实现大整数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言编写程序实现大整数

发布时间: 2023-08-03 04:22:30

① 大一c语言:用数组设计一个20位长整数,并实现用这个长整数进行加法或减法运算。 急求啊

//这是肢信我之前写的一个大整数的加减乘的程序,先输入两个数的各位的值
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

voidputin(int*x,int*y,inta,intb)
{
inti;
for(i=0;i<a;i++)
{
printf("输入x[%d]:",i);
scanf("%d",&x[i]);
}
for(i=0;i<b;i++)
{
printf("输入y[%d]:",i);
scanf("%d",&y[i]);
}
}

voidjiafa(int*x,int*y,int*z,int*c,inta,intb)
{
inti,j;
z[0]=(x[0]+y[0])%10;
c[0]=(x[0]+y[0])/10;
for(i=1,j=1;i<a;i++,j++)
{
if(j<b)
{
z[i]=(x[i]+y[j]+c[i-1])%10;
c[i]=(x[i]+y[j]+c[i-1])/10;
}
elseif(i==b)
{
z[i]=x[i]+c[b-1];
}
elsez[i]=x[i];
}
if(c[i-1]!=0)
{
z[i]=c[i-1];

}
elsez[i]=0;
}

voidchengfa(int*x,int*y,int*z,int*c,inta,intb)
{
inti,j;
int*t=(int*)malloc(sizeof(int)*b*(a+b));
int*c1=(int*)malloc(sizeof(int)*(a+b));
int*p=(int*)malloc(sizeof(int)*(a+b));
for(i=0;i<a+b;i++)
c1[i]=0;
for(i=0;i<b;i++)
for(j=0;j<a+b;j++)
t[i*(a+b)+j]=0;


for(j=0;j<b;j++)
{
for(i=0;i<a;i++)
{
if(i==0)
{
t[j*(a+b)+i]=(x[i]*y[j]+c[0])%10;
c[i]=(x[i]*y[j]+c[0])/10;
}
else
{
t[j*(a+b)+i]=(x[i]*y[j]+c[i-1])%10;
c[i]=(x[i]*y[j]+c[i-1])/10;
}
}
if(c[i-1]!=0)
t[j*(a+b)+i]=c[i-1];
}
for(i=0;i<b;i++)
for(j=0;j<i;j++)
{
for(intk=a+b-1;k>0;k--)
t[i*(a+b)+k]=t[i*(a+b)+k-1];
t[i*(a+b)+0]=0;
}
jiafa(t+0*(a+b),t+1*(a+b),z,c1,a+b,a+b);
for(i=2;i<b;i++)
{
for(j=0;j<a+b;j++)
p[j]=z[j];
jiafa(p,t+i*(a+b),z,c1,a+b,a+b);
}

}

voidjianfa(int*x,int*y,int*z,int*c,inta,intb)
{
inti,j;
x[0]>尘握=y[0]?c[0]=0:c[0]=-1;
z[0]=(x[0]-y[0]+10)%10;
for(i=1,j=1;i<a;i++,j++)
{
if(j<b)
{
x[i]>=y[j]?c[i]=0:c[i]=-1;
z[i]=(x[i]-y[j]+c[i-1]+10)%10;
}
elseif(j==b)
{
z[i]=x[i]+c[j-1];
}
elsez[i]=x[i];
}
}


voidprint(int历兄轮*x,int*y,int*z,inta,intb,intc)
{
inti;
for(i=0;i<c-a;i++)
printf("");
for(i=a-1;i>=0;i--)
printf("%d",x[i]);
printf(" ");

for(i=0;i<c-b;i++)
printf("");
for(i=b-1;i>=0;i--)
printf("%d",y[i]);
printf(" ");

for(i=c-1;i>=0;i--)
printf("-");
printf(" ");

for(i=c-1;i>=0;i--)
printf("%d",z[i]);
printf(" ");

}
voidmain()
{
intlengtha=5,lengthb=4,i;
//printf("输入数组a和b的长度(a的长度大于b的长度):");
//scanf("%d%d",&lengtha,&lengthb);
int*a=(int*)malloc(lengtha*sizeof(int));
int*b=(int*)malloc(lengthb*sizeof(int));
int*sum=(int*)malloc((lengtha+1)*sizeof(int));
int*c=(int*)malloc((lengtha)*sizeof(int));
int*cha=(int*)malloc(lengtha*sizeof(int));
int*ji=(int*)malloc((lengtha+lengthb)*sizeof(int));

for(i=0;i<lengtha;i++)
{
a[i]=i+2;
b[i]=i+2;
c[i]=0;
}
a[lengthb]=9;

/*
printf("输入%d个数组a的元素:",lengtha);
for(i=0;i<lengtha;i++)
scanf("%d",&a[i]);
printf("输入%d个数组b的元素:",lengthb);
for(i=0;i<lengthb;i++)
scanf("%d",&b[i]);
*/

putin(a,b,lengtha,lengthb);
jiafa(a,b,sum,c,lengtha,lengthb);
printf("加法: ");
print(a,b,sum,lengtha,lengthb,lengtha+1);

jianfa(a,b,cha,c,lengtha,lengthb);
printf("减法: ");
print(a,b,cha,lengtha,lengthb,lengtha);


chengfa(a,b,ji,c,lengtha,lengthb);
printf("乘法: ");
print(a,b,ji,lengtha,lengthb,lengtha+lengthb);



}

② 求大神用C语言编程 求两个整数的最大值的代码

#include<stdio.h>

int main()

int a,b,max;

printf("请输入两个整数:");

scanf("%d,%d",&a,&b);

if(a>b)

max = a;

else

max = b;

printf("较大的数是:%d",max);

return 0;

简洁的语言

C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

以上内容参考:网络-c语言

③ c语言编程:输入一个很大的整数n(n<100),输出n各位数字之和 ,利用字符串实现

思路:输入字符串,从字符串的第一个位置开始依次把每个数字字符转成整数,并计算其累加和。

参考代码:

#include"stdio.h"
#include"string.h"
intmain(){
chara[100];
inti,sum=0;
gets(a);
for(i=0;a[i]!='';i++)//遍历求累加和
sum+=a[i]-'0';
printf("%d ",sum);
return0;
}
/*
运行结果:
12345
15
*/

④ 如何用C语言编写一个计算正整数位数的程序

此程序可通过以下步骤实现:

1、输入一个正整数

2、将整数转换为字符串(使用sprintf函数)

3、求字符串的长度(strlen函数),即正整数的位数

代码如下:

#include<stdio.h>
#include<string.h>

intmain()
{
longnum;
charstr[20];

scanf("%ld",&num);
sprintf(str,"%ld",num);
printf("%d",strlen(str));

return0;
}

这样写主要是考虑到整数的前面可能有0,比如:00090,是两位数。如果确认没有前置0的话,可以简化过程,省去转换为字符串的过程,直接用gets得到字符串。

⑤ C语言 输入任意两个整数,求输出其中最大的整数 怎么做

很简单,自己定义一个比较函数,或直接在main函数中进行比较
用main:
main()
{
int
a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
if(a>b)
printf("最大数为:%d\n",a);
else
printf("最大数为:%d\n",b);
}
定义新函数的代码也差不多,只要改几个变量就够了

⑥ c语言如何输出最大的整数或者最小整数

详细如下:

# include<stdio.h>

int main (void)

{ int a,b,c,t;

printf("请输入三个任意整数: ");

scanf("%d %d %d",&a, &b, &c);

if(a<b)

{ t = a;

a = b;

b = t;

}

if(a<c)

{

t = a;

a = c;

c = t;

}

if(b<c)

{

t = b;

b = c;

c = t;

}

printf("最大值:%d 最小值:%d %d",a,c);

}

希望能帮到你。