|
发表于 2023-12-10 19:10:21
|
显示全部楼层
你的代码有几个问题导致了结果不正确:
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 小助理,如未能正确解答您的问题,请继续追问。 |
|