C语言的问题,比较简单,请高手指教

for(i=j+1;i<n;i++)if(a[p]>a[i])p=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}上面那段程序,我认为for循环应... for (i=j+1; i<n ; i++)
if (a[p]>a[i])p=i;
if (p!=j)
{t = a[j]; a[j] = a[p]; a[p] = t;}
上面那段程序,我认为for循环应该在第一个if 语句后结束,为什么for循环要到第二个if后才循环完呢?
这是完整的程序,主要是看fun函数的功能,fun的作用是将n个数由小到大的排列。

#include <stdio.h>
#include <stdlib.h>
fun (int n, int *a)
{int i, j, p, t;
for (j = 0; j<n-1 ; j++)
{p = j;
/************found************/
for (i=j+1; i<n ; i++)
if (a[p]>a[i])
/************found************/
p=i;
if (p!=j)
{t = a[j]; a[j] = a[p]; a[p] = t;}
}
}
putarr(int n, int *z)
{int i;
for (i = 1; i <= n; i++, z++)
{printf("%4d", *z);
if (!(i%10)) printf("\n");
} printf("\n");
}
main()
{int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
printf("\n\nBefore sorting %d numbers:\n", n); putarr(n, aa);
fun(n, aa);
printf("\nAfter sorting %d numbers:\n", n); putarr(n, aa);
}
展开
 我来答
黄邦勇帅哥哥
2010-03-25 · TA获得超过3989个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:581万
展开全部
不可能,if已经是一个单独的语句块了,for就在第一个if后结束,不可能在第二个if后,除非是if ...else if结构,或者if...esle结构。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ad55c14
2010-03-25 · TA获得超过384个赞
知道答主
回答量:101
采纳率:0%
帮助的人:84.9万
展开全部
我也认为for循环应该在第一个if 语句后结束,可能写错了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loaprh
2010-03-25
知道答主
回答量:12
采纳率:0%
帮助的人:10.5万
展开全部
不可能的,肯定是你看错啦,再回去好好看看结果,或是换成更加清晰地表达看看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
情小辽1b
2010-03-25 · TA获得超过175个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:303万
展开全部
为什么for循环要到第二个if后才循环完呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式