|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这个代码里面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[i++] = 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[i] = '\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[i] + '0';
- i2 = in2[i] + '0';
- }
- else if(i >= len1 && i < len2){
- i1 = 0;
- i2 = in2[i] + '0';
- }
- else if(i < len1 && i >= len2){
- i1 = in1[i] + '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[n++] = 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[n] = '\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;
- }
复制代码
|
|