鱼C论坛

 找回密码
 立即注册
查看: 3571|回复: 7

[已解决]用while计算1-3+5-7+9

[复制链接]
发表于 2015-11-19 18:47:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
思维是怎么样的
最佳答案
2015-11-19 21:40:12
QQ截图20151119214054.png


  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.         int i=1; //初始值
  6.         int val=1;
  7.         int op=0;//+-操作符
  8.         while(i<9)//没超过最大值就循环
  9.         {
  10.                 if (op%2==1)//对应操作符加减间隔,如果操作符在奇数位就是- 否则就+
  11.                 {
  12.                         val=val+(i+2);
  13.                 }else
  14.                 {
  15.                         val=val-(i+2);
  16.                 }
  17.                 i+=2;//1 3 5 7 9...每次跳2
  18.                 op++;//操作符自增,以便下次判断操作符在奇数位还是偶数位
  19.         }
  20.         printf("%d\r\n",val);//打印结果
  21.         system("pause");
  22.         return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-19 21:40:12 | 显示全部楼层    本楼为最佳答案   
QQ截图20151119214054.png


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

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-19 22:15:00 | 显示全部楼层

因为在启动后,默认就是system("pause"),在你未输入键值的情况下不会退出的.而且感觉用cout语句感觉更简单:lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-20 21:26:58 | 显示全部楼层
  1. #include<iostream>
  2. #include<math.h>
  3. using namespace std;
  4. void main()
  5. {
  6.         int i = 1, j = 1, sum = 0;
  7.         while (j <= 9)
  8.         {
  9.                 sum += pow(-1, i + 1)*j;
  10.                 j += 2; i++;
  11.         }
  12.         cout << sum << endl;
  13.         system("pause");
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-21 15:27:01 | 显示全部楼层
一起研究一下呵呵
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-21 19:24:33 | 显示全部楼层
  1. #include <Iostream>
  2. int main(void)
  3. {
  4.         int i = 1;
  5.         int value = 0;
  6.         int k = 1;
  7.         while(i<=9)
  8.         {
  9.                 value = k * i + value;
  10.                 i+=2;
  11.                 k=-1 * k;
  12.         }
  13.         std::        cout<<value;
  14.         return 0;
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 21:07:59 | 显示全部楼层
  1. #include<stdio.h>

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

  7.         while (count-- > 0)
  8.         {
  9.                 if (i < 3)
  10.                 {
  11.                         result--;
  12.                         goto ok;
  13.                 }
  14.                 if (i < 5 + 3)
  15.                 {
  16.                         result++;
  17.                         goto ok;
  18.                 }
  19.                 if (i < 5 + 3 - 7)
  20.                 {
  21.                         result--;
  22.                         goto ok;
  23.                 }
  24.                 if (i < 5 + 3 - 7 + 9)
  25.                 {
  26.                         result++;
  27.                         goto ok;
  28.                 }
  29.        
  30. ok:                i++;
  31.         }

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

  33.         return 0;
  34. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-25 09:49:04 | 显示全部楼层
  1. int CalcSum(int n) {
  2.     int i = 0;
  3.     int iSign = 1, iSum = 0;

  4.     for (i = 0; i < n; ++i) {
  5.         iSum += iSign * (i * 2 + 1);
  6.         iSign *= -1;
  7.     }

  8.     return iSum;
  9. }
复制代码

这里使用了一个iSign来表示数字的正负,与-1相乘改变正负,这样比判断语句高效。想知道原因的话可以看看计算机体系结构中关于指令调度的相关内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-19 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表