如下循环语句:for(n=100,s=0;n;s+=n,n--); 实现什么功能?还有其他哪些写法呢?请一一列举写出来。
时间: 2023-05-28 15:05:38 浏览: 105
这个循环语句实现了从100开始,每次将n的值赋给s,然后n减1,直到n减为0为止。因为循环体中什么也没有执行,所以实际上这个循环并没有做任何有用的事情。
其他可能的写法包括:
1. while循环:
```
n = 100;
s = 0;
while (n) {
s = n;
n--;
}
```
2. do-while循环:
```
n = 100;
s = 0;
do {
s = n;
n--;
} while (n);
```
3. for循环:
```
s = 100;
for (n = 99; n >= 1; n--) {
s += n;
}
```
这个for循环实现的是从99开始,每次将n的值加入s,然后n减1,直到n减为0为止,最后s的值为100到1的累加和。
相关问题
利用循环语句 for 计算求和问题: s=2/1-3/2+5/3-8/5+…前n项和
根据引用中提供的公式,可以得到s的计算公式为:s=2/1-3/2+5/3-8/5+…前n项和。其中,分子为奇数项的值,分母为对应奇数项的前一项斐波那契数列的值。因此,可以利用循环语句for来计算s的值。具体实现可以参考引用中提供的代码。
代码如下:
```c
#include <stdio.h>
void fun(float *sn, int n);
int main() {
int n;
float s1;
printf("Please input n: ");
scanf("%d", &n);
fun(&s1, n);
printf("s1=%f\n", s1);
return 0;
}
void fun(float *sn, int n) {
float s = 0.0, w, f = -1.0;
int i;
for (i = 0; i <= n; i++) {
f = (-1) * f;
if (i == 0) {
w = 2.0;
} else if (i == 1) {
w = -3.0 / 2.0;
} else {
w = (2 * i - 1) * f / (2 * i - 2);
}
s += w;
}
*sn = s;
}
```
利用循环语句 for 计算求和问题: s=2/1-3/2+5/3-8/5+…前n项
根据引用中提供的公式,可以得到s的计算公式为:s=2/1-3/2+5/3-8/5+…前n项。其中,分子为奇数项的值,分母为对应奇数项的前一项的值。根据引用中提供的代码,可以编写如下代码来计算s的值:
```c
#include <stdio.h>
void fun(float *sn, int n);
int main() {
int n;
float s;
printf("Please input n: ");
scanf("%d", &n);
fun(&s, n);
printf("s = %f\n", s);
return 0;
}
void fun(float *sn, int n) {
float s = 0.0, w, f = -1.0;
int i;
for (i = 0; i <= n; i++) {
f = -f;
w = f / (2 * i + 1);
s += w;
}
*sn = s * 2;
}
```
其中,fun函数的作用是计算s的值,并将结果通过指针sn返回。在主函数中,首先输入n的值,然后调用fun函数计算s的值,并输出结果。
阅读全文