C语言的这个代码,输入1001\n9099,输出只有100,怎么回事?#include <stdio.h> #include <string.h> int a[100001], b[100001], c[100001]; char s1[100001], s2[100001]; bool x = false; int main() { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(a)); memset(c, 0, sizeof(a)); scanf("%s\n%s",s1,s2); int i, j; a[0] = strlen(s1); b[0] = strlen(s2); for (i = 1;i<=a[0]; i++) a[i] = s1[a[0] - i] - '0'; for (i = 1;i<=b[0]; i++) b[i] = s2[b[0] - i] - '0'; for (j = 1; j <= (a[0] > b[0] ? a[0] : b[0]); j++) { c[j] = a[j] + b[j]; if (c[j] >= 10) { c[j]%=10; a[j + 1]++; } } c[0] = j; if (c[j + 1] > 0) c[0]++; for (i = c[0]; i >= 1; i--) { if (x == false && c[i] == 0) continue; x = true; printf("%d", c[i]); } if (x == false) printf("0"); printf("\n"); return 0; }
时间: 2024-03-31 13:38:35 浏览: 44
c语言水仙花练习#include<stdio.h>
5星 · 资源好评率100%
这段代码实现了两个字符串代表的数字的加法,但是输出只有100,原因是在输入时使用了换行符(\n)作为分隔符,导致第二个字符串 s2 包含了换行符。在字符串转换为数字时,换行符被转换为了 0,因此实际上只进行了 1001 和 909 这两个数字的加法,得到的结果是 100。解决办法是去掉 scanf 函数中的换行符,即将 "%s\n%s" 改为 "%s%s"。
阅读全文