我想撰寫一個程式,用戶告訴我一個整數(n),我計算 1 (1-2) (1-2 3) (1-2 3-n)的總和...其中偶數為-k,奇數為 k。
我已經做了一個函式,但總和永遠不正確。例如對于 n=2 它應該是 sum=0 但顯示 sum=-1 對于 n=3 應該是 sum= 2 但我顯示 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;
}
uj5u.com熱心網友回復:
您的問題在于我們的回圈迭代j,它應該inner_sum根據j偶數/奇數條件更新如下:
#include <stdio.h>
int akl(int n) {
int sum = 0;
for (int i = 1; i <= n; i ) {
int inner_sum = 0;
for (int j = 1; j <= i; j ) {
if (j % 2 == 0) {
inner_sum -= j;
} else {
inner_sum = j;
}
}
sum = inner_sum;
}
return sum;
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", akl(n));
}
你只需要sum我命名它們的兩個變數inner_sum,sum它顯示每個術語的總和和所有術語的總和。
uj5u.com熱心網友回復:
可疑線路: else {sum = temp; ...
你不應該sum每次都加減嗎?
你為什么在這里分配它,沒有加法或減法?
您還有變數sum、sum1和sum2。您列印sum1and sum2,但從不修改它們。
這是我的解決方案:
// The sum of 1 (1-2) (1-2 3) (1-2 3-n)... where even integers are -k and odd integers are k.
#include <stdio.h>
int ancho(int n)
{
int sum=0;
for(int i=1; i<=n; i)
{
for(int j=1; j<=i; j)
{
sum = (2*(j%2)-1)*j;
}
}
return sum;
}
int main(void)
{
int n = 5;
printf("Solution is %d\n", ancho(n));
}
// Solution is 3 for n = 5,
// because: 1 (1-2) (1-2 3) (1-2 3-4) (1-2 3-4 5) =
// 1-1 2-2 3 = 3
輸出
Success #stdin #stdout 0s 5476KB
Solution is 3
IDEOne 鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/532232.html
標籤:C
上一篇:對特定警告撤消-Werror
