| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1040 人关注过本帖
标题:C语言循环问题
只看楼主 加入收藏
hdshdzh
Rank: 2
等 级:论坛游民
帖 子:77
专家分:11
注 册:2010-5-13
结帖率:92.31%
收藏
已结贴  问题点数:6 回复次数:10 
C语言循环问题
main()
{
long int i,s1=0,s2=0,s=0;
for(i=1;i<=100;i++)
{
if(i%2!=0)
s1+=i;
else
s2+=2*i-1;
}
s=s1-2*s2;
printf("1-3+5-7.....-99+101=%ld\n",s);
}帮我分析一下这个程序,哪出问题了,调试不到想要的结果。
搜索更多相关主题的帖子: C语言 
2010-06-02 08:33
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:1 
仔细看一下s1和s2都应该是哪些数的和。比如i = 100时,2 * i - 1 = 199这显然不应该包含在s2里面的

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2010-06-02 08:43
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:3 
改成这样吧
程序代码:
main()
{
  long int i,s1=1,s=0;
  for(i=1;i<=101;i++)
  {
    if(i%2!=0)
      s+=i*s1,s1*=(-1);
  }
  printf("1-3+5-7.....-99+101=%ld\n",s);
}

顺境逆境切莫止境,得意失意切莫在意。
2010-06-02 08:49
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1509
专家分:9241
注 册:2010-3-16
收藏
得分:2 
程序代码:
#include <stdio.h>

void main()
{
  long int i,s1=1,s=0;
  for(i=1;i<=101;i+=2)    //直接+2,只求奇数。
  {
        s+=i*s1;
    s1*=(-1);
  }
  printf("1-3+5-7.....-99+101=%ld\n",s);
}
2010-06-02 09:34
hdshdzh
Rank: 2
等 级:论坛游民
帖 子:77
专家分:11
注 册:2010-5-13
收藏
得分:0 
把s+=i*s1,s1*=(-1);改成s+=i*s1;
s1*=(-1);逗号改为分号。怎么运算结果不同,我用的是TC 2.0

[ 本帖最后由 hdshdzh 于 2010-6-2 09:47 编辑 ]
2010-06-02 09:46
gaoce227
Rank: 4
来 自:山东
等 级:业余侠客
帖 子:134
专家分:218
注 册:2008-4-5
收藏
得分:0 
“s2+=2*i-1”这不太乱吗?加个括号多好啊!你要实现什么?
2010-06-02 11:27
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:0 
程序代码:
#include <stdio.h>
main()
{
    long int i,s1=0;
    for(i=1;i<=51;i++)
    {
        if(i%2!=0)
            s1+=2*i-1;
        else
            s1+=1-2*i;
    }
    printf("1-3+5-7.....-99+101=%ld\n",s1);
}



#include <stdio.h>
main()
{
    long int i,s1=0,s2=0,s=0;
    for(i=1;i<=51;i++)
    {
        if(i%2!=0)
            s1+=2*i-1;
        else
            s2+=2*i-1;
    }
    s=s1-s2;
    printf("1-3+5-7.....-99+101=%ld\n",s);
}
假如楼主要求1-3+5-7.....-99+101这个的值,就这么修改
2010-06-02 12:45
smilekurt
该用户已被删除
收藏
得分:0 
回复 7楼 linjx0123
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-02 19:10
xiaobailong
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-2
收藏
得分:0 
老兄不要用 long int
你那个代码在我机器上调试的时候我把long int 改为int 后一切正常了.要不你试试看。以下是我改的。
#include<stdio.h>

main()
{
  int i,s1=1,s=0;
  for(i=1;i<=101;i++)
  {
    if(i%2!=0)
    {
      s=s+i*s1;s1*=(-1);

    }
  }
  printf("1-3+5-7.....-99+101=%d\n",s);
}
2010-06-02 20:26
xin789
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2010-6-2
收藏
得分:0 
回复 4楼 apull
不错,这样很简单
2010-06-02 22:27
快速回复:C语言循环问题
数据加载中...
 
   



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

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