A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wg592930 中级黑马   /  2015-4-26 10:34  /  901 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序1:实现  1-2+3-4+5-4................n
#include<stdio.h>

int main()
{
    int n =0;;
   while(n  <=0)
   {
   printf("请输入一个正整数:");
   scanf("%d",&n );
   }

    int sum = 0;
    int i = 0;
    while(i <n )
    {

        i++;
        if (i %2 == 0)
        {
            sum=sum-i;   ///////////////////////////问题  把这里改成  i= 0-i ; 为什么会出现死循环,执行错误。我的思路是 每当出现偶数 就将i 变为 相反数,请问这样有什么错误。
        }
        sum =sum + i ;

    }

    printf("sum 的值为 : %d\n" ,sum);
    return 0;

}


16 个回复

倒序浏览
So然后 2015-4-26 10:51:44
沙发
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
So然后 发表于 2015-4-26 10:51
你应该是 if + else  按照你的就变成了 1 -2 +2 +3 -4 +4.。。。。

可否把你认为正确的程序贴出来,谢谢,(按照我的思路)
回复 使用道具 举报
So然后 2015-4-26 11:02:50
板凳
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
你这个“1-2+3-4+5-4......n”好像没规律,我猜后面一个写错了;我再猜,我给你写了一个
  1. #include <stdio.h>
  2. int main()
  3. {       
  4.         int n;
  5.         int sum=0;
  6.         int i=1;
  7.         int count=0;

  8.         printf("请输入一个正整数:");
  9.         scanf("%d",&n);
  10.         while (i<=n)
  11.         {
  12.                 count=i;
  13.                 if(i%2==0)
  14.                 {
  15.                         count=-i;
  16.                 }
  17.                 sum=sum+count;
  18.                 i++;
  19.         }
  20.         printf("sum的值为:%d\n",sum);
  21.         getchar();
  22.         getchar();
  23. }
复制代码

看看可能有点帮助
回复 使用道具 举报
霸王睡别姬 发表于 2015-4-26 11:06
你这个“1-2+3-4+5-4......n”好像没规律,我猜后面一个写错了;我再猜,我给你写了一个

看看可能有点帮助 ...

谢谢  看来我得必须再加一个变量
回复 使用道具 举报
这个基础视频里的作业里是有的,看下答案
回复 使用道具 举报
shao 中级黑马 2015-4-26 13:08:12
8#
死循环???
回复 使用道具 举报
死循环,,,,,,,
回复 使用道具 举报
mony 中级黑马 2015-4-27 21:00:12
10#
我觉得这样更简单
  1. int main(int argc, const char * argv[]) {
  2.     int n = 0,total = 0;
  3.     while (n <= 0) {
  4.         printf("输入一个正整数\n");
  5.         scanf("%d",&n);
  6.     }
  7.     for (int i = 0; i <= n; i++) {
  8.         total += (i % 2 == 0 ? -i : i);
  9.     }
  10.     printf("总和为%d",total);
  11.     return 0;
  12. }
复制代码
回复 使用道具 举报
mony 中级黑马 2015-4-27 21:01:25
11#
下面那个可以不加括号,重发
  1. int main(int argc, const char * argv[]) {
  2.     int n = 0,total = 0;
  3.     while (n <= 0) {
  4.         printf("输入一个正整数\n");
  5.         scanf("%d",&n);
  6.     }
  7.     for (int i = 0; i <= n; i++) {
  8.         total += i % 2 == 0 ? -i : i;
  9.     }
  10.     printf("总和为%d",total);
  11.     return 0;
  12. }
复制代码
回复 使用道具 举报
你这个题,你用断点调试一下就好了,那样你就能看出是哪里出了问题,
回复 使用道具 举报
奇数前面是加,偶数前面是减      i=0-i,i是0或负数,n是正数,死循环
回复 使用道具 举报
MllWing 发表于 2015-4-30 14:04
奇数前面是加,偶数前面是减      i=0-i,i是0或负数,n是正数,死循环

谢谢 你   已经解决了  感谢你的帮助
回复 使用道具 举报
路过,,看看,
回复 使用道具 举报
共同学习 学习
回复 使用道具 举报
1-2+3-4+5-6................n  你都写错了,6要是4就没规律了,无解
规律就是奇数和减去偶数和。
void main()
{
   int num;
   scanf("%d",&num);
   //奇数的和
   int oddNumber=0;
   //偶数的和
   int evenNumber=0;
   //结果=奇数的和-偶数的和
   int result=0;
   for(int i=1;i<=num;i++){
        if(i&1==1){ //奇数,使用逻辑&可以让程序执行的快一些
            oddNumber=oddNumber+i;
        }else{
            evenNumber=evenNumber+i;
        }
   }
   result=oddNumber-evenNumber;
   printf("result=%d",result);
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马