C语言:大数相加与大数相减.

#include<stdio.h>
#include<string.h>
#define N 100
int res[N] = {0};

char *add(char a[], int n, char b[], int m) //大数相加
{
	int i=N-1, z=0, j;
	for( ; n>=0; n--, m--)
	{
		if(m>=0)
			res[i] = res[i] + a[n]-'0' + b[m]-'0';//res[i]=0或res[i]=1;
		else
			res[i] = res[i] + a[n] - '0';
		if( res[i] > 9 )
		{
			res[i] = res[i] - 10;
		    res[i-1]++;
		} 
		i--;
	}

	for(j=0 ;i<=N-1; i++, j++)
		a[j] = res[i] + '0';
	a[j]='\0';

	while(a[z] == '0')
		z++;
		a = a+z;
	return a;
}
char *change(char a[], int n, char b[], int m)
{
	if(a[0]=='0' && b[0] == '0')
	return "0";

	else 
		if(n>=m)
		a = add(a, n, b, m);
	else
		a = add(b, m, a, n);
	return a;
}
void main()
{
	char a[N], b[N], *s;
	int n, m;
	printf("Please input the first number: ");
	gets(a);
	printf("\n\nPlease input the second number: ");
	fflush(stdin);
	gets(b);

	n = strlen(a)-1;
	m = strlen(b)-1;

	printf("\n\nThe first number add the second number is: ");
	s = change(a, n, b, m);
	puts(s);
}


#include<stdio.h>
#include<string.h>
char *sub(char a[], int n, char b[], int m) //大数相减
{
	int z=0;
	for( ; n>=0; n--, m--)
	{
		if(m>=0)
			a[n] = a[n] - b[m] + '0';
		else
			a[n] =  a[n];
		if(a[n] < '0')
		{
			a[n] = a[n] +10;
			a[n-1]--;
		}
	}
	while(a[z] == '0')
			z++;
		a = a+z;
		return a;
}
char *change(char a[], int n, char b[], int m)
{
	if(n>m)
		a = sub(a, n, b, m);
	if(n<m)
	{
		printf("-");
		a = sub(b, m, a, n);
	}
	if(n==m)
	{
		if(strcmp(a, b) > 0)
			a = sub(a, n, b, m);
		else
			if(strcmp(a, b) <0)
		{
			printf("-");
		a = sub(b, m, a, n);
		}
			else
				return "0";
	}
	return a;
}
void main()
{
	char a[100], b[100], *s;
	int n, m;
	printf("请输入被减数: ");
	gets(a);
	printf("\n\n请输入减数: ");
	fflush(stdin);
	gets(b);
	n = strlen(a)-1;
	m = strlen(b)-1;
	printf("\n\n两数相减: ");
	s = change(a, n, b, m);	
	puts(s);
	printf("\n");
}


 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值