林韦君现在的老公:c语言对a所指数组重的数据进行由大到小的排序

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 23:33:24
14.31
以下程序中函数sort的功能是对a所指数组重的数据进行由大到小的排序
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");}

程序运行后输出的结果是
1,2,3,4,5,6,7,8,9,10
为什么?
void sort(int a[], 是什么意思
{int aa[10]={1,2,3,4,5,6,7,8,9,10},是什么意思
sort(&aa[3],5); 是什么意思

14.33有以下程序
main() {char a[]={'a','b','c','d','e','f','g','h','\0',}; int i,j;
i=sizeof(a); j=strlen(a);printf("%d,%D\n",i,j);}

输出结果:9,8
char a[]={'a','b','c','d','e','f','g','h','\0',}; 是什么意思
i=sizeof(a);是什么意思
j=strlen(a);是什么意思

在前面应该加上#include<stdio.h>
#include<stdio.h> /*输入输出函数都要用到这个库文件*/
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");}
这运行后输出来的结果是1,2,3,8,7,6,5,4,9,10,
这个程序在个函数调用加排序问题
void sort(int a[], int n)这个函数是按大到小排序,而且只从参数a[]开始,比较n个数,int a[], int n表示定义里面的参数类型,a为整形数组,n为整数.
sort(&aa[3],5); 这一句表示将主函数中的参数传递给子函数void sort(int a[], int n),参数&aa[3]表示数组aa[3]的地址,5表示一个整数,在子函数中从aa[3]地址开始的5个数进行从大到小排序,aa[3]的地址是4那个位置.所以整个程序就是实现从4-8进行从大到小的排序.int aa[10]={1,2,3,4,5,6,7,8,9,10}是表示在主函数中定义aa整形数组大小为10且给它赋上初值,值为1,2,3,4,5,6,7,8,9,10.

14.33:
char a[]={'a','b','c','d','e','f','g','h','\0',}也是跟上面的一样定义字符数a且赋初值,'\0'是表示结束字符.
i=sizeof(a)是求数组a的长度.
j=strlen(a)也是求它的长度,不过这个不包括结束字符.

靠!