C语言双重for循环问题
#include<stdio.h>intmain(){inti,j;for(i=1;i<10;i++){for(j=1;j<=i;j++)?printf("%d*%d=%...
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++) ?
printf("%d*%d=%2d ",j,i,i*j); ?问号这2句不明白。只有1个输出语句,为什么能输出几个式子1*1 1*2。。
printf("\n");
}
return 0;
}
循环顺序明白,就是不知道j<i和j<9区别在哪里,运行结果我都试过了,不明白运行的原理。
不明白为什么j<i会输出i个式子,我以为循环1次只输出1个式子,(1<=1;2<=2,3<=3。。。。)这样子满足条件就输出1个式子。
按照我的理解是这样子输出:
1*1=1
2*2=4
3*3=9
。。。。
9*9=81 展开
int main()
{
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++) ?
printf("%d*%d=%2d ",j,i,i*j); ?问号这2句不明白。只有1个输出语句,为什么能输出几个式子1*1 1*2。。
printf("\n");
}
return 0;
}
循环顺序明白,就是不知道j<i和j<9区别在哪里,运行结果我都试过了,不明白运行的原理。
不明白为什么j<i会输出i个式子,我以为循环1次只输出1个式子,(1<=1;2<=2,3<=3。。。。)这样子满足条件就输出1个式子。
按照我的理解是这样子输出:
1*1=1
2*2=4
3*3=9
。。。。
9*9=81 展开
展开全部
1、双重for循环就是两个for循环叠加起来。
2、for语句的格式为:
for (初始化语句; 条件语句; 控制语句)
{
语句1 ;
语句2 ;
....
语句n ;
}
for 语句的执行顺序是:首先执行“初始化语句”;然后测试“条件语句”;若条件成立,则执行语句1到语句n;然后执行“控制”语句;接着再测试条件语句是否成立,如果成立则重复执行以上过程,直至条件不成立时才结束for循环。如:
for(i=0;i<10;i++)......;
int i,a[]=new int[10];
for (i=0,i<10;i++) a[i]= 0;
这段代码把整型数组a中的所有元素都赋成0。
你可以在for循环的头部说明你的变量,而且最后一个表达式可以省略,不过要确定在语句中对变量的值有所改变,如:
for(int i=0;i<=10;) i+=i;
for循环中,“初始化语句”、“条件语句”和“控制语句”都可以省略,但是其间的分号不能省略。例如:
int i =0 ;
for (; ; ;)
{
if i>10 break ;
i = i +1 ;
}
for循环中省略“条件语句”时,在for语句{}中必须包换转句语句控制程序在某个条件满足时跳出for循环,否则将形成死循环
2、for语句的格式为:
for (初始化语句; 条件语句; 控制语句)
{
语句1 ;
语句2 ;
....
语句n ;
}
for 语句的执行顺序是:首先执行“初始化语句”;然后测试“条件语句”;若条件成立,则执行语句1到语句n;然后执行“控制”语句;接着再测试条件语句是否成立,如果成立则重复执行以上过程,直至条件不成立时才结束for循环。如:
for(i=0;i<10;i++)......;
int i,a[]=new int[10];
for (i=0,i<10;i++) a[i]= 0;
这段代码把整型数组a中的所有元素都赋成0。
你可以在for循环的头部说明你的变量,而且最后一个表达式可以省略,不过要确定在语句中对变量的值有所改变,如:
for(int i=0;i<=10;) i+=i;
for循环中,“初始化语句”、“条件语句”和“控制语句”都可以省略,但是其间的分号不能省略。例如:
int i =0 ;
for (; ; ;)
{
if i>10 break ;
i = i +1 ;
}
for循环中省略“条件语句”时,在for语句{}中必须包换转句语句控制程序在某个条件满足时跳出for循环,否则将形成死循环
展开全部
第二个for语句执行完后,是回到第一个for语句执行的,j<=i的话,i的值是随第一个for语句改变的,一个循环执行i次,所以输出第一个循环输出1*1,第二个循环输出1*2,2*2,第三个循环输出1*3,2*3,3*3,一直到第9个循环输出1*9到9*9,
如果是j<=9,一个循环执行9次,第一次循环输出1*1到9*1,第二次输出1*2到9*2,。。。第9次输出1*9到9*9
i的值由外循环决定,j的值由内循环决定
如果是j<=9,一个循环执行9次,第一次循环输出1*1到9*1,第二次输出1*2到9*2,。。。第9次输出1*9到9*9
i的值由外循环决定,j的值由内循环决定
追问
不明白为什么j<i会输出i个式子,我以为循环1次只输出1个式子,(1<=1;2<=2,3<=3。。。。)这样子满足条件就输出1个式子。
按照我的理解是这样子输出:
1*1=1
2*2=4
3*3=9
。。。。
9*9=81
还有,什么情况下才会像我想的这样输出。
我的理解是j不是每次都加1了吗,为什么每次都还从1开始,乘到i
追答
我估计你大概是不明白for语句里面的三个式子的意思,for(j=1;j<=i;j++):j=1是初值,然后然后判断j<=i是否成立,成立就执行循环体,并且j++,不成立就结束循环。所以j<=i会执行i次循环体,输出i个结果。
如果第二个for语句改成for(j=i;j<=i;j++)就是你说的这个结果了,不过这样用双重循环毫无意义
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-09-15
展开全部
这是一个乘法口诀。你把 j<i 和 j<9 都试试先自己看看有什么变化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for( k=0; k<i; k++ ){ for( j=0; j<255; j++ ) { ; } }应该看得懂吧
满意请采纳。
满意请采纳。
追问
有什么关系啊,我是不明白为什么j<i会输出i个式子,我以为循环1次只输出1个式子,(1<=1;2<=2,3<=3。。。。)这样子满足条件就输出1个式子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j<i, printf("%d*%d=%2d ",j,i,i*j);执行i次
j<9,每轮 printf("%d*%d=%2d ",j,i,i*j);都执行8次
j<9,每轮 printf("%d*%d=%2d ",j,i,i*j);都执行8次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询