『壹』 c語言大數加法。
#include <stdio.h>
#include <string.h>
void main( ) {
char a[1000], b[1000], c[1001] = {0}, flag = 0; /*c:存放結果,flag:進位信息*/
int i, j, k, m, n, len; /*i:跟蹤a的下標,j:跟蹤b的下標,k:跟蹤c的下標*/
scanf("%s%s", a, b);
m = strlen(a);
n = strlen(b);
len = (m > n) ? m : n;
/*相加時,先將右邊對齊,即將i指向a的右端,j指向b的右端,
然後i、j對齊,同步向左移動,直到其中一個到頭為止*/
for(i = m - 1, j = n - 1, k = len - 1; i >= 0 && j >= 0; i--, j--, k--)
{
c[k] = (a[i] - '0' + b[j] - '0' + flag) % 10 + '0';
flag = (a[i] - '0' + b[j] - '0' + flag) / 10;
}
for(; i >= 0; i--, k--) /*若a更長,即a沒有處理完,處理a剩下的高位部分*/
{
c[k] = (a[i] - '0' + flag) % 10 + '0';
flag = (a[i] - '0' + flag) / 10;
}
for(; j >= 0; j--, k--) /*若b更長,則方法同上*/
{
c[k] = (b[j] - '0' + flag) % 10 + '0';
flag = (b[j] - '0' + flag) / 10;
}
if(flag != 0) /*若最終的最高位進位信息不為0*/
{
for(k = len; k > 0; k--)
c[k] = c[k - 1];
c[0] = flag + '0';
}
printf("%s + %s = %s
", a, b, c);
}
運行結果
『貳』 c語言大數加與大數和問題
string add(string a, string c)
{
char ab[255];
memset(ab,'\0',sizeof(char)*255);
for(unsigned int i_=0;i_< a.length();i_++)
ab[i_]=a[a.length()-i_-1];
char cd[255];
memset(cd,'\0',sizeof(char)*255);
for(unsigned int j=0;j<c.length();j++)
cd[j]=c[c.length()-j-1];
int offset=0;
int temp_j=0;
int k;
int strlen_k = strlen(cd);
//將ab的這個數補全
for(unsigned int i_i=strlen(ab);i_i<strlen(cd)+1;i_i++)
ab[i_i]='0';
for(k=offset;k<strlen_k+offset;k++)
{
int temp=(ab[k]-'0')+(cd[k-offset]-'0')+temp_j;
temp_j=temp/10;
int temp_g=temp%10;
ab[k]=temp_g+'0';
}
if(temp_j)
ab[k]=temp_j+'0';
else
k--;
int i=0;
while(k>-1)
{
cd[i++]=ab[k--];
}
string s = cd;
return s;
}
輸入兩個字元串,返回相加結果
『叄』 C語言大數取模問題,求解決方案
可以使用快速冪演算法(pow)來求a^n%c的值
首先,先把裡面的除號解決(因為快速冪演算法不能計算除法)
a^(n+1)-b^(n+1)/(a-b)=
(a-b)(a^n+a^(n-1)*b^(n-1)+b^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語言 大數相減A-B problem
while(i>=0){
result=addnum1[i--]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
while(j>=0){
result=addnum2[j--]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
if(carry)total[k++]=carry+'0';
total[k]='