C语言for的双循环的执行顺序

 int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
  for(i=0;i<10;i++)
 {
  p=i;q=a[i];
  for(j=i+1;j<10;j++)
   if(q<a[j]) {p=j;q=a[j];}
   if(p!=i)
   {
    s=a[i];
    a[i]=a[p];
    a[p]=s;
   }
   printf("%d ",a[i]);这是一个程序的一部分,是来把数组按大到小排起来,但是里面的2个for循环把我弄糊涂了,这程序是对的吗?解释下流程啊。

最后一行 printf("%d ",a[i]); 后面应该有个“}”才对这个程序是对的,在a[11]这个数组里只有a[0]~a[9]这10个元素第一个for循环与第二个for循环构成嵌套,第一次循环结束找出a[0]~a[9]里最大的数,第二次结束找出a[1~a[9]]里最大的数,第三次找出a[2]~a[9]里最大的数,……这样依次类推,其实就是一个选择排序!程序中变量 p q 交替记录最大数的下标和最大数的值。这并不是一个难懂的程序,有一定基础的应该都能弄懂的。或者你回去看看有关选择排序的程序实例。这只是大致的内容,别的不需要多讲应该可以看明白的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-02
1. 外层循环从第一个数开始,刚开始保存此次循环的第一个元素的下标和元素值;2. 内存循环从第二个数开始,每个数与前一个数进行比较,如果出现“顺序”,则记录当前元素的下标和元素值。当当前循环进行完的时候,判断外层循环开始记录的下标和循环出现顺序的元素的下标值是否相等:如果相等,则不需要交换位置;否则,调换两个元素的位置。3. 之后两层循环都后移一位,重复上面的动作,直到比较结束。本回答被网友采纳
第2个回答  2013-09-02
恩,实践最容易说话了。学习年龄不是问题,要上劲而且逻辑清晰就行,上高中接触学一些QB类似的东西。貌似没什么用真正接触C,java还是在大专
第3个回答  2013-09-02
程序是对的。用的是最简单的冒泡法 。呵呵,很基础很基础的问题哦 。 你可以自己在图纸上演算下过程,这样比我跟你讲的直观。

C语言for的双循环的执行顺序
最后一行 printf("%d ",a[i]); 后面应该有个“}”才对这个程序是对的,在a[11]这个数组里只有a[0]~a[9]这10个元素第一个for循环与第二个for循环构成嵌套,第一次循环结束找出a[0]~a[9]里最大的数,第二次结束找出a[1~a[9]]里最大的数,第三次找出a[2]~a[9]里最大的数,…...

C语言中的双FOR循环是怎样一步一步的运行的?
for(int j = 0; j < 3; j++){ ……} 先从外层循环i=0,判断i<3,进入里面的循环,j=0,判断i<3;执行函数体内的语句,j++,接着再判断j<3, 成立继续执行函数体内语句,知道内循环执行完成,i++,判断i<3是否成立,知道所有的执行完,跳出双循环 ...

C语言三种循环结构的完整句子?
C语言循环控制语句提供了 while语句、do-while语句和for语句来实现循环结构。while循环语句,一般形式如下:while(表达式)语句 do-while语句,一般形式如下:do 语句 while(表达式);do-while循环是先执行语句,然后对表达式求值。若值为真,则再次执行语句,如此反复执行,否则将结束循环。语句可以是简单语...

C语言中for的双循环怎么用
for(int i=0;i<20;i++){ 循环体 } 执行步骤是:1、i=0 初始化初值;2、 进行条件判断i是否<20,如果条件为真,则继续执行;3、执行循环体的代码;4、i++ 变量i自增一次;5、回到第2步,一直循环,直到第2步条件为假时, 退出循环,结束。双for()循环也是一样的啊 ...

c++for 双循环的执行顺序
从外循环下手,i=1,满足条件i<=4吧;执行内循环的第一个for语句;输出30个空格。然后执行下一个for语句,把i=1代入,再输出6个空格;再执行下一个for语句,不输出。第一轮循环结束,进行第二轮。此时i=2了,再进行下面的循环。一共执行四轮。你的第一个for语句写错了,应该是i++。结果为:...

c语言for双循环问题
每次外层循环都会执行完全的内侧循环,即外层循环执行一次,内侧循环执行n次。对于这个双层循环而言,每次执行外层循环时,内层循环的j都会从0一直自增到i。

C语言的三种循环结构为
(1) for:for (循环控制变量初始化; 循环终止条件; 循环控制变量增量){循环体}循环执行步骤:第一,先进行循环控制变量初始化;第二,执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出;第三,执行循环体;第四,执行循环控制变量增量,转入第二步;注:for循环()中的...

C语言 要使用双循环输出 AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE...
int main(){ int i,j;for(i=0;i<5;i++){ for(j=0;j<8;j++){ printf("%c",'A'+i);} printf("\\n");} return 0;} 我是中间有换行哦。

c语言编程输入十个数,空格分隔6 4 8 9 3 2 0 1 5 7输出1 2 3 4 5...
include <stdio.h>int main(){ int a[10]; int i,j,temp; for(i = 0;i<10;i++) \/\/输入10个数 { scanf("%d",&a[i]); } for(i = 0;i<10;i++) \/\/双循环对数组进行排序 for(j = i+1;j<10;j++) { if(a[i] > a[j]) {...

编程控制一盏灯(C语言),实现不同速度的闪烁,每个速度闪烁10次,实现不同...
两个for,双循环。for(int i =1;i <= 10;++i) \/\/循环每种速度等级 注意,这里的i的范围不一定是1-10,可以自定义 for(int j=1;j <=10; ++j) \/\/循环10次 { sleep(100 * i);\/\/sleep休眠函数 休眠函数的时间和i一起,组成速度,也就是间隔时间 light();\/\/亮灯 close...

相似回答