導航:首頁 > 編程語言 > c語言編程處理大數問題

c語言編程處理大數問題

發布時間:2022-06-29 02:26:25

㈠ C語言大數問題

你可以這樣做,在輸入0之前,每次輸入的數都進行加法操作。
假設我們使用的是數組a和result這二個數組。
給result賦初值為0,然後每次讀入a就做加法操作,加到result裡面,知道a為0時,輸出result的值,然後再把result的值賦為0即可。
// 加法是高精度裡面最簡單的
// 然後有一點你的程序最好是把加法做成一個函數來調用,這樣如果題目變了的話,加法功能還在,直接復制之後稍加修改主函數的調用就OK了。

㈡ c語言中怎麼處理一個特別大的數據的運算

最簡單的辦法是將大數當作字元串進行處理,也就是將大數用10進制字元數組進行表示,

然後模擬人們手工進行「豎式計算」的過程編寫其加減乘除函數。但是這樣做效率很低,

因為1024位的大數其10進制數字個數就有數百個,對於任何一種運算,都需要在兩個有

數百個元素的數組空間上做多重循環,還需要許多額外的空間存放計算的進位退位標志

及中間結果。其優點是演算法符合人們的日常習慣,易於理解。

㈢ C語言程序設計大數加減

找到一個,大數加減運算的,運算結果是正確的,就是格式要變一下,你看看吧

㈣ C語言如何實現大數相加問題,各位高手多多指教!

可以的。

我曾經編寫過100的階乘的程序。在這個程序中,計算結果達到幾千位,
這樣大的數據很明顯是任何數據類型都表示不了的。

不過,你可以把大數用數組來表示,比如1258746這個數,你用數組
a[]={0,0,0,...,0,1,2,5,8,7,4,6}來表示,然後對數組的每一位進行運算。

按照你題目的意思,還應該定義一個大數的加法的函數,
類似
Add(int a[], int b[], int m, int n);

數組a,b是兩個表示大數的數組,m,n是數組的大小。注意,要從末尾對齊。

以上是我個人的一些意見,你可以搜索並學習一下我開頭提到的那個程序,即關於大數的階乘,網上應該有很多的資料,對你解題會有幫助的。

請問樓上,實際應用中用的到大數嗎?
double類型可以表示21億大的數據,幾乎可以滿足絕大多數的實際應用了,更何況是單片機

這里討論大數的運算是一種方法、一種思路。

㈤ 用c語言編寫程序,求大數加,大數減,大數積,大數除。寫四個程序。

既然你乘除都會了,加減就更應該沒問題阿。。。

#include<iostream>
usingnamespacestd;
inta[101]={0},b[101]={0};
voidinit(inta[])
{inti;
strings;
cin>>s;
a[0]=s.length();
for(i=1;i<=a[0];i++)
a[i]=s[a[0]-i]-'0';
}
voidprint(inta[])
{
inti;
if(a[0]==0){cout<<0<<endl;return;}
for(i=a[0];i>0;i--)cout<<a[i];
cout<<endl;
return;
}
/*
voidjian(inta[],intb[])//計算a=a-b
{intflag,i;
flag=compare(a,b);//調用比較函數判斷大小
if(flag==0){a[0]=0;return;}//相等
if(flag==1)//大於
{for(i=1;i<=a[0];i++)
{if(a[i]<b[i]){a[i+1]--;a[i]+=10;}//若不夠減則向上借一位
a[i]=a[i]-b[i];
}
while(a[a[0]]==0)a[0]--;//修正a的位數
return;
}
if(flag==-1)//小於則用a=b-a,返回-1
{cout<<"-";
for(i=1;i<=b[0];i++)
{if(b[i]<a[i]){b[i+1]--;b[i]+=10;}//若不夠減則向上借一位
a[i]=b[i]-a[i];
}
a[0]=b[0];
while(a[a[0]]==0)a[0]--;//修正a的位數
return;
}
}
*/
voidjia(inta[],intb[])
{inti,k;
if(a[0]<b[0])a[0]=b[0];
for(i=1;i<=a[0];i++)a[i]+=b[i];
for(i=1;i<=a[0];i++)
{a[i+1]+=a[i]/10;
a[i]%=10;
}
if(a[a[0]+1]>0)a[0]++;
}
intmain()
{
init(a);init(b);
jia(a,b);
print(a);
return0;
}

㈥ c語言編程,怎麼處理上千位的大數字啊

先看你的精度要求,如果不要求精確可以用實數類型,如果要求精確,就要用高精度。高精度就是用數組來儲存每一位,自己編寫加減乘除的函數(模擬人進行一位一位地計算),數組大小根據需要開,也可以動態分配。具體可以查高精度運算的有關資料,網上很多

㈦ C語言問題求解—大數乘法問題

'0'+81>128阿 溢出了
LS對 int不夠用
#include<stdio.h>
#include<string.h>
void main()
{
unsigned la,lb,i,j,t,k;
char a[201],b[201],c[40500];
while(1)
{
scanf("%s%s",a,b);
for(k=0;k<40500;k++)
c[k]=0; //初始值 為0 別設為'0'了
//後面輸出再加'0'
la=strlen(a);lb=strlen(b);
for(j=lb-1;j>=0;j--)
{
for(i=la-1;i>=0;i--)
{
c[la+lb-i-j-2]+=(a[i]-'0')*(b[j]-'0');
if(c[la+lb-i-j-2]>9) //'9' ->9
{
c[la+lb-i-j-1]+=(c[la+lb-i-j-2])/10; //不需要 -'0'了
c[la+lb-i-j-2]=(c[la+lb-i-j-2])%10; //不需要 -'0'了

}
}
}
for(i=la+lb-i-j-3;c[i]==0;i--); //'0' ->0
for(;i>=0;i--)
printf("%c",c[i]+'0'); //+'0' 輸出數字
printf("\n");
printf("結束!\n");
}
}

㈧ 求最大數的簡單c語言編程問題

......

#include<stdio.h>
int max(int x,int y)
{int z;
z=(x:y)?(x>y);>>>>>>>>>> z=x>y?x:y;
return(z);

}
main()
{ int a=10,b=20,c;
c=max(a,b);
printf("zui da shu shi:%d",c);
}

這道題是你們老師要求用形式參數寫嗎?

如果還有什麼疑問,請盡快補充。

㈨ 在C語言編程過程中想要使用大數庫需要添加什麼頭文件

建議用SQLITE3,你只要把這個SQLITE3.C這個文件,包含到頭文件就可以了,這個文件,你可以在網上找到,如果你的資料庫沒有超過10個G,那應該是可以用的

㈩ C語言大數處理問題

#include<stdio.h>
typedeflonglongLL;

LLpow(intx){
returnLL(x)*x;
}

intmain(){
LLsum=0,N;
intk=1;
scanf("%I64d",&N);

while(sum<N){
sum+=pow(k++);
}

printf("%d ",k-1);
}

//答題不易
//如果滿意,麻煩採納一下
//如果不滿意,可以繼續追問

閱讀全文

與c語言編程處理大數問題相關的資料

熱點內容
不去互聯網程序員 瀏覽:550
電腦qq郵箱解壓的圖片保存在哪裡 瀏覽:544
嵌入命令行 瀏覽:91
檔案為什麼被加密 瀏覽:486
十天學會單片機13 瀏覽:875
榮耀怎麼設置讓app一直運行 瀏覽:993
共享文件夾能在哪裡找到 瀏覽:435
旅遊訂旅店用什麼app 瀏覽:240
一個女程序員的聲音 瀏覽:496
魔術app怎麼用 瀏覽:340
單片機有4個8位的io口 瀏覽:897
win10rar解壓縮軟體 瀏覽:169
plc教程pdf 瀏覽:668
pythonshell清屏命令 瀏覽:279
檢測到加密狗注冊伺服器失敗 瀏覽:205
解壓後手機如何安裝 瀏覽:519
極客學院app為什麼下架 瀏覽:14
圖片批量壓縮綠色版 瀏覽:656
東北程序員帥哥 瀏覽:709
加密封條風噪小 瀏覽:975