Ln_E 发表于 2017-12-30 13:50:46

关于C红宝书140页第五题 Sn = a +aa + aaa +.....a^n 题

首先预祝大家2018变得更加优秀{:5_97:}
然后就是我写的程序了,是有错的,运行结果为0.
看了好久....
求大神解释{:5_100:}
题目:

# include <stdio.h>
int n, i;
double a, sum, m;


int init()
{
        i = 1;
        m = 0;
        sum = 0;
        return 0;
}
int Sn()
{
        while(i <= n)
        {
        m = m + a;
        sum = sum + a;
        a = a * 10;
        ++i;

        }
        return 0;
}
int main(int Sn, int init)
{
        printf("请用户输入n:");
        scanf("%d", &n);
        printf("请用户输入a:");
        scanf("%lf", &a);
        printf("%lf", sum);
        return 0;
}

BngThea 发表于 2017-12-30 13:59:52

main函数的形参列表不能随意更改
没必要定义这么多函数,你都放到main函数中,计算用一个函数就行了
函数定义完了要调用

Ln_E 发表于 2017-12-30 14:34:27

BngThea 发表于 2017-12-30 13:59
main函数的形参列表不能随意更改
没必要定义这么多函数,你都放到main函数中,计算用一个函数就行了
函数 ...

。。好,我先去改一下。

Ln_E 发表于 2017-12-30 14:56:01

下面是更改后的程序,但结果总是为0。。{:5_99:}


# include <stdio.h>
int Sn(int i, int n, float m, float a, float sum)
{
                while(i <= n)
        {
                m = m + a;
                sum = sum + m;
                a = a * 10;
                ++i;
        }
                return (sum);
}

int main()
{
        int Sn(int i, int n, float m, float a, float sum);
        int n, i = 1;
        float a, sum = 0, m = 0;
        printf("请用户输入a,n: ");
        scanf("%f, %d", &a, &n);

        printf("%f\n", sum);
        return 0;
}

BngThea 发表于 2017-12-30 17:50:19

Ln_E 发表于 2017-12-30 14:56
下面是更改后的程序,但结果总是为0。。

主函数中没有调用函数,只是申明

Ln_E 发表于 2017-12-30 19:18:02

BngThea 发表于 2017-12-30 17:50
主函数中没有调用函数,只是申明

# include <stdio.h>
int Sn(int x, int y)
{
        int i = 1;
        float sum = 0, m = 0;
        while(i <= y)
        {
                m = m + x;
                sum = sum + m;
                x = x * 10;
                ++i;
        }
                return (sum);
}

int main()
{
        int Sn(int x, int y);
        int n;
        float a, sk;
        printf("请用户输入a,n: ");
        scanf("%f, %d", &a, &n);
        sk = Sn(a, n);
        printf("%f\n", sk);
        return 0;
}
好吧,经过我一个下午的努力.....{:10_277:}
我发现一个很奇怪的问题,上面的代码在我同学的电脑上运行结果是正确的。
换到我的电脑结果却错误的。。。。
所以,麻烦大佬先看一下我的程序是否正确。。。{:10_245:}
然后:为什么同一串代码在不同的电脑运行结果却不同。。。(同一软件,同一系统win10)

BngThea 发表于 2017-12-30 21:21:00

Ln_E 发表于 2017-12-30 19:18
好吧,经过我一个下午的努力.....
我发现一个很奇怪的问题,上面的代码在我同学的电脑上运 ...

逻辑没有问题

估计导致出错的地方在scanf,引号里面不要用逗号,改为空格或者什么都不用

Ln_E 发表于 2017-12-31 12:12:15

卧槽。。。可以了,谢谢大神指点
页: [1]
查看完整版本: 关于C红宝书140页第五题 Sn = a +aa + aaa +.....a^n 题