独一无② 发表于 2015-10-24 14:47:03

C语言:计算t=1+1/2+1/3+...+1/n

本帖最后由 独一无② 于 2015-10-24 14:59 编辑

                                                                                                    C语言
题目描述:计算t=1+1/2+1/3+...+1/n
输入:整型变量n
输出:t(保留六位小数)
样例输入

10

样例输出

2.928968

我的代码:


# include <stdio.h>
main ()
{
        int a,n;
        float b,c;
        scanf("%d",&n);
        for(a=1;a<=n;a++)
        {
                b=1.0/a;
                c+=b;
               
        }
        printf("%.6f\n",c);
       
}

软件:C-free
系统判定,答案错误(系统里有多组数据)。我不知道哪里错了,求帮助 。

hiwch 发表于 2015-10-24 14:47:04

#include<stdio.h>
void main()
{
                float i, n, sum = 0, temp;
                printf("please input n:\n");
                scanf("%f", &n);
                for (i = 1; i < (n + 1); i++)
                {
                        temp = 1 / i;
                        sum += temp;
                }
                printf("%.6f\n", sum);
      
}
把a赋值成浮点就可以了

独一无② 发表于 2015-10-24 17:51:15

可能是 系统问题,真是醉了

y290176346 发表于 2015-10-24 18:16:19

请问c的初始是多少,你调试下看看 c的初始值可能不是0

淡蓝色的花 发表于 2015-10-24 19:24:17

楼主你的c要赋值0啊,其他没错,我试过了

独一无② 发表于 2015-10-24 19:58:50

淡蓝色的花 发表于 2015-10-24 19:24
楼主你的c要赋值0啊,其他没错,我试过了

哦哦,的确没有赋值,不过 编译竟然没有报错,我在试试

独一无② 发表于 2015-10-24 20:04:28

y290176346 发表于 2015-10-24 18:16
请问c的初始是多少,你调试下看看 c的初始值可能不是0

赋值 C 等于0和没有赋值有什么区别呢,我发现调试都没有出错,并且 答案一样,真是醉了

文子丨 发表于 2015-10-24 20:56:53

独一无② 发表于 2015-10-24 20:04
赋值 C 等于0和没有赋值有什么区别呢,我发现调试都没有出错,并且 答案一样,真是醉了

C若不初始化,则C就有一个垃圾值,所以最后结果当然不一样了。

独一无② 发表于 2015-10-24 21:06:31

文子丨 发表于 2015-10-24 20:56
C若不初始化,则C就有一个垃圾值,所以最后结果当然不一样了。

可是 为什么我调试 结果 答案正确。

y290176346 发表于 2015-10-24 22:11:20

独一无② 发表于 2015-10-24 21:06
可是 为什么我调试 结果 答案正确。

没用过你的编译器,vs 你的c没有初始值的 是编译不通过的,有的编译器默认初始化变量会为0

youliyuan2005 发表于 2015-10-25 07:48:08

#include <stdio.h>

int main()
{
    int a,n;
    float b,c;
    scanf("%d",&n);
    for(a=1;a<=n;a++)
    {
      b=1.0/a;
      c+=b;
      
    }
    printf("%.6f\n",c);
   
}

youliyuan2005 发表于 2015-10-25 07:49:47

main()前少了个int ,#include<stdio.h>后要加回车

独一无② 发表于 2015-10-25 11:12:43

youliyuan2005 发表于 2015-10-25 07:49
main()前少了个int ,#include后要加回车

回不回车 问题不大,main前面 加int 是表示返回类型为 整型吗?那不是应该加 return 吗?

y290176346 发表于 2015-10-25 12:04:25

独一无② 发表于 2015-10-25 11:12
回不回车 问题不大,main前面 加int 是表示返回类型为 整型吗?那不是应该加 return 吗?

加 int 是表示返回类型, 函数前面是必须有返回类型的,如果你没加也能通过,这个是编译器给你加了一个默认的,在vs 里没有返回类型是编译不同 过的,函数最好都有一个return , 不加在控制台里好像也没什么关系。在以后的正式编程中应该都需要这个return

小鲨鱼123123 发表于 2015-10-25 16:14:08

c变量没有初始化,注意输出格式

zerone. 发表于 2015-10-28 21:34:49

int c 没有初始赋值

hiwch 发表于 2015-10-28 23:05:23

本帖最后由 hiwch 于 2015-10-29 19:32 编辑

这是我的代码亲测了可以的
#include<stdio.h>
void main()
{
                float i, n, sum = 0, temp;
                printf("please input n:\n");
                scanf("%f", &n);
                for (i = 1; i < (n + 1); i++)
                {
                        temp = 1 / i;
                        sum += temp;
                }
                printf("%.6f\n", sum);
       
}

本帖最后由 hiwch 于 2015-10-28 23:13 编辑


我一个开始也是把n和i设置成整形,但是整形就是不行,只有把他们的类型定义成浮点型才可以。估计是因为整形的限制太大了在运算中不注意就会导致数据和我们想的不一样吧,谁让整形占用的空间小呢,有得必有失吧。对了我用的是vs2015,你也试着把你的变量都声明为实型试试看吧。

hiwch 发表于 2015-10-28 23:08:14

本帖最后由 hiwch 于 2015-10-29 19:32 编辑

来拿鱼币的呵呵:smile

yuyaya1130 发表于 2015-11-7 21:07:14

可能是 系统问题,真是醉了
页: [1]
查看完整版本: C语言:计算t=1+1/2+1/3+...+1/n