zeroto-alittel 发表于 2023-11-23 13:29:36

C语言

编写求两个双精度数之和的函数:(为什么我的输出结果始终有错误,检查程序没问题啊?)
#include <stdio.h>
int main(void)
{
double add(double a,double b);//对add函数做声明
double sum,x,y;
printf("please enter x and y:");
scanf("lf%,lf%",&x,&y);
sum=add(x,y);       
printf("sum=lf%\n",sum);
return 0;
}
double add(double a,double b)
{
double s;
s=a+b;
return s;
}

输入:5.3,6.3
结果:sum=lf

FishC_GPT 发表于 2023-11-23 13:29:58

你在代码中有一个小错误,导致输出结果出错。问题出在你输入浮点数时的格式控制符上。你应该使用"%lf"来读取双精度数,而不是"lf%"。所以你需要将scanf和printf语句中的格式控制符修改为正确的形式。

此外,你在主函数中对add函数进行了声明,但没有提供函数的具体实现,这可能会导致链接错误。为了解决这个问题,你可以将add函数的定义放在main函数之前,或者在main函数中直接实现add函数。

下面是修改后的代码:

#include <stdio.h>

double add(double a, double b); // 对add函数做声明

int main(void) {
    double x, y;
    printf("please enter x and y: ");
    scanf("%lf,%lf", &x, &y);
    double sum = add(x, y);
    printf("sum = %lf\n", sum);
    return 0;
}

double add(double a, double b) {
    double s = a + b;
    return s;
}

希望这次能够输出正确的结果!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

zeroto-alittel 发表于 2023-11-23 13:37:54

FishC_GPT 发表于 2023-11-23 13:29
你在代码中有一个小错误,导致输出结果出错。问题出在你输入浮点数时的格式控制符上。你应该使用"%lf"来读 ...

嗯嗯,谢谢,课时我改过来了格式控制符后,输出还是乱码啊?请问这是为什么啊?
#include <stdio.h>
int main(void)
{
double add(double a,double b);//对add函数做声明
double sum,x,y;
printf("please enter x and y:");
scanf("%lf,%lf",&x,&y);
sum=add(x,y);       
printf("sum=%lf\n",sum);
return 0;
}
double add(double a,double b)
{
double s;
s=a+b;
return s;
}

FishC_GPT 发表于 2023-11-23 13:38:13

zeroto-alittel 发表于 2023-11-23 13:37
嗯嗯,谢谢,课时我改过来了格式控制符后,输出还是乱 ...

你的代码中输出结果乱码的问题可能是由于printf函数中的格式控制符不正确导致的。在你的代码中,你使用了"%lf"作为printf函数中的格式控制符来输出双精度数。然而,在C语言中,printf函数用于输出双精度数时应该使用"%f"或"%.2f"这样的格式控制符。所以,你需要将printf语句中的格式控制符修改为"%f",以正确输出结果。下面是修改后的代码:#include int main(void){    double add(double a,double b);    //对add函数做声明    double sum, x, y;    printf("please enter x and y: ");    scanf("%lf,%lf", &x, &y);    sum = add(x, y);    printf("sum = %f\n", sum);    return 0;}double add(double a,double b){    double s;    s = a + b;    return s;}希望这次能够输出正确的结果!如果还有其他问题,请告诉我。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

zeroto-alittel 发表于 2023-11-23 13:42:52

FishC_GPT 发表于 2023-11-23 13:38
你的代码中输出结果乱码的问题可能是由于printf函数中的格式控制符不正确导致的。在你的代码中,你使用了 ...

输出结果还是乱码啊?

FishC_GPT 发表于 2023-11-23 13:43:14

zeroto-alittel 发表于 2023-11-23 13:42
输出结果还是乱码啊?

如果你的输出结果仍然是乱码,可能是由于你的IDE或终端的编码格式不正确。请尝试以下方法解决这个问题:

1. 确保你的IDE或终端的默认编码格式与你的代码文件的编码格式一致。常见的编码格式包括UTF-8、GBK等。可以在IDE或终端的设置中查看和修改编码格式。

2. 如果你使用的是Windows系统,你可以尝试在printf语句之前添加一个setlocale函数来设置本地化信息,以支持正确的字符编码。例如,可以在main函数的开头添加以下代码:

   #include <locale.h>
   int main(void) {
       setlocale(LC_ALL, ""); // 设置本地化信息
       // ...
   }

3. 如果你仍然无法解决问题,可以尝试更换其他的IDE或终端来运行你的代码,看是否能够正确输出结果。

请尝试以上方法,并告诉我是否解决了问题。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

isdkz 发表于 2023-11-23 13:55:53

你把分号的位置放错了,分号应该放在前面:

#include <stdio.h>
int main(void)
{
double add(double a,double b);//对add函数做声明
double sum,x,y;
printf("please enter x and y:");
scanf("%lf,%lf",&x,&y);
sum=add(x,y);
printf("sum=%lf\n",sum);
return 0;
}
double add(double a,double b)
{
double s;
s=a+b;
return s;
}
页: [1]
查看完整版本: C语言