
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);
} 展开
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);
} 展开
4个回答
展开全部
不可能,if已经是一个单独的语句块了,for就在第一个if后结束,不可能在第二个if后,除非是if ...else if结构,或者if...esle结构。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也认为for循环应该在第一个if 语句后结束,可能写错了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可能的,肯定是你看错啦,再回去好好看看结果,或是换成更加清晰地表达看看.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么for循环要到第二个if后才循环完呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询