C语言中关于for循环嵌套的问题,我不太懂
/*用嵌套循环计算1!+2!+3!+...+n!的值*/#include<stdio.h>voidmain(){inti,j,n;longintt,sum=0;print...
/*用嵌套循环计算1!+2!+3!+...+n!的值*/
#include <stdio.h>
void main()
{
int i,j,n;
long int t,sum=0;
printf("input n=");
scanf("%d",&n);
for(i=1;i<=n;i++)/*帮看下这两个嵌套循环怎么运行的:外层循环N次,求累加和*/
{
t=1;/*置T的初值为1,以保证每次阶乘都从1开始连乘*/
for(j=1;j<=i;j++)/*内层循环重复i次,计算t=i*/
t=t*j;
sum=sum+t;
}
printf("sum=%d\n",sum);
}
/*我的疑问是;我看书上介绍嵌套循环时,举的是完整输出九九乘法表的例子,比方说当内层的J为4时输出为:4*1 4*2 4*3 4*4
但在这个例子中,当J=4时,为什么就成了1*2*3*4了.*/
//另外printf输出 指数怎么表示
//另外在这个例子中:t=t*j 当j为4时,是1*1*2*3*4,还是当J为1时,t=1*1,这时t的值为1,j为2时,t=t*j=1*2,这时t值为2;
//当t为3时t=t*j=2*3=6;依此类推到j为4,t=t*j=6*4;
//这两种理解方式哪种是对的????????????????????? 展开
#include <stdio.h>
void main()
{
int i,j,n;
long int t,sum=0;
printf("input n=");
scanf("%d",&n);
for(i=1;i<=n;i++)/*帮看下这两个嵌套循环怎么运行的:外层循环N次,求累加和*/
{
t=1;/*置T的初值为1,以保证每次阶乘都从1开始连乘*/
for(j=1;j<=i;j++)/*内层循环重复i次,计算t=i*/
t=t*j;
sum=sum+t;
}
printf("sum=%d\n",sum);
}
/*我的疑问是;我看书上介绍嵌套循环时,举的是完整输出九九乘法表的例子,比方说当内层的J为4时输出为:4*1 4*2 4*3 4*4
但在这个例子中,当J=4时,为什么就成了1*2*3*4了.*/
//另外printf输出 指数怎么表示
//另外在这个例子中:t=t*j 当j为4时,是1*1*2*3*4,还是当J为1时,t=1*1,这时t的值为1,j为2时,t=t*j=1*2,这时t值为2;
//当t为3时t=t*j=2*3=6;依此类推到j为4,t=t*j=6*4;
//这两种理解方式哪种是对的????????????????????? 展开
展开全部
1、j是内层循环就应该是4!啊~外层才是把他们加起来。这个是没有问题的。注意内存for没有括号,只执行一条语句。
2、指数用^表示,就是shift+数字6。比如2^3代表2的3次方,x^2就是x的平方。
3、你要把t控制变量不动在分析j。。。你试试用一张纸吧每一次的t,j还有结果的值记下来跟踪一下就会了,耐心点。。。
4、j在变化时t是不能变的。。。怎么你以此类推的t就从3变成6了???
记住外层循环不变的时候变内层循环。。。内层循环变完一轮以后在变外层,并且内层恢复到初值。。。
认真跟踪一下
2、指数用^表示,就是shift+数字6。比如2^3代表2的3次方,x^2就是x的平方。
3、你要把t控制变量不动在分析j。。。你试试用一张纸吧每一次的t,j还有结果的值记下来跟踪一下就会了,耐心点。。。
4、j在变化时t是不能变的。。。怎么你以此类推的t就从3变成6了???
记住外层循环不变的时候变内层循环。。。内层循环变完一轮以后在变外层,并且内层恢复到初值。。。
认真跟踪一下
2011-11-23
展开全部
for(i=1;i<=n;i++)表示1,2,3,...n,即n个数;
for(j=1;j<=i;j++)t=t*j;计算确定的数n时的阶乘,例如,当i=5时,j=1,2,..5, t=1*2*3*4*5=5!
for(j=1;j<=i;j++)t=t*j;计算确定的数n时的阶乘,例如,当i=5时,j=1,2,..5, t=1*2*3*4*5=5!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个。。。问题真多啊
循环的过程是这样,
i=1 j=1
t=t*j=1*1
sum+=t=sum+1=1
i=2 j=1
t=t*j=1*1
sum+=t=sum+1=2
i=2 j=2
t=t*j=1*2=2
sum+=t=sum+2=4
i=3 j=1
t=t*j=1*1=1
sum+=t=sum+1=5
i=3 j=2
t=t*j=1*2=2
sum+=t=sum+2=7
这样肯定错了,你每次循环时都把t设为1,二层循环时又把t搞成1
另外这道题用不着二层循环。。。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int t=1,n,i;
long long sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t*=i;
sum+=t;
}
printf("sum=%ld",sum);
system("pause");
return 0;
}
有不会的可以问,另外楼上说的都对
循环的过程是这样,
i=1 j=1
t=t*j=1*1
sum+=t=sum+1=1
i=2 j=1
t=t*j=1*1
sum+=t=sum+1=2
i=2 j=2
t=t*j=1*2=2
sum+=t=sum+2=4
i=3 j=1
t=t*j=1*1=1
sum+=t=sum+1=5
i=3 j=2
t=t*j=1*2=2
sum+=t=sum+2=7
这样肯定错了,你每次循环时都把t设为1,二层循环时又把t搞成1
另外这道题用不着二层循环。。。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int t=1,n,i;
long long sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t*=i;
sum+=t;
}
printf("sum=%ld",sum);
system("pause");
return 0;
}
有不会的可以问,另外楼上说的都对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你仔细研究研究他们的变量就能够清楚了。
追问
研究2天了都,我的疑问都在下面的注释里面啊,一楼的看都没看,我可用手机上的网,流量啊大哥。
追答
其实你之所以会迷惑完全是t这个变量的问题,t=t*j,由于左右两边都有t也就是这个构成了一个自动内循环。我用最原始的办法给你说,这个问题你要是不能搞懂,以后心里永远有个疙瘩。
首先你要了解=这个符号是赋予的意思,也就是把右边的东西给左边。t=t*j,就是先计算t*j的值,然后把值赋予给t。
当j为1时,t=t*1=1*1.
当j为2时,t=t*2=1*1*2
当j为3时,t=t*3=1*1*2*3
依此类推,明白了吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么简单都看不懂,还有解释呢!!!!!!!无语
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询