呕心沥血一个字一个字敲得代码,不该点个赞吗?🤪
#include<bits/stdc++.h>
using namespace std;
string s1, s2;
char s;
int l,l1,l2,ans[1001];
int a[1001], b[1001], c[1001];
bool judge(int * a, int * b, int l) {
if (a[l] > 0) return true;
for (int i = l - 1; i >= 0; i--) {
if (a[i] > b[i]) {
return true;
} else if (a[i] < b[i]) {
return false;
}
}
return true;
}
void jia(){
for (int i = 0; i < l; i++) {
c[i] += a[i] + b[i];
if (c[i] >= 10) {
c[i + 1] = 1;
c[i] %= 10;
}
}
if (c[l] == 1){
l++;
}
int k = l--;
while (c[k] == 0 && k > 0){
k--;
}
for (int i = k; i >= 0; i--){
cout << c[i];
}
}
void jian(){
for (int i = 0; i < l1; i++) {
if (a[i] < b[i]) {
a[i + 1]--;
c[i] = a[i] + 10 - b[i];
} else {
c[i] = a[i] - b[i];
}
}
int k = l1--;
while (c[k] == 0 && k > 0) {
k--;
}
for (int i = k; i >= 0; i--) {
cout << c[i];
}
}
void cheng(){
for(int i = 0; i < l1; i++){
for(int j = 0; j < l2; j++){
c[i + j] += a[i] * b[j];
c[i + j + 1] += c[i + j] / 10;
c[i + j] %= 10;
}
}
int k = l1 + l2;
while(c[k] == 0 && k > 0){
k--;
}
for(int i = k; i >= 0; i--){
cout << c[i];
}
}
void chu(){
int i,j;
for (i = l1 - l2; i >= 0; i--) {
while (judge(a + i, b, l2)) {
ans[i]++;
for (j = 0; j <= l2 - 1; j++) {
if (a[i + j] < b[j]) {
a[i + j + 1]--;
a[i + j] += 10;
}
a[i + j] -= b[j];
}
}
}
while (a[l1] == 0 && l1 > 0) {
l1--;
}
while (ans[l] == 0 && l > 0) {
l--;
}
for (i = l; i >= 0; i--) {
cout << ans[i];
}
if (l < 0) cout << "0";
cout<<endl<<"余";
for (i = l1; i >= 0; i--) {
cout << a[i];
}
}
int main() {
cout<<"注意:\n减法不支持负数运算!!\n减法也不支持输出负数!!\n先输入一个要算的数,再换行,再输入符号,再换行,再输入一个要算的数!!!!!\n";
cout<<"\n如:\n";
cout<<"55555\n/\n5\n计算结果为11111\n\n";
cin >> s1 >> s >> s2;
l1 = s1.size();
l2 = s2.size();
l = max(l1,l2);
for (int i = 0; i < l1; i++){
a[i] = s1[s1.size() - 1 - i] - '0';
}
for (int i = 0; i < l2; i++){
b[i] = s2[s2.size() - 1 - i] - '0';
}
cout<<"计算结果为";
if(s=='+'){
jia();
}else if(s=='-'){
jian();
}else if(s=='*'){
cheng();
}else{
chu();
}
return 0;
}