C语言题目..........

来源:百度知道 编辑:UC知道 时间:2024/09/18 06:58:04
void sort(int a〔〕,int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a〔i〕<a〔j〕){t=a〔i〕;a〔i〕=a〔j〕;a〔j〕=t;}
}
main()
{ int aa〔10〕={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa〔3〕,5);
for(i=0;i<10;i++)printf("%d,",aa〔i〕);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
我不会做,我只是想知道为什么选?为什么不选!
我知道答案,就是不知道为什么,你们不要那样说,我在这里问,也有我的理由,你不想回答,可以走人的!!!!!

void sort(int a〔〕,int n)
{ int i,j,t;
for(i=0;i<n-1;i++)/*以下功能是从接受来的&aa〔3)的地址,值为4开始后的5个元素(参加排序的元素为:45678)进行由大到小的降序排列!*/
for(j=i+1;j<n;j++)/*下面IF语句的功能是完成从大到小排序*/
if(a〔i〕<a〔j〕)/*这里要注意下,很容易会让人搞成从小到大排序的,如果改为if(a〔i〕>a〔j〕)就是从大到小排序了*/
{t=a〔i〕;a〔i〕=a〔j〕;a〔j〕=t;}
}
main()
{ int aa〔10〕={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa〔3〕,5); /*这里是将&aa〔3〕的地址传过去(地址传递)即sort(4,5)传给上面的void sort(int a〔〕,int n) */
for(i=0;i<10;i++)printf("%d,",aa〔i〕);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
答案为C
我想你这道题的难点是在传递过去的是从&aa〔3〕所指元素开始排序,因为N=5,所以共有5个元素参加排序!
还有一个要理解的就是到底是按从大到小还是从小到大排序!

多看点全国计算机等级考试二级C语言的书,会对你有帮助的!里面有很多这样的精选题,且有解析过程!
最后祝你学业进步!

选C
是这样啊:
关键在这里
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
if语句