首页 > 其他分享 >C语言:大数减法

C语言:大数减法

时间:2022-11-18 12:23:01浏览次数:45  
标签:p1 大数 int C语言 char num ans 100 减法

题目

输入两个正整数(20位以上),计算两个数的差

 例如:
  输入:56262555558558536665 54212125121252222521
  输出:2050430437306314144


代码


#include<stdio.h>
#include<string.h>

int main(){
	char a[100],b[100],t[100];
	char flg[]="+";
	int ans[100]={0};
	int num_a,num_b,i,n,lim,tmp;
	char *p1,*p2;
	
	scanf("%s %s",a,b);
	for(num_a=0;a[num_a]!='\0';num_a++);
	for(num_b=0;b[num_b]!='\0';num_b++);
	if(strcmp(b,a) == 0){
		printf("0");
		return 0;
	}
	if(strlen(a)<strlen(b) || strlen(a)==strlen(b) && strcmp(b,a) > 0
	){
		strcpy(t,a);
		strcpy(a,b);
		strcpy(b,t);
		flg[0]	= '-';
	}
	
	n = --num_a;
	lim = --num_b;
	p1 = &a[num_a];
	p2 = &b[num_b];
	for(i=0;i<n-lim;i++)ans[i] = a[i] - '0';
	
	tmp = n;
	
	for(;n>0;n--){
		ans[n] += (10 + *p1 - *p2) %10;
		ans[n-1] += (*p1<*p2)?-1:0;
		if(0 == lim--)break;
		p1--;
		p2--;
	}
	
	if(flg[0]=='-')
		printf("%c",flg[0]);
	for(i=0;ans[i]==0;i++)
	for(i++;i<=tmp;i++)printf("%d",ans[i]);
	
	return 0;
} 

标签:p1,大数,int,C语言,char,num,ans,100,减法
From: https://www.cnblogs.com/Shin404/p/16902794.html

相关文章

  • C语言:最小子数组和
    题目给你一个整数数组,请你找出一个具有最小和的连续子数组(子数组最少包含一个元素),返回其最小和。子数组是数组中的一个连续部分。 例如:  输入:-21-34-1-21-......
  • C语言:蛇形方阵
    题目给出一个不大于9的正整数n,输出n×n的蛇形方阵。从右上角填上1开始,逆时针方向依次填入数字,如同样例所示。注意每个数字都右对齐,中间用空格隔开。 例如:  ......
  • C语言:连续子串
    题目输入一个字符串,输出其所有的子串(不包含本身,输出每个子串间有空格)。子串:对于一个字符串变量,例如"adereegfbw",它的子串就是像"ader"这样可以从中找到的连续的字符......
  • C语言:规则排序
    题目输入正整数n,再输入n个正整数,先将其中的奇数从小到大排序,再将偶数从大到小排序。 例如:  输入:828522391125  输出:35911252282代码#in......
  • EasyExcel对大数据量表格操作导入导出
    前言最近有个项目里面中有大量的Excel文档导入导出需求,数据量最多的文档有上百万条数据,之前的导入导出都是用apache的POI,于是这次也决定使用POI,结果导入一个四十多万的文......
  • C语言:亲密数对
    题目输入N,N在2至3000之间,求2至N中的亲密数对。所谓亲密数对,就是A的因子和等于B,B的因子和等于A,且A≠B。如48和75是亲密数对。48的因子和为2+3+4+6......
  • C语言:学号输出
    题目用输出你的学号对应的八位数(每位数大小为55,每个数之间距离三个空格) 例如  输入12345678 输出: 代码#include<stdio.h>intmain(){charinp......
  • C语言:一元二次方程求解
    题目已知一元二次方程......
  • C语言:时间计算
    题目给出当前时间(XX时XX分XX秒),计算经过n秒后的时间,输出格式(XX时XX分XX秒,注意0的补位),超过24时则显示第二天的时间。 例如:  输入:09时11分22秒125秒  输出:09时13......
  • 计算机等级考试二级C语言程序设计专项训练题——程序设计题(四)
    31、请编写函数voidfun(charxx[]),函数的功能是:将字符串数组xx中下标为奇数的字符按其ASCII值从大到小的顺序进行排序。例如:源字符串为:abcdefgh,则处理后字符串为:ahcfedgb......