黑马程序员技术交流社区

标题: 计算1-2+3-4+5-6......n的值? [打印本页]

作者: lipeiaiwo    时间: 2014-7-12 17:37
标题: 计算1-2+3-4+5-6......n的值?
大家看看我这样是不是对的呢?
/*
计算1-2+3-4+5-6......n的值
*/

#include <stdio.h>

int main()
{
    int n = 100;
    int a = 0;
    int b = 0;
    while(a<n)
    {
        a++;
        if(n%2==0)
        {
            b=b-a;
        }
        else
        {
            b=b+a;
        }
        
    }
    printf("值是%d\n",b);
    return 0;
}
作者: 温天恩    时间: 2014-7-12 21:03
可以的,看起来比for循环更简单啊!
作者: Devchen    时间: 2014-7-12 21:12
n=3,输出是6,那就就不对了。感觉没那么复杂。先对n做个奇偶判断,根据奇偶算结果。
作者: Devchen    时间: 2014-7-12 21:25
这样解决不知是否复合你的要求。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int n = 0;
  5.     printf("请输入要计算的n值\n");
  6.     scanf("%d", &n);
  7.     printf("您输入的n = %d\n", n);
  8.     int result = 0;


  9.         if(n%2==0)
  10.         {
  11.             result = -(n/2);
  12.         }
  13.         else
  14.         {
  15.             result = n - (n-1)/2;
  16.         }
  17.         

  18.     printf("result = %d\n",result);
  19.     return 0;
  20. }
复制代码

作者: 刘圣涛    时间: 2014-7-12 22:24
来学习一下
作者: fantacyleo    时间: 2014-7-12 22:29
if(n%2 == 0)这里错了,应该用a而不是n。否则整个循环期间这个判断始终为真,因为n=100是固定不变的
作者: 楠瓜果    时间: 2014-7-12 22:34
用for循环比较简单一些,可以试一下
作者: 大坏蛋    时间: 2014-7-12 22:45
#include <stdio.h>//1-2+3-4+5...+n
int main()
{        int n;  
        int i=0,sum=0;
        while(n<=0)
        {
       
       printf("请输入一个正整数\n");
       scanf("%d",&n);
       
        }

       
        while(i<n)
        {  
                  
          i++;
          sum+=i;  
          printf("%d\n",sum);
          if (i<n)
          {
                i++;
            sum-=i;
                printf("%d\n",sum);
          }
         
        }





       
}
         
回头看了看自己做的,都忘记怎么想的
作者: 大坏蛋    时间: 2014-7-12 22:51
Devchen 发表于 2014-7-12 21:25
这样解决不知是否复合你的要求。

楼主偷懒了,哈哈哈,直接通过规律做的,但当时的题目好像是让同学们做while练习的
作者: 大坏蛋    时间: 2014-7-12 22:57
这个思路很清晰啊,a%2
作者: Devchen    时间: 2014-7-13 00:07
大坏蛋 发表于 2014-7-12 22:51
楼主偷懒了,哈哈哈,直接通过规律做的,但当时的题目好像是让同学们做while练习的 ...

视频还是什么题中的,还没遇到
作者: 爱情路13号    时间: 2014-7-13 00:11
不对的,这个直接再设置一个参数就好了。(-1)*(-1)不就是1了么,那1*(-1)就是-1了,刚好隔一个数字,是负数,用这个数乘以循环的数字就能控制是实现了
作者: lipeiaiwo    时间: 2014-7-13 01:19
谢谢大家了.....
作者: 大坏蛋    时间: 2014-7-13 14:02
Devchen 发表于 2014-7-13 00:07
视频还是什么题中的,还没遇到

视频中的一个练习题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2