发新帖我要提问
12
返回列表
打印

这段代码错在哪里?为什么输出全是0?

[复制链接]
楼主: 人生长苦
手机看帖
扫描二维码
随时随地手机跟帖
21
本帖最后由 vavcm 于 2014-3-19 16:39 编辑
人生长苦 发表于 2014-3-19 16:33
VS2010 感觉比VC6好用多了,从不会死机退出,超可靠的,不过建立的文件只有CPP
但是以前一直照C写没问题 ...

输出语句
printf("%f",ar);有问题啊。
改成printf("%f",ar(i));
括号改成中括号
好像是论坛显示的问题

使用特权

评论回复
22
kumuhuakai| | 2014-3-19 16:47 | 只看该作者
人生长苦 发表于 2014-3-19 15:40
运行到这里不动了,没进行任何输出

发现这个代码够马虎的,print("%f",ar[1])。a被写成a[1]了...

使用特权

评论回复
23
人生长苦|  楼主 | 2014-3-19 18:29 | 只看该作者
kumuhuakai 发表于 2014-3-19 16:31
这个程序明显不对,你第二个for语句i没有清零。然后双精度输出格式是lf,改一下应该可以了 ...

使用特权

评论回复
24
人生长苦|  楼主 | 2014-3-19 18:33 | 只看该作者

使用特权

评论回复
25
人生长苦|  楼主 | 2014-3-19 18:44 | 只看该作者

输完每个数再按回车就能实现,按空格只能输入第一个数
原因不知道

使用特权

评论回复
26
cool_coder| | 2014-3-19 20:16 | 只看该作者
人生长苦 发表于 2014-3-19 18:44
输完每个数再按回车就能实现,按空格只能输入第一个数
原因不知道 ...

那是因为你循环调用了四次 scanf() 函数,每次需要一个回车。

使用特权

评论回复
27
LittleSnowBall| | 2014-3-19 20:38 | 只看该作者
因为空格,输出的都是空格,'\0’,冒失这样,自己电脑上么软件

使用特权

评论回复
28
lyf08| | 2014-3-19 22:36 | 只看该作者
https://bbs.21ic.com/forum.php?mod=attachment&aid=MjYxMzIyfDYzNjYwNDIxYThmM2ZlNDlhNTdiZDZlMGI4MzcxMTM4fDE3MTY5Mzg0MTM%3D&request=yes&_f=.jpg

QQ图片.jpg (39.94 KB )

QQ图片.jpg

使用特权

评论回复
29
ticomi| | 2014-3-20 09:59 | 只看该作者
%f%f%f%f改为%f %f %f %f

使用特权

评论回复
30
O狂且O| | 2014-3-20 10:08 | 只看该作者
本帖最后由 O狂且O 于 2014-3-20 10:14 编辑

printf 输出浮点类型 float 时会自动将其 "类型提升" 到 double, 所以使用 %f 就可以输出 float 和 double 两种类型.  
而 %lf 就比较麻烦了, 在 MSVC 下有时候不能用. 而在 Linux 下 GCC 编译, printf("%f 和 %lf 一样");
scanf 就完全不同了,它接受的是指针,所以没有类似的类型提升。用指针向 float 存储和向 double 存储大不一样(4 和 8 字节),因此,scanf 区别 %f 和 %lf.
建议使用浮点数的时候能使用双精度不使用单精度. 所以..........你懂的.
下面这段程序, 在 VS2010 和 Linux GCC 下都可以正常输出. 但是在 windows 下的 MinGW 下却只能用 %f, %lf 输出 -0.000000.
所以还是老老实实的用 %f 吧.
#include <stdio.h>

double ar[4];

int main(int argc, char *argv[])
{
        int i = 0;

        printf("Please input 4 numbers:\n");

        scanf("%lf %lf %lf %lf", &ar[0], &ar[1], &ar[2], &ar[3]);
        for(i = 0; i < 4; i++) {
                printf("%f\n", ar[i]);
                printf("%lf\n", ar[i]);
        }
        return 0;
}


使用特权

评论回复
31
SLEET1986| | 2014-3-20 10:08 | 只看该作者
人生长苦 发表于 2014-3-19 18:44
输完每个数再按回车就能实现,按空格只能输入第一个数
原因不知道 ...

你操作问题

使用特权

评论回复
32
chongxinc| | 2014-3-20 13:19 | 只看该作者
lanmp 发表于 2014-3-19 14:50
不是lf?

确实是lf

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则