当前位置:首页 » 编程语言 » c语言字符串数组排序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符串数组排序

发布时间: 2022-02-02 01:18:42

A. 字符串数组排序(c语言)(qsort库函数)

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

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#defineN10 //字符串个数
#defineLN21 //限制字符串长度为20
intmycmp(constvoid*a,constvoid*b){//比较函数
char*pa=*(char**)a,*pb=*(char**)b;
intx=int(strlen(pa)-strlen(pb));//依长度比较
returnx?x:strcmp(pa,pb);//长度相等时依大小比较
}
intmain(void){
inti=0,j=0;
char*f[N],w[LN*N];//声明指针数组f和字符串总空间
printf("Input%dstring(s)(length<=%d)... ",N,LN);
while(i<N){//输入并将字符串首址赋给f[i]
if(scanf("%[1234567890]",f[i]=w+j)>0&&strlen(f[i])<LN)
i++,j+=LN;
elseprintf("Error,redo:Requiredlengthlessthan%d:",LN);
}
qsort(f,N,sizeof(char*),mycmp);//调用库函数对字符串指针排序
for(i=0;i<N;printf("%s ",f[i++]));//输出...
return0;
}

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

#include
#include
#include
#define
N
5
#define
SIZE
100
int
cmpOne(const
void
*a,
const
void
*b)
{
char
*p
=
(char
*)a;
char
*q
=
(char
*)b;
int
m
=
strlen(p);
int
n
=
strlen(q);
if
(m
!=
n)
{
return
(m
-
n);//按串长排序,由小到大
}
else
{
return
(*p
-
*q);//按首字母排序,由小到大
}
}
void
main(void)
{
int
i;
char
str[SIZE][SIZE];
for
(i=0;
i
评论
0
0
0
加载更多

C. c语言字符数组排序问题 看如下代码

#include <stdio.h>

#include <string.h>

int main()

{

char a[100], t;

int i, j, min;

int h = 0;

printf("请输入字符排序 ");

scanf("%s", a);

for (i = 0; a[i] != 0; i++)

{

min = i;

for (j = i + 1; a[j] != 0; j++)

{

if (a[j] < a[min])

min = j;

}

t = a[i];

a[i] = a[min];

a[min] = t;


}

printf("%s", a);

}

D. C语言 字符串数组字典排序

#include<stdio.h>
#include<string.h>

constintMAXLEN=100;
constintMAXSIZE=10;

voidsort(chartitle[][MAXLEN],intn){//排序
inti,j,k;
chartstr[MAXLEN];
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(strcmp(title[k],title[j])>0)
k=j;
}
if(k!=i){
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}

voidshow(chars[][MAXLEN],intn){
inti;
for(i=0;i<n;++i)
printf("%s",s[i]);
puts("");
}

intmain(void){
chars[MAXSIZE][MAXLEN];
inti;
for(i=0;i<MAXSIZE;++i){
printf("string(%02d/%d):",i+1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前: ");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序后: ");
show(s,MAXSIZE);
return0;
}

E. C语言中如何将10个字符串进行排序

#include<stdio.h>

#include<string.h>

int main()

{

int j,k,i,t,n;

char s[10][10],b[10][10];

for(i=0;i<10;i++)

{

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

}

n=strlen(s[1]);

k=0;

for(i=0;i<9;i++)

{

for(j=0;j<9-i;j++)

if(strcmp(s[j],s[j+1])>0)

{

for(k=0;k<n;k++)

b[j][k]=s[j][k];

for(k=0;k<n;k++)

s[j][k]=s[j+1][k];

for(k=0;k<n;k++)

s[j+1][k]=b[j][k];

}

}

for(i=0;i<10;i++)

{

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

}

return 0;

}

运行效果:

(5)c语言字符串数组排序扩展阅读:

scanf函数用法:

scanf("输入控制符",输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志''。

F. C语言中字符数组问题,字符串排序

同学您好,这是完全可以的
a[5][80]的意思是定义一个字符串数组a[5],每个字符串分配80个储存位置
a[5][80]里面的每一个元素是一个字符
而a[0],a[1]...a[4]则是5个字符串,明白了吗?
望采纳!

G. C语言里将学号存入字符串数组,怎样对其排序

截取 字符串 后 四位 然后转换为整型 就排序了。

H. C语言关于字符串数组排序

您好:scanf这个函数里头的用法出了点问题,建议单一的输入解决,scaf("%s",&a[0]);scanf("%s",&a[1]);等分开输入,如果是C++的输入问题就少多了。

I. C语言中的字符指针数组排序

完整程序如下:
#include<stdio.h>
void sort_string(char **p,int n){
int i,j;
char s[80];
for (i=0;i<n-1;i++){
for (j=i+1;j<n;j++){
if (strcmp(*(p+i),*(p+j))<0){
strcpy(s,*(p+i));strcpy(*(p+i),*(p+j));strcpy(*(p+j),s);
};};};
}

int main()
{
char *str[]={ "teacher", "student", "maneger", "employee", "telicent" };
int i,n=5;
sort_string(str,n);
for (i=0;i<n;i++) printf("%s\n",str[i]);
return 0;
}

J. c语言,对字符串数组进行排序,从键盘中输入一个6行的字符串,并将这六行的字符

参考代码:

#include<stdio.h>
#include<string.h>
#defineN100
intmain()
{
charstr[N][N],tmp[N];
inti,j,n;
printf("输入要输入的字符串的个数: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(str[i],str[j])>0)
{
strcpy(tmp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],tmp);
}
}
}
printf("排序后: ");
for(i=0;i<n;i++)
{
printf("%s ",str[i]);
}
return0;
}