有以下程序 struct S{int n;int a[20];}; voidf (struct S *p) {int i,j,t; for(i=0;i<p->n-1;i+ +) for(j=i+1;j<p->n;j+ +) if(p->a[i]>p->a

admin2018-10-16  14

问题 有以下程序
struct S{int n;int a[20];};
voidf (struct S  *p)
{int i,j,t;
for(i=0;i<p->n-1;i+ +)
for(j=i+1;j<p->n;j+ +)
if(p->a>p->a[j]){t=p->a;p->a=p->a[j];p->a[j]=t;}
}
main( )
{ int i;  struct S s={10,{2,3,l,6,8,7,5,4,10,9}};
f(&s);
for(i=0;i<s.n;i+ +) printf("%d,",s.a);
}

选项 A、10,9,8,7,6,5,4,3,2,1,
B、2,3,1,6,8,7,5,4,10,9,
C、10,9,8,7,6,1,2,3,4,5,
D、1,2,3,4,5,6,7,8,9,10,

答案D

解析 void f(struct S *p )函数的功能使用了结构体指针变量实现对一维数组的元素从小到大排序。用关系表达式p->a>p->a[j]实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句f(&s);的功能实现对结构体变量s中一维数组的元素从小到大的排序,所以循环语句的输出结果为1,2,3,4,5,6,7,8,9,10。
转载请注明原文地址:https://kaotiyun.com/show/ouxp777K
0

随机试题
最新回复(0)