大数减法
发布时间:2020-12-14 01:52:40 所属栏目:大数据 来源:网络整理
导读:这个程序比较多,但是思路很简单,只要求取大数减小数,如果是小数减大数,转换成大数减小数,输出负号 void sub(char a[],char b[]){int alen = strlen(a);int blen = strlen(b);int num1[LEN];int num2[LEN];for (int i = 0; i LEN; i++){num1[i] = 0;num2
这个程序比较多,但是思路很简单,只要求取大数减小数,如果是小数减大数,转换成大数减小数,输出负号 void sub(char a[],char b[]){ int alen = strlen(a); int blen = strlen(b); int num1[LEN]; int num2[LEN]; for (int i = 0; i < LEN; i++){ num1[i] = 0; num2[i] = 0; } for (int i = alen - 1,j = 0; i >= 0; i--){ num1[j++] = a[i] - '0'; } for (int i = blen - 1,j = 0; i >= 0; i--){ num2[j++] = b[i] - '0'; } int flag = 0; if (alen > blen){ for (int i = 0; i < LEN; i++){ num1[i] -= num2[i]; } for (int i = 0; i < LEN; i++){ if (num1[i] < 0){ num1[i+1] -= 1; num1[i] += 10; } }; } if (alen < blen){ for (int i = 0; i < LEN; i++){ num2[i] -= num1[i]; } for (int i = 0; i < LEN; i++){ if (num2[i] < 0){ num2[i+1] -= 1; num2[i] += 10; } } flag = 1; } int ti; if (alen == blen){ for (int i = 0; i < LEN; i++){ if (a[i] != b[i]){ ti = i; break; } if (i == LEN - 1) cout << 0 << endl; } if (a[ti] > b[ti]){ for (int i = 0; i < LEN; i++){ num1[i] -= num2[i]; } for (int i = 0; i < LEN; i++){ if (num1[i] < 0){ num1[i + 1] -= 1; num1[i] += 10; } } } else{ for (int i = 0; i < LEN; i++){ num2[i] -= num1[i]; } for (int i = 0; i < LEN; i++){ if (num2[i] < 0){ num2[i + 1] -= 1; num2[i] += 10; } } flag = 1; } } int i; if (flag == 0){ for (i = LEN - 1; i > 0; i--){ if (num1[i] != 0) break; } for (; i >= 0; i--){ cout << num1[i]; } cout << endl; } if (flag == 1){ cout << "-"; for (i = LEN - 1; i > 0; i--){ if (num2[i] != 0) break; } for (; i >= 0; i--){ cout << num2[i]; } cout << endl; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |