华为机试-大数相减
发布时间:2020-12-14 02:37:56 所属栏目:大数据 来源:网络整理
导读:/*输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。 备注:1、两个整数都是正整数,被减数大于减数 示例: 输入:1000000000000001 1 输出:100000000000000*/#include stdio.h #include string.h #define N 100void char
/* 输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。 备注:1、两个整数都是正整数,被减数大于减数 示例: 输入:1000000000000001 1 输出:100000000000000 */ #include <stdio.h> #include <string.h> #define N 100 void chartoint(int in[],char ch[],int n) { int i; for(i=0;i<n;i++) { in[i]=ch[i]-'0'; } } int main() { char a[N],b[N]; int temp[N]; char sub[N]; int ina[N]={0},inb[N]={0}; int lena,lenb; int i,flag,len_sub; gets(a);gets(b); lena=strlen(a); lenb=strlen(b); chartoint(ina,a,lena); chartoint(inb,b,lenb); len_sub=lena-lenb; for(i=0;i<lenb;i++) { temp[i]=inb[i]; } for(i=0;i<lenb;i++) { inb[i+len_sub]=temp[i]; } for(i=0;i<len_sub;i++) { inb[i] = 0; } for(i=0;i<lena;i++) { flag = (ina[lena-1-i]-inb[lena-1-i])<0?1:0; sub[i]=ina[lena-1-i]+flag*10-inb[lena-1-i]+'0'; if(i==lena-1) break; else ina[lena-2-i]-=flag; } for(i=lena-1;i>=0;i--) printf("%c",sub[i]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |