首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

字符串的冒泡排序(一定要用c语言)

发布网友 发布时间:2022-04-24 11:18

我来回答

5个回答

热心网友 时间:2022-05-22 03:06

1、首先新建一个控制台应用程序。

2、接着准备整型的数组,后面排序好用。

3、然后进行for嵌套,注意内外嵌套的写法。

4、接着在内层嵌套中进行数据比较,然后进行排序。

5、接着就是对排序后的数组进行打印一下。

6、最后我们可以看到冒泡排序后的结果了。

热心网友 时间:2022-05-22 04:24

冒泡排序代码:

#include<stdio.h>

#include<string.h>

void sort(char *a[]);

void print(char *a[]);

int main()

{

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

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

print(a);

sort(a);

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

print(a);

printf("\n");

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]);

}

}

扩展资料

printf函数使用注意事项

1、域宽

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

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

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

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

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

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

2、转义字符

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

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

热心网友 时间:2022-05-22 05:58

#include <stdio.h>
#include <string.h>
#define N 5
#define MAX_LEN 100  //字符串最大长度

//冒泡排序(升序)
void bubbleSort(char (*pt)[MAX_LEN],int n)  //形参pt为指向二维字符数组的指针
{
int i,j;  //i表示趟数,j表示第i趟两两比较的次数
char tmp[MAX_LEN];  //临时字符数组
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(pt[j],pt[j+1]) > 0)  //字符串进行两两大小比较,如果>0,则执行if语句体
{//两个字符串进行交换操作
strcpy(tmp,pt[j]);
strcpy(pt[j],pt[j+1]);
strcpy(pt[j+1],tmp);
}
}
int main()
{
char str[N][MAX_LEN];  //定义二维字符数组
int i;
printf("输入字符串:\n");
for(i=0;i<N;i++)
scanf("%s",str[i]);
bubbleSort(str,N);//调用排冒泡序函数
printf("输出排序后的字符串:\n");
for(i=0;i<N;i++)
printf("%s\n",str[i]);
return 0;
}

示例运行结果:

热心网友 时间:2022-05-22 07:50

File Edit Options Buffers Tools C++ Help                                                                                                                                           
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void show(char str[][20],int n)
{
  int i;
  for(i=0;i<n;i++)
    printf("%s\n",str[i]);

}
int main()
{

  int i,j,n,k;
  char str[200][20];
  char ch[20];
  scanf("%d %d",&n,&k);
  for(i=0;i<n;i++)
    {

      scanf("%s",str[i]);
      getchar();
    }
  for(i=0;i<k;i++)
    {
      for(j=1;j<n;j++)
        {
          if(strcmp(str[j-1],str[j])>0)
            {
              strcpy(ch,str[j-1]);
              strcpy(str[j-1],str[j]);
              strcpy(str[j],ch);
            }
        }
    }
  printf("\n");
  show(str,n);
return 0;
}

热心网友 时间:2022-05-22 09:58

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int i,j,N,K;
printf("enter N\n");//字符串个数
scanf("%d",&N);
printf("enter char array\n");
char *str;
str=(char *)malloc(10*(sizeof(char)));
char *ch[N];
for(i=0;i<N;i++){
ch[i]=(char *)malloc(10*sizeof(char));
scanf("%s",ch[i]);//读取输入的字符串
}
for(i=0;i<N-1;i++){
for(j=0;j<N-1-i;j++){
if((strcmp(ch[j],ch[j+1]))>0){
str=ch[j+1];
ch[j+1]=ch[j];
ch[j]=str;
}
}
}
for(i=0;i<N;i++){
printf("%s\n",ch[i]);
}
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com