在主程序中以自己的姓名拼音的英文字母初始化一个my _name字符数组,并编写排序函数void sort(char *p,int n),n为数组元素个数,在主程序中调用sort函数,并输出排序后的数组元素。编写程序并完成上机调试实现以上功能要求。-注:需要程序框图、代码清单、注释。(希望有人可以answer一下me)
我的思路是:
1、字符数组初始化为姓名字符串
2、调用sort函数排序这个字符串
3、sort函数用两个for循环逐一比较字符数组前面的字符和后面字符的ASCII码大小,如果前面的比后面的大,则交换他们的位置,从而达到排序字符数组元素的目的
4、打印结果。
代码如下:
#include <stdio.h>
#include <string.h>
void sort(char *p,int n){
int i,j;
char temp;
for(i=0;i<n-1;i++){
for(j=i;j<n;j++){
if(strcmp(p+i,p+j)>0){ //如果指针前面位置的字符的ASCII码比后面的大,则交换他们
temp = *(p+i);
*(p+i)=*(p+j);
*(p+j) = temp;
}
}
}
}
int main(void){
char my_name[20] = "xiaohua";
//strlen计算字符串的长度 ,传入sort函数
sort(my_name,strlen(my_name));
printf("%s\n",my_name);
}