首页 > 编程知识 正文

字符串中字符的排序c语言,c语言对字符数组中字符排序

时间:2023-12-29 20:31:56 阅读:330910 作者:AEIR

本文目录一览:

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

#includestdio.h

#includestring.h

int main()

{

int j,k,i,t,n;

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

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

{

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

}

n=strlen(s[1]);

k=0;

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

{

for(j=0;j9-i;j++)

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

{

for(k=0;kn;k++)

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

for(k=0;kn;k++)

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

for(k=0;kn;k++)

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

}   

}

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

{

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

}

return 0;

}

运行效果:

扩展资料:

scanf函数用法:

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

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

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

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

c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出

代码如下:

#define N 10 int main(){char str[N][100]; int i,j; 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) { char temp[100]; strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp);} } } for(i = 0; i N; i ++)  puts(str[i]);}。

运行代码:

执行结果:

扩展资料

在C语言编程中,常常需要对字符串比较和排序,经常遇到对字符串整体的控制等操作,strcmp 比较str1和str2的大小,而其它的c函数strlen(),字符串拷贝函数strcpy()/strncpy(),字符串比较函数 strcmp(),字符串连接函数strcat()/strncat()等,都可以帮助我们快速方便的对字符串操作。

参考资料:百度百科-C语言

C语言中输入一串字符,怎样让它按照字母从小到大的顺序排列?

这可以把字符串输入到字符数组中,然后采用排序的方法来实现:

(需要包含string.h头文件)

char t,s[200];

int i,i;

gets(s);

for(i=0;istrlen(s)-1;i++)

for(j=0;jstrlen(s)-1-i;j++)

if(s[j]s[j+1])

{t=s[j]; s[j]=s[j+1]; s[j+1]=t;}

puts(s);

字符串排序 C语言编程

#includelt;stdio.hgt;

#includelt;string.hgt;

#define SIZE 91

#define LIM 31

#define HALT""

void stsrt(char*strings[],int num);

int main(void)

{

char input[LIM][SIZE];

char*ptstr[LIM];

int ct=0;

int k=0;

printf("input up to%d lines,and I will sort them.n",LIM);

printf("To stop,press the enter key at a line's start.n");

while(ctlt;LIMgets_s(input[ct],100)!=NULLinput[ct][0]!='')

{

ptstr[ct]=input[ct];

ct++;

}

stsrt(ptstr,ct);

puts("n here's the sorted list:n");

for(k=0;klt;ct;k++)

{

puts(ptstr[k]);

}

puts("n here's the list:n");

for(k=0;klt;ct;k++)

{

puts(input[k]);

}

return 0;

}

void stsrt(char*strings[],int num)

{

char*temp;

int top,seek;

for(top=0;toplt;num-1;top++)

{

for(seek=top+1;seeklt;num;seek++)

{

if(strcmp(strings[top],strings[seek])gt;0)

{

temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

}

}

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md--gt;m域宽,打印出来以后,在控制台上,显示m位;

如果我们要打印的数的位数如果超过我们设定m则原样输出;

如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

c语言字符串排序

你有两个错误,一是C的变量定义必须在所有语句之前,二是字符串不能赋值,必须使用strcpy函数,修改后的程序代码和运行结果如下:

$ cat a.c

#includestdio.h

#includestring.h

void Solve();

void sort(char *name[], int n);

int main()

{

Solve();

return 0;

}

void Solve()

{

int i,n;

char name[100][100];

scanf("%d",n);

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

{

gets(name[i]);

}

sort(name,n);

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

{

puts(name[i]);

}

}

void sort(char *name[100], int n)

{

int i,j,k;

char *temp;

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

{

k=i;

for(j=i+1;jn;j++) if(strcmp(name[k],name[j])0) k=j;

if (k!=i)

{

{

strcpy(temp,name[i]);

strcpy(name[i],name[k]);

strcpy(name[k],temp);

}

}

}

}

$ cc a.c

"a.c", line 19: warning #2167-D: argument of type "char (*)[100]" is

incompatible with parameter of type "char **"

sort(name,n);

^

$ a.out

6dkjlfhgjkshdfjkgh

1kdfghj

3dkjfhghd

2dlkfjgklj

5ldfkhlkj

4dflkghklj

1kdfghj

3dkjfhghd

2dlkfjgklj

5ldfkhlkj

4dflkghklj

$ cc -V

cc: HP C/aC++ B3910B A.06.25 [Nov 30 2009]

/cq/u/cqjsdba/ygb

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。