这个写完,就是不知道bug在哪里,看不懂。
这个代码里面get_int和int_filp 2个单独是可以使用的。看不出错误
#include <stdio.h>
#include <stdlib.h>
#define NUM 10
int max(int i, int j);
int min(int i, int j);
char *get_int(void);
char *plus(char *in1, char *in2);
char *int_filp(char *s);
int max(int i, int j){
if(i > j){
return i;
}
return j;
}
int min(int i, int j){
if(i < j){
return i;
}
return j;
}
char *get_int(void){
char ch;
char *pr, *last;
int i = 0;
long int count = 1;
printf("请输入一个整数:");
pr = (char *)realloc(pr, NUM * count * sizeof(char));
last = pr;
while ((ch = getchar()) != '\n'){
last = ch;
if (i >= NUM){
i = 0;
count++;
int gap = last - pr;
pr = (char *)realloc(pr, NUM * count * sizeof(char));
last = pr;
last += gap;
last += NUM;
}
}
last = '\0';
return pr;
}
char *plus(char *in1, char *in2){
char ch;
int k, i, j = 0, n = 0;
int i1, i2, len1, len2;
char *pi;
char *last;
long int count = 1;
pi = (char *)realloc(pi, NUM * count * sizeof(char));
last = pi;
len1 = sizeof(in1);
len2 = sizeof(in2);
for (i = 0; i <= len1 || i <= len2; i++){
if(i < min(len1, len2)){
i1 = in1 + '0';
i2 = in2 + '0';
}
else if(i >= len1 && i < len2){
i1 = 0;
i2 = in2 + '0';
}
else if(i < len1 && i >= len2){
i1 = in1 + '0';
i2 = 0;
}
if(i1 + i2 + j < 10){
k = i1 + i2 + j;
ch = k - '0';
j = 0;
}
else{
k = (i1 + i2 + j) % 10;
ch = k - '0';
j = k / 10;;
}
if(i = max(len1, len2)){
if(j == 0){
break;
}
else{
ch = j - '0';
}
}
if(ch != '\0'){
last = ch;
if (n > NUM){
n = 0;
count++;
int gap = last - pi;
pi = (char *)realloc(pi, NUM * count * sizeof(char));
last = pi;
last += gap;
last += NUM;
}
}
last = '\0';
}
pi = int_filp(pi);
return pi;
}
char *int_filp(char *s){
char ch;
char *p = s;
char *left = s;
if (s != NULL){
while (*s++)
;
s -= 2;
while (left < s){
ch = *left;
*left++ = *s;
*s-- = ch;
}
}
return p;
}
int main(){
char *p1, *p2;
char *num;
p1 = get_int();
p2 = get_int();
num = plus(p1, p2);
free(p1);
free(p2);
printf("计算结果是:%s\n", num);
return 0;
} 明白问题在哪里了,pr没有初始化 额,可以加一些注释吗?程序想实现什么呢? 学习下 学习 观摩{:10_254:} zhangjinxuan 发表于 2022-12-3 12:36
额,可以加一些注释吗?程序想实现什么呢?
无限大的整数相加啊
御坂19090 发表于 2022-12-3 14:58
无限大的整数相加啊
那叫高精度 学习 学习 学习 御坂19090 发表于 2022-12-3 15:12
明白问题在哪里了,pr没有初始化
啊这{:10_282:} 蹭育碧 没看懂 学python的我来凑个热闹吧
页:
[1]