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

c语言编写字符串排序

发布时间: 2023-05-31 17:24:56

c语言字符串排序

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX 10

void stsrt(char *str[],int num);
void ASC(char *str[],int num);
void length_add(char *str[],int num);
void word_length(char *str[],int num);

int main(void) {
char *s[MAX],t[80];
int i = 0,n;
printf("输入%d个字符串 :\n",MAX);
for(i = 0; i < MAX; ++i) {
if(gets(t) && t[0] != '\0') {
s[i] = (char *)malloc(80 * sizeof(char));
strcpy(s[i],t);
}
else break;
}
while(i < MAX && gets(s[i]) && s[i][0] != '\0') i++;
puts("选择:");
puts("1.输出初始字符串行表");
puts("2.按ASCⅡ码顺序输出字符串");
puts("3.按长度递增顺序输出字符串");
puts("4.按字符串第一个单词长度输出字符串");
puts("5.结束");
while(scanf("%d",&n) != 5) {
switch(n) {
case 1:stsrt(s,i);break;
case 2:ASC(s,i);break;
case 3:length_add(s,i);break;
case 4:word_length(s,i);break;
case 5:return 0;
default:puts("输入错误!");
}
}
return 0;
}

void stsrt(char *str[],int num) { //1.输出初始字符串行表
int n;
for(n = 0;n < num;n++) puts(str[num]);
}

void ASC(char *str[],int num) {//2.按ASCⅡ码顺序输出字符串
int top,seek;
char *temp;
for(top = 0;top < num - 1;top++) {
for(seek = top + 1;seek < num;seek++)
if(strcmp(str[top],str[seek]) > 0) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
for(int n = 0;n < num;n++) puts(str[n]);
}

void length_add(char *str[],int num) { //3.按长度递增顺序输出字符串
char *temp;
int top,seek;
for(top = 0;top < num - 1;top++) {
for(seek = top + 1;seek < num;seek++)
if(strlen(str[top]) > strlen(str[seek])) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
for(int n = 0;n < num;n++) puts(str[n]);
}

void word_length(char *str[],int num) {//4.按字符串第一个单词长度输出字符串
char *temp;
int top,seek,n,j,len[MAX];
for(n = 0; n < num; ++n) {
len[n] = 0;
j = 0;
while((str[n][j] != ' ') && str[n][j]) {
++len[n];
++j;
}
}
for(top = 0;top < num - 1;top++) {
for(seek = top + 1; seek < num;seek++) {
if(len[top] > len[seek]) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
}
for(n = 0;n < num;n++) puts(str[n]);
}

Ⅱ c语言字符串排序问题!

main()
{
char st[100],cs[3][100]; //假设该字符串长度都在100个以内
int i,j,p;
printf("please input strings one by one:\n");
for(i=0;i<3;i++)
gets(cs[i]); //读取字符串,放在CS数组里面
printf("\n");
for(i=0;i<3;i++)
{ p=i;strcpy(st,cs[i]);//把CS数组中第i+1行的字符串拷贝给st数组
for(j=i+1;j<3;j++)
if(strcmp(cs[j],st)>0) {p=j;strcpy(st,cs[j]);}//把st(也就是CS〔i〕依次跟它后面的按照ASCII码顺序(strcmp)比较.CS〔j]大的话,就把它拷贝给st数组(也就是给ST数重赋值)。
if(p!=i) //如果p!=i的话,那么说明cs[i]的后面有一个cs[p]比它大
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}//交换cs[i]和cs[p]的值,目的是把cs[p](ASCII码比较大的)的值放到前面,
puts(cs[i]);//输出cs[i],这个时候的cs[i]是跟在它后面的所有元素比较过的,它是在后面所有元素里面最大的。
} //3次循环,按从大到小分别3次输出cs[i]
printf("\n");
}

你要是想比较N个字符串的话,可以把里面的3改成N就行了。

Ⅲ C语言编程题,输入5个字符串,然后排序

#define LINEMAX 20/*定义字符串的最大长度*/

int main()

{int i;

char**p,*pstr[5],str[5][LINEMAX];

for(i=0;i&lt;5;i++)

pstr&lt;i&gt;=str&lt;i&gt;;/*将第i个字符串的首地址赋予指针数组pstr的第i个元素*/

printf("input 5 strings: ");

for(i=0;i&lt;5;i++)

scanf("%s",pstr&lt;i&gt;);

p=pstr;

sort(p);

printf("strings sorted: ");

for(i=0;i&lt;5;i++)

printf("%s ",pstr&lt;i&gt;);

}

sort(char**p)/*冒泡法对5个字符串排序函数*/

{int i,j;

char*temp;

for(i=0;i&lt;5;i++)

{for(j=i+1;j&lt;5;j++)

{if(strcmp(*(p+i),*(p+j))&gt;0)/*比较后交换字符串地址*/

{temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

return 0;

}

(3)c语言编写字符串排序扩展阅读:

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d ",a);

输出结果为a=1234。

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include&lt;stdio.h&gt;。

int scanf(const char*restrict format,...);

函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

如:

scanf("%d%d",&a,&b);

函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。

Ⅳ c语言进行字符串排序

#include<stdio.h>#include<string.h>#define N 10void main(){ int i,j; char str[N+1][20]; 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(str[N],str[i]); strcpy(str[i],str[j]); strcpy(str[j],str[N]); } for(i=0;i<N;i++) if(i!=N-1) printf("%s ",str[i]); else printf("%s\n",str[i]);}

Ⅳ C语言如何在键盘中输入一个数字字符串并进行排序

楼主你好!

根据你的要求,我使用冒泡排序法,帮写个了程序,代码及运行结果如下!如果有不正确之处,请广大好手指正!谢谢!

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

intmain(){

chara[100];

inti,j;

printf("请输入字符串: ");

scanf("%s",a);

for(i=0;i<strlen(a);i++)

for(j=0;j<strlen(a)-1-i;j++){

chartemp;

if(a[j]<=a[j+1]){

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

printf("排序后的字符串: %s ",a);

return0;

}

希望我的回答对你有帮助!

Ⅵ 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;

}

运行效果:

(6)c语言编写字符串排序扩展阅读:

scanf函数用法:

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

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

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

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

Ⅶ c语言字符串排序

#include&lt;stdio.h&gt;

#include&lt;string.h&gt;

#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. ",LIM);

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

while(ct&lt;LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='')

{

ptstr[ct]=input[ct];

ct++;

}

stsrt(ptstr,ct);

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

for(k=0;k&lt;ct;k++)

{

puts(ptstr[k]);

}

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

for(k=0;k&lt;ct;k++)

{

puts(input[k]);

}

return 0;

}

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

{

char*temp;

int top,seek;

for(top=0;top&lt;num-1;top++)

{

for(seek=top+1;seek&lt;num;seek++)

{

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

{

temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

}

}

(7)c语言编写字符串排序扩展阅读:

printf函数使用注意事项

1、域宽

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

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

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

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

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

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

2、转义字符

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

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

Ⅷ 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]);}。

运行代码:

(8)c语言编写字符串排序扩展阅读

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

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

这可以把字符串输入到字符数组中,然后采用排序的方法来实现:
(需要包含<string.h>头文件)
char t,s[200];
int i,i;
gets(s);
for(i=0;i<strlen(s)-1;i++)
for(j=0;j<strlen(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语言:将输入的字符串按首字母顺序排列。

#include<stdio.h>

#include<string.h>

void sort(char *a[]);

void print(char *a[]);

int main()

{

char *a[] ={"ceo","define","basic","abc","empty"};

printf("原来的序列是: ");

print(a);

sort(a);

printf(" 排序后的序列是: ");

print(a);

printf(" ");

return 0;

}

void sort(char *a[])

{

int i,j;

char *temp;

for(i=0;i<4;i++)//注意是i<4

{

for(j=0;j<4;j++)//注意是j<4,因为下面要+1和后面的那个字符串比较

{

if(strcmp(a[j],a[j+1])>0)//字符串比较:>0表示前面的字符串比后面的大则交换

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

}

void print(char *a[])

{

int i;

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

{

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

}

}

运行效果:

(10)c语言编写字符串排序扩展阅读:

return 0的用法:

return的作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式。

函数的定义一般是这样的,例如:

inta(inti)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字

...//省略函数体内容

returnb;//b必须与函数头的返回值一致(此处为int型)

简单函数举例:

intaddOne(intb)

returnb+1;

该函数的作用是取得一个数,将这个数加上1,再将结果返回

调用时这样:

intresult=addOne(2);//此时result的值为3

函数括号里的参数也可以为变量或能算出值的表达式

以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char,a[](数组),*a(指针),结构或类(c++)

但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如voidprint()//括号中为空表示无传递参数、

printf("a");

printf("b");

return;//函数执行到此处结束

printf("c");

}//该函数只执行到return语句处,即屏幕上输出的为"ab"