标题:求指教~一个循环的问题~有错误但自己看不出来~
只看楼主
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
结帖率:100%
已结贴  问题点数:20 回复次数:12 
求指教~一个循环的问题~有错误但自己看不出来~
我刚学到循环这一节这个题目要求输入一个数,求前“指定数”项的和
(1.0+1.0/2.0+1.0/3.0+1.0/4.0+...)  
(1.0-1.0/2.0+1.0/3.0-1.0/4.0+...)
也就是这两个,能得到运行界面,但输入一个数字后得不到输出结果,很苦恼~

#include<stdio.h>
int main(void)
{
    int n,i,k;
    double sum1,sum2,x;
    printf("输入你想求得前n项和:\n");
    scanf("%d",&n);
    sum1=0;
    sum2=0;
    k=-1;
    while(scanf("%d",&n)==1)
    {
        for(i=1,x=1.0;i<=n;i++,x++)
        {
            k=(-1)*k;
            sum1+=1.0/x;
            sum2+=(k*1.0)/x;
        }
        printf("(1.0+1.0/2.0+1.0/3.0+1.0/4.0+...)的前%d项和=%lf.\n",n,sum1);
        printf("(1.0-1.0/2.0+1.0/3.0-1.0/4.0+...)的前%d项和=%lf.\n",n,sum2);
        printf("Enter next value:\n");
        scanf("%d",&n);
    }
    printf("Done!\n");
    return 0;
}



搜索更多相关主题的帖子: while double include 
2011-10-09 00:07
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
得分:6 
#include<stdio.h>
int main(void)
{
    int n,i,k;
    double sum1,sum2,x;
    printf("输入你想求得前n项和:\n");
    while(scanf("%d",&n)==1)
    {
        sum1=0;
        sum2=0;
        k=-1;
        for(i=1,x=1.0;i<=n;i++,x++)
        {
            k=(-1)*k;
            sum1+=1.0/x;
            sum2+=(k*1.0)/x;
        }
        printf("(1.0+1.0/2.0+1.0/3.0+1.0/4.0+...)的前%d项和=%lf.\n",n,sum1);
        printf("(1.0-1.0/2.0+1.0/3.0-1.0/4.0+...)的前%d项和=%lf.\n",n,sum2);
        printf("Enter next value:\n");
    }
    printf("Done!\n");
    return 0;
}
2011-10-09 00:22
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
得分:0 
回复 楼主 xlj3105098
错误挺多的,现在很晚,楼主回家睡觉吧,明天在想

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-09 00:27
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
得分:0 
为什么这样子就对了啊~大侠解释下啊~
2011-10-09 00:28
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
得分:0 
回复 3楼 A13433758072
2楼就改了一点点就对了   说明错的不多啊
2011-10-09 00:35
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
得分:0 
回复 5楼 xlj3105098
2楼要睡觉了,而且这些东西你自己应该能想通的,要相信自己哈,我都给出答案了
2011-10-09 00:39
xlj3105098
Rank: 2
等 级:论坛游民
帖 子:20
专家分:28
注 册:2011-10-8
得分:0 
回复 6楼 唯我独魔
好吧~谢谢你了啊~
2011-10-09 12:37
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
得分:0 
路过

惟我独行...
2011-10-09 15:35
scanif
Rank: 1
等 级:新手上路
帖 子:9
专家分:8
注 册:2011-10-10
得分:6 
#include<stdio.h>
int main(void)
{
    int n,i,k;
    double sum1,sum2,x;
    printf("输入你想求得前n项和:\n");
    scanf("%d",&n);  /*这里已经输入一次值了*/
    sum1=0;
    sum2=0;
    k=-1;
    while(scanf("%d",&n)==1)
    {
        for(i=1,x=1.0;i<=n;i++,x++)
        {
            k=(-1)*k;
            sum1+=1.0/x;
            sum2+=(k*1.0)/x;
        }
        printf("(1.0+1.0/2.0+1.0/3.0+1.0/4.0+...)的前%d项和=%lf.\n",n,sum1);
        printf("(1.0-1.0/2.0+1.0/3.0-1.0/4.0+...)的前%d项和=%lf.\n",n,sum2);
        printf("Enter next value:\n");
        scanf("%d",&n);   /*这里还需要输入一次上一次输入的值!*/
    }
    printf("Done!\n");
    return 0;
}
2011-10-10 12:49
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
得分:8 
你所写的是接收两次数字    scanf("%d",&n);得到一次    while中又是一次   而且while中条件是当接受的是==1时才计算    所以第一次输入完会经行第二次输入  第二次若不为1 就不会执行运算    while中最后一句还要接受一次    第一次和第三次接受是多余的
2011-10-10 13:04



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




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

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