我想写一个程序,用户告诉我一个整数(n),我计算1+(1-2)+(1-2+3)+(1 - 2+3-n).. a的和,其中偶数是-k,奇数是+k。
我做了一个函数,但是和永远不正确。例如,对于n=2,它应该是sum=0,但是显示sum=-1对于n=3,它应该是sum=+2,但是i显示sum=3。(忽略调试printfs)
#include <stdio.h>
int athroismaAkolouthias(int n); // i sinartisi me tin opoia ypologizete to athroisma akolouthias 1+(1-2)+(1-2+3)+(1-2+3-4).....
int main(){
int n;
printf("give n: ");
scanf("%d", &n);
printf("the sum is %d", athroismaAkolouthias(n));
}
int athroismaAkolouthias(int n){
int sum1=0, sum2=0,sum=0;
int i, temp, j;
for (i=1; i<=n; i++){
for (j=1; j<=i; j++){
temp=j;
}
if (i%2==0){sum=sum-temp; printf("test1 %d%d",sum,temp);}
else{sum=temp; printf("test2 %d%d",sum,temp);}
}
return sum;
}
2条答案
按热度按时间v8wbuo2f1#
您的问题与我们的循环有关,该循环迭代
j
,它应根据j
偶/奇条件更新inner_sum
,如下所示:对于
sum
,只需要两个变量,我将它们命名为inner_sum
和sum
,它显示了每一项的和以及所有项的和。lpwwtiir2#
可疑行:
else {sum = temp; ...
你不应该每次都对
sum
进行加减运算吗?你为什么在这里赋值,不加不减?
还有变量
sum
、sum1
和sum2
。可以打印sum1
和sum2
,但不能修改它们。我的解决方案是:
输出
IDEOne Link的第一个字符