839801569 发表于 2015-11-19 18:47:05

用while计算1-3+5-7+9

思维是怎么样的

machimilk 发表于 2015-11-19 21:40:12




#include <iostream>
using namespace std;
int main()
{
        int i=1; //初始值
        int val=1;
        int op=0;//+-操作符
        while(i<9)//没超过最大值就循环
        {
                if (op%2==1)//对应操作符加减间隔,如果操作符在奇数位就是- 否则就+
                {
                        val=val+(i+2);
                }else
                {
                        val=val-(i+2);
                }
                i+=2;//1 3 5 7 9...每次跳2
                op++;//操作符自增,以便下次判断操作符在奇数位还是偶数位
        }
        printf("%d\r\n",val);//打印结果
        system("pause");
        return 0;
}

缈翼 发表于 2015-11-19 22:15:00

machimilk 发表于 2015-11-19 21:40


因为在启动后,默认就是system("pause"),在你未输入键值的情况下不会退出的.而且感觉用cout语句感觉更简单:lol:

麦田管理中心 发表于 2015-11-20 21:26:58

#include<iostream>
#include<math.h>
using namespace std;
void main()
{
        int i = 1, j = 1, sum = 0;
        while (j <= 9)
        {
                sum += pow(-1, i + 1)*j;
                j += 2; i++;
        }
        cout << sum << endl;
        system("pause");
}

dps521 发表于 2015-11-21 15:27:01

一起研究一下呵呵

迷雾少年 发表于 2015-11-21 19:24:33

#include <Iostream>
int main(void)
{
        int i = 1;
        int value = 0;
        int k = 1;
        while(i<=9)
        {
                value = k * i + value;
                i+=2;
                k=-1 * k;
        }
        std::        cout<<value;
        return 0;
}

人造人 发表于 2015-11-23 21:07:59

#include<stdio.h>

int main ()
{
        int count = 3 + 5 + 7 + 9;
        int i = 0;
        int result = 1;

        while (count-- > 0)
        {
                if (i < 3)
                {
                        result--;
                        goto ok;
                }
                if (i < 5 + 3)
                {
                        result++;
                        goto ok;
                }
                if (i < 5 + 3 - 7)
                {
                        result--;
                        goto ok;
                }
                if (i < 5 + 3 - 7 + 9)
                {
                        result++;
                        goto ok;
                }
       
ok:                i++;
        }

        printf ("%d\n", result);

        return 0;
}

故乡的风 发表于 2015-11-25 09:49:04

int CalcSum(int n) {
    int i = 0;
    int iSign = 1, iSum = 0;

    for (i = 0; i < n; ++i) {
      iSum += iSign * (i * 2 + 1);
      iSign *= -1;
    }

    return iSum;
}
这里使用了一个iSign来表示数字的正负,与-1相乘改变正负,这样比判断语句高效。想知道原因的话可以看看计算机体系结构中关于指令调度的相关内容。
页: [1]
查看完整版本: 用while计算1-3+5-7+9