C语言 冒泡排序法 数组

#include<stdio.h>

#include<string.h>

main()

{ char a[5][10]={“china”,”beijing”,”you”,”tiananmen”,”welcome”};

int i,j; char t[10];

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

  for(j=i+1;j<5;j++)

   if(strcmp(a[i],a[j])>0)

   { strcpy(t,a[i]);  strcpy(a[i],a[j]);  strcpy(a[i],t);}

 puts(a[3]);

是要找问题么

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

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

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

   { strcpy(t,a[j]);  strcpy(a[j],a[j+1]);  strcpy(a[j+1],t);}

 

#include<stdio.h>

#include<string.h>

int main()

{
    char a[5][10]={ "china", "beijing", "you", "tiananmen", "welcome"};
    char t[10];
    int i,j;

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

        for(j=i+1;j<5;j++)

            if(strcmp(a[i],a[j])>0)

            {
                strcpy(t,a[i]);
                strcpy(a[i],a[j]);
                //strcpy(a[i],t);
                strcpy(a[j],t);
            }

    for (i = 0; i < 5; i++)
        puts(a[i]);
}

供参考~

 

注意字符串双引号是英文的,不能是中文的。注意下表的操作;

冒泡排序的循环是:

for(i=0;i<n-1;i++)

    for(j=0;j<n-1-i;j++)

代码修改如下:

#include<stdio.h>
#include<string.h>
void main()
{
	char a[5][10]={"china","beijing","you","tiananmen","welcome"};
	int i,j; 
	char t[10];
	for(i=0;i<4;i++)
		for(j=0;j<4-i;j++)
			if(strcmp(a[i],a[j])>0)
			{
				strcpy(t,a[i]);
				strcpy(a[i],a[j]);
				strcpy(a[i],t);
			}

	puts(a[3]);
}