回 帖 发 新 帖 刷新版面

主题:[讨论]有兴趣的朋友过来看看!! 呵呵

1-2+3-4+5-6+7......+n 
    有学过的C语言,编写出来,尽可能简单明了!!!
            注意简单明了:(程序越简单越好)
    做成这个程序其实用不了多长时间,希望各位朋友! 
                   帮忙解决一下! 谢了.......

回复列表 (共15个回复)

沙发

if( n是单数 ) return (n+1)/2;
if( n是偶数 ) return -n/2;

板凳

#include<stdio.h>
#include<math.h>
main()
{
int n,i=1,s=0;
printf("请输入n。\n");
scanf("%d",&n);
while(i<=n)
{
s=s+i*pow(-1,i+1);
i++;
}
printf("当n=%d时/n算式结果为:%d",n,s);
}
我也初学,敬请指导!

3 楼

这个题,我现在会了,我给你们写下来吧!!! 呵呵
            #include <stdio.h>
            void main()
            {int i,j,n,s1,s2,s;
             for(i=1;i<=n;i++)
               {if(n%i==0)s1=s1-i;}
             for(j=2;j<=n;j++)
               {if(n%j!=0)s2=s2+j;}
               s=s1+s2;
             printf("%d“s);
             }
 这个程序不知道有没有错误,如果有错误请朋友们,帮忙改改!!! 呵呵
  

4 楼

ls两位,如果注重代码效率的话,你们的代码显然是不如bt同学的代码的,相信原因大家都明白
lz自己的代码,算法我没看明白……请稍作解释可以吗?而且从算法上看,这个算法无疑是非常不成功的,虽然没有改变问题的计算量级,却确实地增长了算法的迭代次数

5 楼

#include<stdio.h>

int main()
{
int n=1,i;
printf(enter i:);
scanf("%d",%i);

while(i!=0)
 n++;

if(n%2==0)
return -n/2;
if(n%2!=0)
return (n+1)/2;
}
应该是这样了

6 楼

[quote]#include<stdio.h>

int main()
{
int n=1,i;
printf(enter i:);
scanf("%d",%i);

while(i!=0)
 n++;

if(n%2==0)
return -n/2;
if(n%2!=0)
return (n+1)/2;
}
应该是这样了[/quote]
这位同学的程序严重有问题
首先scanf的参数表,从参数2开始应该是地址,怎么是%i呢?
其次,已经输入了i,还要n干吗……
第三,主函数不输出,return的东西给谁呢?

7 楼

bt同学的我还没看懂,风剑能不能解说一下?
这是我的,没考虑算法问题。新人,第一天进来。
另外,LZ的void main是被飞燕mm BS了很多的谭派后遗症,得改改~
code
#include<stdio.h>
#include<math.h>

int main()
{
    int sum = 0,j = 1,n;
    printf("Input the number n:\n");
    scanf("%d",&n);
    for(j=1;j<=n;j++)
    {
        if(!(j%2))
        {
            sum += j;
        }
        else
        {
            sum -= j;
        }
    }
    printf("The outcome number is %d",sum);
    getch();
    return 0;
}

8 楼

1-2+3-4+5...-n
if n是偶数:
   共用n个数字,可看成 (1-2)+(3-4)+...((n-1)-n), 有n/2对的-1, 因此-1*(n/2)


1-2+3-4+5....+n
if n是奇数, 可看成 (-0+1)+(-2+3)+...(-(n-1)+n),共有n+1个数字,有(n+1)/2对 1,因此1*(n+1)/2

9 楼

if(!(j%2))
        {
            sum += j;
        }
        else
        {
            sum -= j;
        }
形如这样的判断,其实真的可以写成sum+=(j%2)?j:-j;

10 楼


[code=c]
int  main(void)
{
    int flag=1;//用于符号转换
    int total=0;
    for (int i=1; i<=N; i++)
    {
        total+=i*flag;
        flag*=-1;
    }
    
return 0;
}[/code]
我感觉LZ可能要的是这个  不是想要你们精简高效的算法

我来回复

您尚未登录,请登录后再回复。点此登录或注册