我的和差函数解决方案不起作用

My solution for a sum-difference function isn't working

我正在尝试编写一个循环函数,returns 给定正整数 nVal 的计算结果。

给定 nVal,函数计算 1 + 2 - 3 + 4 - 5 + ... + nVal。因此,例如,如果 nVal = 4,函数 returns 1 + 2 - 3 + 4 的结果。我所做的解决方案没有正确循环 nVal,我不知道如何修复它。

有什么我可以尝试的修复方法吗?

到目前为止,这是我的代码(顺便说一下,我使用的是 C 语言):

#include <stdio.h>

int getValue (nVal)
{
  int i, nResult = 0;
    
  for (i = nVal; i <= nVal; i++) 
  {
    if (i % 2 == 0) 
    {
      nResult += i;
    } 
    else if (i % 2 == 1)
    {
      nResult -= i;
    }
  }
  if (nVal == 1)
    nResult +=i + 1;
      
  return nResult;
}
    
int main ()
{
  int nVal, nResult; 
    
  printf ("Enter n value: ");
  scanf ("%d", &nVal);
    
  nResult = getValue(nVal);
  printf ("Result: %d", nResult);
    
  return 0;
}

因为数字是连续的,我去掉了if elseif语句,我用变量k将'+'反转为'-',我的循环从2开始到nVal

你的循环

for (i = nVal; i <= nVal; i++)

仅运行 1 次

所以,你应该把它改成

for (i = 2; i <= nVal; i++)

and (nResult=1)因为在你的练习中符号从第三个数字开始改变,而不是从第二个数字开始改变

此处:

if (nVal == 1)
nResult +=i + 1;

如果我写为 1 输入,输出为 2,我删除这一行

我的代码:

#include <stdio.h>

int getValue (nVal)
{
int i, nResult = 1;
int k=1;
for (i = 2; i <= nVal; i++)
{
     nResult+=i*k;
     k*=-1;
}
return nResult;

}

int main ()
{
int nVal, nResult;
printf ("Enter n value: ");
scanf ("%d", &nVal);

nResult = getValue (nVal);

printf ("Result: %d", nResult);

return 0;

}