标题:键盘输入传给数组,但好像没有存储成功的问题
只看楼主
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
结帖率:72.22%
已结贴  问题点数:20 回复次数:10 
键盘输入传给数组,但好像没有存储成功的问题
这是一个书上练习的答案,来自网友。

习题5.1 编写一个程序,从键盘上读入5个double类型的值,将它们存储到一个数组中。计算每个值的倒数(值x的倒数是 1.0/x),将结果存储到另一个数组中。输出这些倒数,并计算和输出倒数的总和。

#include <stdio.h>

int main()
{
    double original[5] = { 0.0 };
    double result[5] = { 0.0 };
    double sum = 0.0;

    for (int i = 0; i < 5; i++)
    {
        printf("%d -> ", i + 1);
        scanf("%lf", &original[i]);
    }

    for (int i = 0; i < 5; i++)
    {
        result[i] = 1.0 / original[i];
    }

    for (int i = 0; i < 5; i++)
    {
        printf("result[%d] = %lf\n", i, result[i]);
        sum += result[i];
    }

    printf("sum = %lf\n", sum);

    return 0;
}



作者:小狮子365
链接:https://www.
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

问题:输入5个数字后,结果不正确,请问是怎么回事?

预谢!



搜索更多相关主题的帖子: 存储 double int result sum 
2019-04-02 11:51
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:10 
哪里不正确了?
1 -> 1
2 -> 2
3 -> 3
4 -> 4
5 -> 5
result[0] = 1.000000
result[1] = 0.500000
result[2] = 0.333333
result[3] = 0.250000
result[4] = 0.200000
sum = 2.283333

--------------------------------
Process exited after 6.221 seconds with return value 0
请按任意键继续. . .

saber,别哭.
2019-04-02 13:13
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
得分:0 
回复 2楼 幻紫灵心

1 -> 1.1
2 -> 1.2
3 -> 1.3
4 -> 1.4
5 -> 1.5
result[0] = 0.000000
result[1] = 0.000000
result[2] = 0.000000
result[3] = 0.000000
result[4] = 0.000000
sum = 0.000000

Process returned 0 (0x0)   execution time : 6.960 s
Press any key to continue.

使用的ide是 code blocks 17.2  创建的是 控制台应用程序。

2019-04-02 13:24
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:0 
我dev-c++运行没毛病...
你把int i ;声明放到前面试试,不要放for循环里面。
1 -> 1.1
2 -> 1.2
3 -> 1.3
4 -> 1.4
5 -> 1.5
result[0] = 0.909091
result[1] = 0.833333
result[2] = 0.769231
result[3] = 0.714286
result[4] = 0.666667
sum = 3.892607

--------------------------------
Process exited after 14.69 seconds with return value 0
请按任意键继续. . .

saber,别哭.
2019-04-02 13:29
a451410
Rank: 2
等 级:论坛游民
帖 子:34
专家分:48
注 册:2018-3-4
得分:10 
这个问题有以下几点:
1,我不知道你的变量i三次在for循环里定义是怎么编译过去的。
2,程序的逻辑上没有什么错误。
3,代码在我的编译器上并没有什么问题,你之所以出现错误大部分原因是因为你的编译器的原因,
很多老式的编辑器会出现一些问题。我之前碰到过许多莫名其妙的问题,后来我换了个编辑器就好了。

问题不在代码,在于你的编辑器。建议使用 code:block  或vs
2019-04-02 13:29
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
得分:0 
回复 5楼 a451410
首先我是新手,说错了请不要介意
这个i定义,我在网上查,c99标准,可以再for里定义
ide是 code blocks
2019-04-02 13:37
a451410
Rank: 2
等 级:论坛游民
帖 子:34
专家分:48
注 册:2018-3-4
得分:0 
回复 6楼 bxe
当然可以在for里定义,我是说你把后面语句里对变量i的int说明符去了试
2019-04-02 14:22
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
得分:0 
回复 4楼 幻紫灵心
换了vs2017 输出正确了
2019-04-02 14:42
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
得分:0 
回复 7楼 a451410
换了vs2017 输出正确了
2019-04-02 14:44
a451410
Rank: 2
等 级:论坛游民
帖 子:34
专家分:48
注 册:2018-3-4
得分:0 
回复 9楼 bxe
但这并不代表着是code blocks 的问题,你下载的codeblocks可能是别人添加好编译器的,下载下来就能用的那种,所以很可能是别人添加的编译器版本过早或者不完整,所以会出现各种各样的错误,你可以自己下载个编译器,建议使用MinGW,你可以到官网去下载,然后自己配置一下,配置方法网上很多。 codeblocks是一个很好用的开源的编辑平台,还是值得一用的,你用vs的话,如果使用盗版还是会出现一些奇怪的问题的,或者试用版是不能生成外部应用的。  注学习顺利,不懂多问。
2019-04-02 19:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493922-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.272390 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved