鱼C论坛

 找回密码
 立即注册
查看: 835|回复: 6

[已解决]C语言

[复制链接]
发表于 2023-11-23 13:29:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编写求两个双精度数之和的函数:(为什么我的输出结果始终有错误,检查程序没问题啊?)
#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
最佳答案
2023-11-23 13:29:58
你在代码中有一个小错误,导致输出结果出错。问题出在你输入浮点数时的格式控制符上。你应该使用"%lf"来读取双精度数,而不是"lf%"。所以你需要将scanf和printf语句中的格式控制符修改为正确的形式。

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

下面是修改后的代码:
  1. #include <stdio.h>
  2. double add(double a, double b); // 对add函数做声明
  3. int main(void) {
  4.     double x, y;
  5.     printf("please enter x and y: ");
  6.     scanf("%lf,%lf", &x, &y);
  7.     double sum = add(x, y);
  8.     printf("sum = %lf\n", sum);
  9.     return 0;
  10. }
  11. double add(double a, double b) {
  12.     double s = a + b;
  13.     return s;
  14. }
复制代码

希望这次能够输出正确的结果!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-23 13:29:58 | 显示全部楼层    本楼为最佳答案   
你在代码中有一个小错误,导致输出结果出错。问题出在你输入浮点数时的格式控制符上。你应该使用"%lf"来读取双精度数,而不是"lf%"。所以你需要将scanf和printf语句中的格式控制符修改为正确的形式。

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

下面是修改后的代码:
  1. #include <stdio.h>
  2. double add(double a, double b); // 对add函数做声明
  3. int main(void) {
  4.     double x, y;
  5.     printf("please enter x and y: ");
  6.     scanf("%lf,%lf", &x, &y);
  7.     double sum = add(x, y);
  8.     printf("sum = %lf\n", sum);
  9.     return 0;
  10. }
  11. double add(double a, double b) {
  12.     double s = a + b;
  13.     return s;
  14. }
复制代码

希望这次能够输出正确的结果!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

输出结果还是乱码啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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函数的开头添加以下代码:

  
  1. #include <locale.h>
  2.    int main(void) {
  3.        setlocale(LC_ALL, ""); // 设置本地化信息
  4.        // ...
  5.    }
复制代码

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

请尝试以上方法,并告诉我是否解决了问题。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-3 10:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表