这个C语言程序有几处错误:
1. 在使用scanf函数读取输入时,需要使用"%s"格式控制符,并且传入的参数应该是一个字符数组的地址,而不是一个字符变量的地址。因此,应该将dig1和dig2声明为字符数组。
2. 在使用strchr函数查找小数点位置之前,应该先将dig1和dig2初始化为合适的值,即给字符数组分配足够的内存空间,并使用strcpy函数将输入的字符串复制到字符数组中。
3. 在for循环中,应该使用比较运算符"!="来比较dig1和'\0',而不是"=="。同时,在计算每个位置上的数位时,应该使用dig1[i]和dig2[i]来获取对应位置上的字符。
4. 在计算两个数相加的过程中,应该将字符转换为数字,然后进行相加。可以使用atoi函数将字符转换为整数。
5. 在printf函数中,应该使用"%c"格式控制符来输出字符,而不是"%s"。
下面是修改后的代码:#include <stdio.h>#include <string.h>#pragma warning(disable:4996)int main(void){ char dig1[101], dig2[101]; scanf("%s%s", dig1, dig2); char* p1 = strchr(dig1, '.'); char* p2 = strchr(dig2, '.'); int loc1 = p1 - dig1 + 1; int loc2 = p2 - dig2 + 1; int diff = (loc1 >= loc2) ? loc1 : loc2; char dig[101]; for (int i = -1; dig1[i+1] != '\0' || dig2[i+1] != '\0'; i++) { if (loc1 >= loc2) { if (i < diff) { dig[i+1] = dig1[i+1]; } else if (i == loc1) { dig[i+1] = '.'; } else { dig[i+1] = dig1[i+1] + dig2[i+1] - '0'; } } else { if (i < diff) { dig[i+1] = dig2[i+1]; } else if (i == loc2) { dig[i+1] = '.'; } else { dig[i+1] = dig1[i+1] + dig2[i+1] - '0'; } } } printf("%s\n", dig); return 0;}
希望能帮到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |