有以下程序:
#include <stdio.h>
struct S{intn;inta[20];}; void f(struct S *p)
inti,j,t;
for(i=0;in-1;i++) for(j=i+1;jn;j++) if(p->a[i]>p->alil)
{t=p->a[i]; p->a[i]=p->a[j]; p->a[j]=t; }
main()
int i;structSs={10,{23168754109}}; f(&s);
for(i=0;i<s.n;i++)printf("%d,",s.a[il);
程序运行后的输出结果是()。
A.2,3,1,6,8,7,5,4,10,9,
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,4,5,6,7,8,9,10,
好家伙,兄弟你这代码乱的,我连蒙带猜地整理了一遍
#include <stdio.h>
struct S{
int n;
int a[20];
};
void f(struct S *p)
{
int i, j, t;
for(i = 0; i < p->n; i++)
for(j = i+1; j < p->n; j++)
if( p -> a[i] > p -> a[j]){
t = p -> a[i];
p -> a[i] = p -> a[j];
p -> a[j] = t;
}
}
int main(void)
{
int i;
struct S s = {10, {2, 3, 1, 6, 8, 7, 5, 4, 10, 9}};
f(&s);
for(i = 0; i < s.n; i++)
printf("%d, ", s.a[i]);
return 0;
}
最终的输出结果就是C。这是在通过函数给结构中的数组a排序,从小到大。
从a[0]开始与a[1]比较,当a[0]>a[1]时就交换他们的值。内层循环会遍历a[i]之后的每一个值,和a[i]比较后将较小的值换到a[i]的位置上去。外层循环结束后,所有的值都会按照从小到大的顺序排列完毕。
答案是C
理由:
main函数里面首先对结构体s进行了初始化,然后调用函数f,进入函数f以后,里面就是一个选择排序算法,排序依据是从小到大排序,排序完成后在对里面的内容进行输出
选C.
解释:此处另一种形式的冒泡排序,且根据循环比较,此处为升序排序。
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!