你的代码有几个问题导致了结果不正确:
1. `scanf`函数的第二个参数要传入字符串的地址,而你将`dig1`和`dig2`直接传入了。应该改为`scanf("%s %s", &dig1, &dig2)`。
2. 字符指针变量`p1`和`p2`应该初始化为`NULL`,不然会导致`strchr`函数无法正常工作。应该改为`char* p1 = NULL; char* p2 = NULL;`。
3. 在进行字符相加的时候,你直接将`dig1`和`dig2`相加,并没有将其转换为数字进行相加操作。应该改为`dig = dig1 + dig2 - '0'`。
以下是修改后的代码:#include <stdio.h>#include <string.h>int main(void){ char dig1[101], dig2[101]; int i; scanf("%s%s", dig1, dig2); char* p1 = NULL; char* p2 = NULL; p1 = strchr(dig1, '.'); p2 = strchr(dig2, '.'); int loc1 = p1 - dig1 + 1; int loc2 = p2 - dig2 + 1; int diff = (loc1 >= loc2) ? loc1 : loc2; char dig; for (i = 0; dig1[i] != '\0' && dig2[i] != '\0'; i++) { if (loc1 >= loc2) { if (i < diff) { dig = dig1[i]; } else if (i == loc1 - 1) { dig = '.'; } else { dig = dig1[i] + dig2[i] - '0'; } } else { if (i < diff) { dig = dig2[i]; } else if (i == loc2 - 1) { dig = '.'; } else { dig = dig1[i] + dig2[i] - '0'; } } printf("%c", dig); } return 0;}
希望可以帮到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |