辛苦大老们,这个怎么写,好难

要参加c语言考试想得高分,请帮帮我,用Devc++写来着,辛苦了这个看起来就会很长

img

看一下这个


#include <stdio.h>  
#include <string.h>  
  
char A[50] = "";  
char B[50] = "";  
char C[50] = "";  
  
int main() {  
    printf("Please input number A: ");  
    fgets(A, 50, stdin);  
    A[strcspn(A, "\n")] = '\0'; // remove newline character  
  
    printf("Please input number B: ");  
    fgets(B, 50, stdin);  
    B[strcspn(B, "\n")] = '\0'; // remove newline character  
  
    // Check if input is valid  
    if (strlen(A) > 30 || strlen(B) > 30) {  
        printf("[Error] Numbers invalid.\n");  
        return 1;  
    }  
  
    // Check if input contains non-digit characters  
    for (int i = 0; i < strlen(A); i++) {  
        if (A[i] < '0' || A[i] > '9') {  
            printf("[Error] Numbers invalid.\n");  
            return 1;  
        }  
    }  
    for (int i = 0; i < strlen(B); i++) {  
        if (B[i] < '0' || B[i] > '9') {  
            printf("[Error] Numbers invalid.\n");  
            return 1;  
        }  
    }  
  
    // Calculate the sum and store in C  
    int carry = 0;  
    int i = strlen(A) - 1, j = strlen(B) - 1, k = 0;  
    while (i >= 0 || j >= 0 || carry > 0) {  
        int sum = carry;  
        if (i >= 0) {  
            sum += A[i] - '0';  
            i--;  
        }  
        if (j >= 0) {  
            sum += B[j] - '0';  
            j--;  
        }  
        C[k++] = sum % 10 + '0'; // store the digit in C  
        carry = sum / 10; // carry for the next digit  
    }  
    C[k] = '\0'; // null-terminate the string  
  
    // Remove leading zeros from the result  
    int leading_zeros = 0;  
    while (leading_zeros < k && C[leading_zeros] == '0') {  
        leading_zeros++;  
    }  
    if (leading_zeros > 0) {  
        memmove(C, C + leading_zeros, k - leading_zeros + 1); // remove leading zeros  
        k -= leading_zeros;  
        C[k] = '\0'; // null-terminate the string again  
    }  
  
    // Display the result  
    printf("%s\n", C);  
    return 0;  
}

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

去看看我的动态吧,里面讲过一个大数相加

img

img

img


#include <stdio.h>
#include <string.h>

char A[50], B[50], C[50];

int main(void)
{
    scanf("%30[0123456789]", A);
    fflush(stdin);
    scanf("%30[0123456789]", B);

    int lenA = strlen(A), lenB = strlen(B);

    char *pa = A + lenA - 1, *pb = B + lenB - 1, *pc = &C[48], *pc1 = C;

    int i = 0, z, n, m, f = 0;
    m = lenA > lenB ? f = 1, lenA : lenB;
    n = lenA > lenB ? lenB : lenA;

    z = m - n;

    while (m)
    {
        if (m > z)
            *pc += *pa-- + *pb-- - '0';
        else
            *pc += (f == 1) ? *pa-- : *pb--;
        if (*pc > '9')
        {
            *pc -= 10;
            *(pc - 1) += 1;
        }
        pc--;
        m--;
    }

    while (*pc1++ == 0)
        i++;
    puts(C + i);

    return 0;
}