c语言指针和整数比较大小的方法,用C语言指针方法实现大整数加法.doc

用C语言指针方法实现大整数加法

#include

#include

void f1(char *a,char *b)

{

char t[101];

if(strlen(a)

{

t[101]=0;

strcpy(t,a); //把a中内容拷贝到字符串t中

strcpy(a,b);

strcpy(b,t); //以上三条实现a与b的交换

}

}

void f(char *t1,char *t)

{

int i,n;

n=strlen(t1); //n是字符串t1的长度

for(i=0;i

t[i]=t1[n-1-i]; //把t1中的内容赋给与它的下标对称的下标t中

t[n]='\0'; //t最后一个位置赋结束字符

}

void f2(char *b,int q,int l)

{

char t[101]; //定义一个字符数组

int i;

for(i=0;i

t[i]='0';

t[q-l]='\0';

strcat(b,t); //把t连接到b去除结束字符'/0'的字符后,保持和字符串a长度一致,便于运算

}

void add(char *a,char *b,char *s,int q)

{

int i;

strcpy(s,a); //把字符串a拷贝到字符串s中

for(i=0;i

if(s[i]+b[i]>105) //判断两个数字的和是否大于十 ,若大于10考虑进位问题

{

s[i]+=(b[i]-58); //大于10进位,s[i]加上进位后的数字,运算后赋给s[i]

s[i+1]++; //s[i+1]进位加1,运算后赋给s[i]

}

else

s[i]+=(b[i]-48); //否则不进位,运算后赋给s[i]

}

void print(char *s)

{

int i,l;

l=strlen(s);

if(s[l-1]>'9'||s[l-1]

{

printf("1");

for(i=l-2;i>=0;i--)

printf("%c",s[i]);

}

else

for(i=l-1;i>=0;i--)

printf("%c",s[i]);

}

int main()

{

char a[101],b[101],a1[101],b1[101],sum[101]={0};

int q,l;

printf("请输入大整数a:\n ");

gets(a1); //输入字符a1

printf("请输入大整数b:\n ");

gets(b1); //输入字符b1

f1(a1,b1); //调用函数f1

f(a1,a); //调用f

f(b1,b); //调用f

q=strlen(a); //q是字符串a的长度

l=strlen(b); //l是字符串b的长度

f2(b,q,l); //调用f2使a,b长度一致

add(a,b,sum,q); //调用add,运算a,b字符串的结果

printf("和为:");

print(sum);

printf("\n");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值