关于for语句嵌套!

2025-04-13 03:35:15
推荐回答(5个)
回答1:

运行到for(j = 1; j <= 9; j++) 语句时
会先执行第一个表达式,也就是j=1;给j赋值,
然后继续执行第二个表达式,用j和9比较,如果j小于或等于9,就执行for后面的语句,也就是
for(i = 1; i <= 10-j; i++)
if(a[i-1] > a[i])
{
t = a[i-1]; a[i-1] = a[i]; a[i] = t;
}
如果,大于9就,不执行下面的语句,
for(i = 1; i <= 10-j; i++)
if(a[i-1] > a[i])
{
t = a[i-1]; a[i-1] = a[i]; a[i] = t;
}
执行这个语句后面的语句
最后一条也就是j++作用是,当下面的语句执行完后,
for(i = 1; i <= 10-j; i++)
if(a[i-1] > a[i])
{
t = a[i-1]; a[i-1] = a[i]; a[i] = t;
}
就会会过来执行,j++,然后,再执行地二个表达式,也就是j<=9,不停的这样,
这就是for循环,劝你去好好看看书,书上说的比我专业,
呵呵,祝你早日,学有所成!

回答2:

for(i = 3; i >=1; i --)
{
for(j = 1; j <= 2; j ++)
printf("%d", i + j);
printf("\n");
}

这样就清楚很多了,i=3,j=1 printf: 4
i=3 j=2 printf: 5
i=2 j=1 printf: 3
i=2 j=2 printf: 4
i=1 j=1 printf: 2
i=1 j=2 printf: 3

回答3:

打个比方 我输入的10个数是 34 184 24 58 59 20 84 86 69 38 我们先不管for(j = 1; j <= 9; j++)

看下面的 for(i = 1; i <= 10-j; i++)
if(a[i-1] > a[i])
{
t = a[i-1]; a[i-1] = a[i]; a[i] = t;
}

如果执行一次这条语句 那么 我输入的10个数就是两两进行比较 第一个和第二个比较 第二个和第三个比较 以此类推 得出的结果 是34 24 58 59 20 84 86 69 38 184 结果很明显
原来的是34 184 24 58 59 20 84 86 69 38
现在的是34 24 58 59 20 84 86 69 38 184
执行一次的结果就是把最大数找出来

那么 现在可以解释for(j = 1; j <= 9; j++) 这句是什么意思了吧
当J=1 就是把最大数放在最后面
当J=2 就是把第二大的数放在最大前一个
同样道理 执行9次后 就成升序了
我这么说你明白了吗?
这个又叫冒泡排序 考试经常考的 都 是固定写法

回答4:

for(j = 1; j <= 9; j++)
for(i = 1; i <= 10-j; i++)
if(a[i-1] > a[i])
{
t = a[i-1]; a[i-1] = a[i]; a[i] = t;
}
这一段是排序算法的基本写法了 几乎可以说固定的了
for(j = 1; j <= 9; j++)
for(i = 1; i <= 10-j; i++)
但是你这里我不知道是不是写的有误
应该是 for(j = 0; j <= 9; j++)
for(i = 0; i < 10-j; i++) 吧?

至于冒泡算法 你参考一下 :
http://wenku.baidu.com/view/12fbbd22bcd126fff7050b71.html

回答5:

你的程序有两层循环,对于每一个i的值(3,2,1),内层都会执行两次循环。
i=3的时候:
j=1时,打印4(3+1);j=2时,打印3(3+2);再输出一个换行
后面的类推