C语言字符串排序函数指针 C语言指针排序

C语言:从键盘输入长度为10的字符串,除第一和最后一个字符外按降序排序,编写函数指针传递完成,咋写?

代码文本:

创新互联建站于2013年创立,是专业互联网技术服务公司,拥有项目成都网站制作、做网站、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元郏县做网站,已为上家服务,为郏县各地企业和个人服务,联系电话:18980820575

#include "stdio.h"

#define N 10

void myf(char *p){

char i,j,k,n;

for(n=0;p[n];n++);

for(n--,i=1;in-1;i++){

for(j=(k=i)+1;jn;j++)

if(p[k]p[j])

k=j;

if(k!=i)

j=p[k],p[k]=p[i],p[i]=j;

}

}

int main(int argc,char *argv[]){

char s[N+1];

printf("Enter a string(length 10)...\n");

scanf("%10s",s);

printf("After ordering:\n");

myf(s);

puts(s);

return 0;

}

c语言 指针 字符串 排序

对指针数组分配个长度

可以这样

{

s[i]

=

(char

*)malloc(sizeof(char)

*

1024);

scanf("%s",s[i]);

}

最后记得释放

for(i=0;iz;i++)

{

printf("%s:\t",s[i]);

free(s[i]);

}

字符串数组排序(C语言)(qsort库函数)

声明一个字符串指针数组存放每个字符串的首地址,调用库函数qusort按题目要求对字符串指针排序,不移动源字符串。关键是要设计一个好的比较函数,精巧地解决“按长度、长度相等时按大小”排序的问题。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#define N 10 //字符串个数

#define LN 21 //限制字符串长度为20

int mycmp(const void *a,const void *b){//比较函数

char *pa=*(char **)a,*pb=*(char **)b;

int x=int(strlen(pa)-strlen(pb));//依长度比较

return x ? x : strcmp(pa,pb);//长度相等时依大小比较

}

int main(void){

int i=0,j=0;

char *f[N],w[LN*N];//声明指针数组f和字符串总空间

printf("Input %d string(s)(length=%d)...\n",N,LN);

while(iN){//输入并将字符串首址赋给f[i]

if(scanf(" %[1234567890]",f[i]=w+j)0  strlen(f[i])LN)

i++,j+=LN;

else printf("Error, redo: Required length less than %d:",LN);

}

qsort(f,N,sizeof(char *),mycmp);//调用库函数对字符串指针排序

for(i=0;iN;printf("%s\n",f[i++]));//输出...

return 0;

}

c语言用指针数组对10个字符串排序(形参是如何影响原函数的?)

C里面的字符串最后都是以数0(也就是

'\0'

这个符号)来表示结尾的。

计算字符串的长度的函数在头文件string.h已经提供了,也就是这个strlen(const

char

*)。

然后呢,就是表示字符串的数组了,在C里字符串虽然是数组实现的,但现在这个字符串数组的意思却是“由字符串组成的数组”,而不是“组成字符串的数组”。

字符串是数组,是字符数组,数组的名称就是这个数组的首地址,字符串的名称就是这个字符串的首地址,存放字符串的数组存放的那就是首地址了,也好办,就是:

char

**array;

我们来具体给他赋值:

1,给这个存放首地址的数组分配内存空间

int

Size=10;

char

**array=(char

**)malloc(

Size

*

sizeof(char

*)

);

2,然后给它的每一个元素赋上每一个字符串的首地址

array[0]="什么JB玩意";

array[1]="逗你玩呢";

....

3,然后根据字符串长度排序:

int

i;

char

*swap;

for(i=0;iSize-1;i++){

if(strlen(array[i])strlen(array[i+1])){

swap=array[i];

array[i]=array[i+1];

array[i+1]=swap;

}

}

4,排序好后输出:

for(i=0;iSize;i++)

printf(array[i]);

好了,就这些了

C语言用指针对多个字符串排序的问题

if(strcmp(str[i],str[j]0))写错了,应该是if(strcmp(str[i],str[j])0)。

这函数排序对象是char *型指针,所以主调函数中应该是char *a[5]={"jf","ufdiso",...};这倦定义的指针数组,而不能是char a[][5]这种类型的二维数组——因为这样定义的数组名是常指针,不能另外赋值……举例如下:

#include "stdio.h"

#include string.h

void sort(char *str[],int n){

int i,j;

char *p;

for(i=0;in-1;i++)

for(j=i+1;jn;j++)

if(strcmp(str[i],str[j])0)//你的代码这里写错了

p=str[i],str[i]=str[j],str[j]=p;

}

int main(int argc,char *argv[]){

char *a[5]={"12345","hfdjsk","ABCDE","iunvuu876","fff"};//这样定义

//而不能char a[][5]...这样定义

sort(a,5);

printf("%s\n%s\n%s\n%s\n%s\n",a[0],a[1],a[2],a[3],a[4]);

return 0;

}

运行结果:

c语言如何用指针排列字符

#include stdio.h

#include string.h

void sort_str(char *str) { // 选择排序

//待补全部分

int i,j,k,t,len = strlen(str);

for(i = 0; i  len - 1; ++i) {

k = i;

for(j = i + 1; j  len; ++j) {

if(str[k]  str[j])

k = j;

}

if(k != i) {

t = str[k];

str[k] = str[i];

str[i] = t;

}

}

}

int main() {

char str[101];

scanf("%s", str);

sort_str(str);//对字符串进行排序

printf("%s\n", str);

return 0;

}


文章题目:C语言字符串排序函数指针 C语言指针排序
文章转载:http://scyanting.com/article/hhoech.html