黑马程序员技术交流社区

标题: for循环怎么实现这个??? [打印本页]

作者: CrazyMan    时间: 2014-11-24 22:26
标题: for循环怎么实现这个???
/*
题目:提示用户输入一个正整数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;

}
作者: meijinyu    时间: 2014-11-25 00:31
黑苹果没有网,只能给你拍张照片给你了,希望对你有所帮助:)

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

QQ图片20141125002851.jpg

作者: CrazyMan    时间: 2014-11-25 00:38
meijinyu 发表于 2014-11-25 00:31
黑苹果没有网,只能给你拍张照片给你了,希望对你有所帮助

为什么是number<=n呢??

作者: CrazyMan    时间: 2014-11-25 00:46
meijinyu 发表于 2014-11-25 00:31
黑苹果没有网,只能给你拍张照片给你了,希望对你有所帮助

为什么是number<=n呢??

作者: 时振    时间: 2014-11-25 02:07
CrazyMan 发表于 2014-11-25 00:46
为什么是number

因为n是你输入的整数条件,你需要计算的是1-2+3-······n,到n时整个计算过程需要结束
作者: yuanlingqi    时间: 2014-11-25 08:33
不需要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
看一下!!!
作者: meijinyu    时间: 2014-11-25 18:15
yuanlingqi 发表于 2014-11-25 08:33
不需要if else,没效率,利用-1乘值;int sum = 0;
int flag = -1;
for(int i=1;i

你的算法确实很好。怎样才能更有效率的编程呢?谢谢
作者: yuanlingqi    时间: 2014-11-26 09:21
meijinyu 发表于 2014-11-25 18:15
你的算法确实很好。怎样才能更有效率的编程呢?谢谢

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

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

楼上好方法!
作者: CrazyMan    时间: 2014-11-26 23:21
谢谢各位大神了
作者: 丶有果灬    时间: 2014-11-26 23:35
int sum = 0;
bool flag = true;
for(int i = 1;i<=m;i++)
{
if(flag)
sum+=i;
else
sum -= i;
flag=!flag;
}
return sum;

好理解吧!
作者: CrazyMan    时间: 2014-11-26 23:45
丶有果灬 发表于 2014-11-26 23:35
int sum = 0;
bool flag = true;
for(int i = 1;i

c语言没有bool类型把
作者: 丶有果灬    时间: 2014-11-26 23:49
CrazyMan 发表于 2014-11-26 23:45
c语言没有bool类型把

e  是的。java里面的
作者: CrazyMan    时间: 2014-11-26 23:53
丶有果灬 发表于 2014-11-26 23:49
e  是的。java里面的

恩恩,我这是在c语言里面的,,嘿嘿还是谢谢了




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