C语言编程帮助我吗?

标签 c

我必须编写一个程序,打印以下表达式“1-2+3-4+5+.... n.(奇数加,偶数减)我写了这个确切的代码:

#include <stdio.h>
int main ()
{
    float c,n,i,s;
    c=getch ();
    printf ("\n Please write n:");
    scanf ("%f",&n);
    s=0.f;
    for (i=1;i<=n;i++)
    {
        s+=((2*i-1) -2*i );
    }
    printf("\n Sum =%.2f",s);
    getch ();
 }

当我编译它时,它没有显示任何错误。当我运行它时,每次我输入一个数字,例如5,我得到的结果是-5,或者如果我输入3,我得到-3。我有什么做错了吗?

编辑:我需要得到这种结果:例如,如果我输入 6,我必须执行 1-2+3-4+5-6 =-3。如果我输入 4,我必须执行 1-2+3-4=-2。依此类推!

最佳答案

你的总结是错误的:

s+=((2*i-1) -2*i );

给出-1

您需要:

s+=i*(2*(i%2) - 1);

它将为所有偶数 i 提供“-”,为所有奇数 i 提供“+”。

由于您只处理整数,因此 i 应该是 int,以及您使用的所有其他变量:

#include <stdio.h>
int main ()
{
    int s = 0, c= 0, n = 0, i = 1;
    c = getch();
    printf ("\n Please write n:");
    scanf ("%d",&n);
    for (i=1; i<=n; i++)
    {
        s+=i*(2*(i%2) - 1);
    }
    printf("\n Sum =%d",s);
    getch ();
 }

更简单,使用一些简单的数学,你可以得到它:

if(n%2 == 0){
    s = -n/2;
}
else{
    s = n - n/2;
}

关于C语言编程帮助我吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16142024/

相关文章:

c - 重写温度转换程序

c - 如何实现calloc

c - char 变量的编码类型是什么?

检查连接打开或关闭?(在 Linux 中的 C 中)

c - TIBCO-RV 数据包的 header 和消息正文的格式是什么?

c - 客户端服务器程序的播放器结构

c - 在C标准库函数中如何确定返回char指针是否需要空闲?

c - 包含 <stdlib.h> 会导致段错误

c - 移动指针后 C 中的内存泄漏问题(释放的到底是什么?)

跨平台套接字