fishyou 发表于 2020-11-3 19:57:46

关于scanf格式问题

本帖最后由 fishyou 于 2020-11-3 20:15 编辑

#include <stdio.h>
#include <math.h>

main()
{
   double a,b,c,s,area;
        scanf("%lf,%lf,%lf",&a,&b,&c);    //这个地方scanf("%lf,%lf,%lf",&a,&b,&c);和scanf("%lf %lf%lf",&a,&b,&c);有什么区别

       printf("a=%f\n",a);
       printf("b=%f\n",b);
       printf("c=%f\n",c);
       s=1.0/2*(a+b+c);
       printf("s=%f\n",s);
       area=sqrt(s*(s-a)*(s-b)*(s-c));
       printf("%f\n",area);
       
}

程序是给出三角形的边长,求出面积。
问题如上:使用scanf接收数据时,格式字符串里用空格可以正常输出,而用,分格就出错?

昨非 发表于 2020-11-3 20:03:05

区别在于你输入的时候各个变量之间是以,隔开还是以空格隔开

昨非 发表于 2020-11-3 20:04:00

scanf("%lf,%lf,%lf",&a,&b,&c); //这个就需要三个变量都以,隔开
和scanf("%lf %lf%lf",&a,&b,&c); //这个需要三个之间以空格隔开

fishyou 发表于 2020-11-3 20:10:18

输入时,我有对应的格式来输入,比scanf("%lf,%lf,%lf",&a,&b,&c);我输入3,4,5;
scanf("%lf %lf%lf",&a,&b,&c);输入的是3 4 5
都有严格按照对应的格式输入。但结果就是不一样。采用,作为分格的这种,变量b,c的值接收到不到,4和的值

昨非 发表于 2020-11-3 20:11:26

fishyou 发表于 2020-11-3 20:10
输入时,我有对应的格式来输入,比scanf("%lf,%lf,%lf",&a,&b,&c);我输入3,4,5;
scanf("%lf %lf%lf",&a, ...

把你输入的最后那个分号去掉

fishyou 发表于 2020-11-3 20:13:06

C:\Users\ZZC\Desktop\1.jpg

昨非 发表于 2020-11-3 20:13:17

本帖最后由 昨非 于 2020-11-3 20:14 编辑

fishyou 发表于 2020-11-3 20:10
输入时,我有对应的格式来输入,比scanf("%lf,%lf,%lf",&a,&b,&c);我输入3,4,5;
scanf("%lf %lf%lf",&a, ...

3,4,5
a=3.000000
b=4.000000
c=5.000000
s=6.000000
6.000000

3 4 5
a=3.000000
b=4.000000
c=5.000000
s=6.000000
6.000000

两种情况的结果一样的

fishyou 发表于 2020-11-3 20:14:44

昨非 发表于 2020-11-3 20:13
两种情况的结果一样的

难道是软件的问题?

昨非 发表于 2020-11-3 20:15:03

fishyou 发表于 2020-11-3 20:14
难道是软件的问题?

你多输入了一个分号吧

昨非 发表于 2020-11-3 20:15:36

fishyou 发表于 2020-11-3 20:14
难道是软件的问题?

过着看看你的逗号是中文还是英文

fishyou 发表于 2020-11-3 20:17:10

昨非 发表于 2020-11-3 20:15
过着看看你的逗号是中文还是英文

还真是这个原因,晕
页: [1]
查看完整版本: 关于scanf格式问题