计算数列:1⼀2-2⼀3+3⼀4-……-98⼀99+99⼀100的和。(注意加减号)。提示:不允许使用if语句

2026年09月20日 01:50
有3个网友回答
网友(1):

1.你可以换成switch(C/C++)或case(Delphi/Pascal)语句
int sum()
{
int n, s=0;
for(n=1;n<=99;n++){
switch(n%2){
case 0: s -= n/(n+1.0); break;
case 1: s += n/(n+1.0); break;
}
}
return s;
}

2.你可以使用%(C/C++)或mod(Delphi/Pascal)语句得到项数对2的余数n,然后利用2*n-1求得正负号
int sum()
{
int n, s=0;
for(n=1;n<=99;n++){
s += (2*(n%2)-1)*n/(n+1.0);
}
return s;
}

3.你可以使用?:(C/C++)来得到正负号,如: “n%2?-1:1” 当然,不包括引号
int sum()
{
int n, s=0;
for(n=1;n<=99;n++){
s += (n%2?-1:1)*n/(n+1.0);
}
return s;
}

4.你可以自己定义一个变量记录符号
int sum()
{
int n, b=1,s=0;
for(n=1;n<=99;n++){
s += b*n/(n+1.0);
b *= -1;
}
return s;
}

5.你可以先把正的加了,再把负的减了
int sum()
{
int n, s=0;
for(n=1;n<=99;n+=2){
s += n/(n+1.0);
}
for(n=2;n<=98;n+=2){
s -= n/(n+1.0);
}
return s;
}

6. 要不您再自己发挥一个? 比如两项两项的求

网友(2):

那你用for就行

网友(3):

用QBASIC语言解答:
i=1
j=2
s=0
for m=1 to 99
s=s+(-1)^(m+1) *i/j
i=i+1
j=j+1
next m
print "s=";s
end