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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CrazyMan 中级黑马   /  2014-11-24 22:26  /  1674 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
题目:提示用户输入一个正整数n,利用while循环计算并输出,1-2+3-4+5-6+...n的和

*/
#include <stdio.h>
int main()
{
   
    int n =0;//初始化一个变量
    while (n <=0)
    {
        printf("请输入一个整数\n"); //提示用户输入一个整数
        
        scanf("%d",&n );//让用户输入
   
    }
    //计算
   /* int sum =0;//进行初始化
    int i=0;
    while (i < n )
    {
        i++;
        
        if (i%2==0)
        {
            sum -=i;
        }
        else
        {
            sum +=i;
        }
        
    }
    printf ("%d\n",sum );*/
    int sum =0;
    for (int i=0;i<n ;i++)
    {
        
        if (i %2==0)
        {
            sum -=i;
        }
        else
        {
            sum +=i;
        }
    }
    printf ("%d\n",sum  );
   
   
    return 0;

}

16 个回复

倒序浏览
黑苹果没有网,只能给你拍张照片给你了,希望对你有所帮助:)

QQ图片20141125002851.jpg (76.79 KB, 下载次数: 6)

QQ图片20141125002851.jpg
回复 使用道具 举报
meijinyu 发表于 2014-11-25 00:31
黑苹果没有网,只能给你拍张照片给你了,希望对你有所帮助

为什么是number<=n呢??
回复 使用道具 举报
meijinyu 发表于 2014-11-25 00:31
黑苹果没有网,只能给你拍张照片给你了,希望对你有所帮助

为什么是number<=n呢??
回复 使用道具 举报

因为n是你输入的整数条件,你需要计算的是1-2+3-······n,到n时整个计算过程需要结束
回复 使用道具 举报
不需要if else,没效率,利用-1乘值;int sum = 0;
int flag = -1;
for(int i=1;i<=n;i++){
   flag =flag*(-1);
   sum +=i*flag;
}

回复 使用道具 举报
qiuguo 中级黑马 2014-11-25 09:08:59
7#
看一下!!!
回复 使用道具 举报
yuanlingqi 发表于 2014-11-25 08:33
不需要if else,没效率,利用-1乘值;int sum = 0;
int flag = -1;
for(int i=1;i

你的算法确实很好。怎样才能更有效率的编程呢?谢谢
回复 使用道具 举报
meijinyu 发表于 2014-11-25 18:15
你的算法确实很好。怎样才能更有效率的编程呢?谢谢

我猜你想问的其实是如何编写更有效率的代码才对,这个就取决于程序员对语言,对算法,对内存使用机制的理解的深度了。所谓高效的代码就是运行的更快速,所以你要尽量避免更多的申请内存和无谓的判断,尤其是申请内存是比较耗性能的。很多情况下代码的性能和空间是需要权衡的,比如刚才的例子,虽然提高了性能,但却多了一个变量,但假设这个循环很大的情况下,性能会提升很多,这个变量的付出是值得的。
回复 使用道具 举报
看看。。。。。。。
回复 使用道具 举报
yuanlingqi 发表于 2014-11-26 09:21
我猜你想问的其实是如何编写更有效率的代码才对,这个就取决于程序员对语言,对算法,对内存使用机制的理 ...

是的,你说的很对。我现在在看基础视频,接触如何编写高效代码的问题比较少。你挺厉害的啊,谢谢你,大神
回复 使用道具 举报
邵起 中级黑马 2014-11-26 18:41:11
12#
yuanlingqi 发表于 2014-11-25 08:33
不需要if else,没效率,利用-1乘值;int sum = 0;
int flag = -1;
for(int i=1;i

楼上好方法!
回复 使用道具 举报
谢谢各位大神了
回复 使用道具 举报
int sum = 0;
bool flag = true;
for(int i = 1;i<=m;i++)
{
if(flag)
sum+=i;
else
sum -= i;
flag=!flag;
}
return sum;

好理解吧!
回复 使用道具 举报
丶有果灬 发表于 2014-11-26 23:35
int sum = 0;
bool flag = true;
for(int i = 1;i

c语言没有bool类型把
回复 使用道具 举报
CrazyMan 发表于 2014-11-26 23:45
c语言没有bool类型把

e  是的。java里面的
回复 使用道具 举报
丶有果灬 发表于 2014-11-26 23:49
e  是的。java里面的

恩恩,我这是在c语言里面的,,嘿嘿还是谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马