老哥求解答
#include<stdio.h>int main()
{
int j, k, n;
float f, s;
scanf("%d", &n);
s = 0; f = 1;
for (k = 1; k < n; k++)
{
for (j = 1; j < k; j++)
f = f * k;
s = s + f;
printf("%.0f#", s);
}return 0;
}
为什么答案是1#3#21#
1/3我能理解,21实在不能理解,求老师指教 本帖最后由 kenxy 于 2021-11-6 23:28 编辑
调试一下就知道了
f的值依次为2,6,18
对应的是1×2=2,2×3=6,6×3=18
s对应1,1+2=3,3+18=21 #include<stdio.h>
int main()
{
int j, k, n;
float f, s;
scanf("%d", &n);
s = 0; f = 1;
for (k = 1; k < n; k++)
{
for (j = 1; j < k; j++)
{ f = f * k;
printf("%.0f---", f);
}
s = s + f;
printf("%.0f#\n", s);
}return 0;
}
在第二个for加个输出,这不就看的明明白白了嘛 18+3=21
1#
2---3#
6---18---21# 对了 忘了说输入是4 ,就是n是4 日后再说、 发表于 2021-11-6 23:16
#include
int main()
{
我大概懂意思了:
我输入的n是4,第一次打印输出1#;
第二次是打印输出3#
第三次我以为循环一次,其实是循环两次,而且循环体是f=f*k,为什么不是(f=f*k;s=s+f;)这个地方不是很理解。
谢谢大佬 日后再说、 发表于 2021-11-6 23:16
#include
int main()
{
1#
2---3#
6---18---21#
老哥这个是输出窗口还是调试界面啥的 4楼说得很清楚了 Leon19960120 发表于 2021-11-6 23:56
我大概懂意思了:
我输入的n是4,第一次打印输出1#;
第二次是打印输出3#
因为for的用法当中,就应该要有{},
for(初始化;判断;增值)
{循环体}
如果你不加{}的话,就默认为for后的第一条语句为{循环体},
也就是
for (j = 1; j < k; j++)
{ f = f * k;
} Leon19960120 发表于 2021-11-7 00:00
1#
2---3#
6---18---21#
当n=4时的输出内容
页:
[1]
2