c语言for(j=1;j<=9;j++) for(i=0;i<=9-j;i++) 这两句到底咋个循环?

#include <stdio.h>
void main()
{ char a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%c",&a[i]);
for(i=0;i<10;i++)
printf("%c\n",a[i]);
for(j=1;j<=9;j++)
for(i=0;i<=9-j;i++)
if (a[i]>a[i+1])
{ t=a[i];a[i]=a[i+1];a[i+1]=t; }
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%c ",a[i]);
}

前面两个循环不解释,如果前面你都不明白那下面的你不用看了。回去先看看书好了。
for(j=1;j<=9;j++)
for(i=0;i<=9-j;i++)
第一次执行外层循环for(j=1;j<=9;j++),j为1,小于等于9,执行循环体。然后进入内层循环for(i=0;i<=9-j;i++),此时j为1,所以内层循环的条件判断为i小于等于9-1,按照这个条件执行循环。当i==9的时候退出内层循环,执行外层循环第三个表达式,执行后判断循环条件仍然满足,继续执行。此时j为2,内层循环j的条件为j<=9-2。按照这个顺序完成循环的执行。

循环执行次数为
外层循环执行9次
内层循环在外层循环第一次执行的时候执行9次,第二次8次 。第三次7 。。。。。。追问

这两个for循环不是并列的吗?如果第二个循环是内层循环不是还需要加{}的吗?
还有就是第三个外层循环 for(i=0;i<10;i++)这咋循环呢?

追答

循环的统辖范围是下一个语句。这里它的下一个语句是for循环,而for循环语句作用域是遇到分号或者花括号。花括号只是用来限定作用域的。所以这两个循环不是并列,是一个内外级关系。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-14
这是一个双重循环
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
}
其中for(j=0;j<9;j++)是for(i=0;i<9;i++)的内嵌循环
i从0到9,i取一个值,j就从0取到9,共循环9次
第2个回答  2013-03-16
for(j=1;j<=9;j++)
for(i=0;i<=9-j;i++);前面循环9次,每循环一次后面的循环少一次。 表述的有点不明,你慢慢理解。

C语言for的双重循环
这里的双重循环for(i=1;i<=9;i++)是外循环,for(j=1;j<=9;j++)是内循环。先执行循环for(j=1;j<=9;j++),即在每一个i下,循环j的值。具体的循环的访问次序是,首先取i=1,在此条件下,进行内循环for(j=1;j<=9;j++),依次访问(i=1,j=1),(i=1,j=2),(i=1,j=3)....

用一个for循环怎么输出九九乘法表?
int i,j; for(int i=1,j=1;j<=9;i++){\/\/只有一个for循环,其中i控制每行输入的算式个数,j控制共有多少行。printf("%d*%d=%2d ",i,j,i*j); if(i==j){\/\/表示这一行输入结束,需要换行,并且下一行i需要从1开始,i=0是因为for循环中有i++,最后在自加,所以下一次循环,i=1;下一行算式个...

用c语言输出九九乘法表
for(j=1;j=i;j++)printf(%d*%d=%2d ,i,j,i*j);printf(n);} return 0;} 4、输出左下三角形:include stdio.h int main(){ int i,j,n;for(i=1;i=9;i++){ \/\/ 将下面的for循环注释掉,就输出左下三角形 for(n=1; n=9-i; n++)printf();for(j=1;j=i;j++)printf(...

...冒泡排序中内循环里 9-j是什么意思 for(i=0;i<9-j;i++)。谢谢...
10个数,只要比较9趟即可全部排序,所以第一个for()循环是for(j=0;j<9;j++)。for(i=0;i<9-j;i++)的意思是每一趟 两两比较的次数 ,如 j=0时,即第一趟,10个数。两两比较9次,然后依次如此下去...

...i=1;i<=9;i++){ for(int j=1;j<=i;j++){。。。为什么j要小于等于i...
就像当 i = 5,也就是说,在循环到第五行的时候,我们要给 这一行添加 j 个数据,那么定义成 j <= i 也就是说,j 最大是5, 那么第五行就是要打印5个数据了。看看打印出来的东西:(第五行)1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 ...

...i,j,k; for(i=1;i<=9;i++) {for(j=0;j<=9;j++) {for(k=0;k<_百 ...
这不是什么算式,这是C++语言的算法程序 include<stdio.h> void main(){ int i,j,k;for(i=1;i<=9;i++){ for(j=0;j<=9;j++){ for(k=0;k< ……--- 以下是我为这个残缺程序补充的内容,但是由于我不是学这个的,这个只不过是我的爱好,以下这段程序我只是试编,如果以下这段程序...

能不能帮我分析一下for(i=1;i<=9;i++) {for(j=1;j<i;j++)是怎么执行的...
for(j=1;j<i;j++)看题目意思是要输出九九乘法表 当i=1 j=1 1*1=1 当i=2 j=1 2*1=1 执行j++(此时的j为2)i=2 j=2 2*2=4 执行j++(此时的j为3 但是由于j<i 要求3<2 明显不成立 故停止执行)当i=3 j=1 3*1=3 执行j++(此时的j为2)i=3...

C语言键盘输入10个整数,按大小顺序输出要求用选择法。输出排序后的整数...
int i,t,j,m; for(i=0;i<=9;i++) { scanf("%d",&a[i]);\/\/去掉%d后面的空格scanf("%d ",&a[i]); } for(i=0;i<9;i++) { t=i; for(j=i+1;j<=9;j++) if(a[t]<a[j]) t=j; m=a[i]; a[i]=a[t]; a[t]=m; } for(i=0;i<=9;i++) { printf("%d",a[...

...i,j; for (i=1;i<=9;i++) { for (j=1;j<=i;j++) printf(
include <stdio.h> void main(){ int i,j;for (i=1;i<=9;i++){ for (j=1;j<=i;j++)printf("%d*%d=%2d ",i,j,i*j);printf("\\n");} }

C语言 for(i=0;i<9;i++) { printf("%d",i); } 这整个是一个代码,那for...
for(int i=0;i<9;i++)\/\/这是一条循环语句 { printf("%d",i);\/\/这是一条语句,作用是调用printf函数 }\/\/循环语句到这里结束 如果for下面有{号,则循环语句以}作为结束。如果for下面没有{号,则循环语句里只有它下面的一条语句。另外一条语句的结束是以分号作为结束。比如:i=0,j=0;只...

相似回答