當前位置:首頁 » 編程語言 » 用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);

}

希望能幫到你。