字符串排序 C语言编程

2024-12-05 08:05:35
推荐回答(4个)
回答1:

#include<stdio.h>

#include<string.h>

#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(ct<LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='\0')

{

ptstr[ct]=input[ct];

ct++;

}

stsrt(ptstr,ct);

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

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

{

puts(ptstr[k]);

}

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

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

{

puts(input[k]);

}

return 0;

}

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

{

char*temp;

int top,seek;

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

{

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

{

if(strcmp(strings[top],strings[seek])>0)

{

temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

}

}

扩展资料:

printf函数使用注意事项

1、域宽

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

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

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

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

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

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

2、转义字符

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

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

回答2:

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

回答3:

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

回答4:

#include

#include
int main(void)
{
void sort(char s[][11]);
char str[10][11];
int i;
for(i=0;i<10;i++)
scanf("%s",str[i]);
sort(str);
for(i=0;i<10;i++)
printf("%s ",str[i]);
putchar('\n');
return 0;
}
void sort(char s[][11])
{
int i,j;
char tmps[11];
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(strcmp(s[i],s[j])>0)
{
strcpy(tmps,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],tmps);
}
}