问题 单项选择题

有以下程序:
struct Sint n;int a[20];;
void f(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[j])t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;

main()
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]);

程序运行后的输出结果是

A) 1,2,3,4,5,6,7,8,9,10,
B) 10,9,8,7,6,5,4,3,2,1,
C) 2,3,1,6,8,7,5,4,10,9,
D) 10,9,8,7 ,6,1,2,3,4,5,

答案

参考答案:A

解析: 本题考查的是结构体成员的引用。在主函数main()中定义了一个整型变量i和一个结构体变量s。f()函数中,定义了一个结构体类型的指针p,外层循环变量i表示数组的第i个元素,内层循环变量j表示数组的第i+1个元素,调用f()函数,通过指针变量p来引用结构体成员。执行if语句,当p->a[i]>p->a[j]时进行互换,其作用就是从小到大进行排序,最后将排序后的元素输出:1,2,3,4,5,6,7,8,9,10,。

综合题
单项选择题