C语言:这道题这么作为什么不对呢????????、、、、、

来源:百度知道 编辑:UC知道 时间:2024/09/26 10:44:09
输入书名,N本对书名进行排序(选择法或冒泡法) 选择法(假设降序:找到最大的 和第一个交换 找到第二大的 和第二大交换)

#include<string.h>
#include<stdio.h>
void main()
{char *name[5]={"c language","Basic","chinese","English","VC"};
int i,j,k,temp;
for(i=0;i<5;i++)
{k=i;
for(j=k+i;j<5;j++)
{if(strcmp(name[k],name[j])>0)

temp=*name[i];*name[i]=*name[k],*name[k]=temp;

}
for(i=0;i<5;i++)
printf("%4d",*name[i]);
printf("\n");

}

}
#include<string.h>
#include<stdio.h>
void main()
{char *name[5]={"c language","Basic","chinese","English","VC"};
int i,j,k;
char temp;
for(i=0;i<5;i++)
{k=i;
for(j=k+i;j<5;j++)
{if(strcmp(name[k],name[j])>0)

temp=*name[i];*name[i]=*name[k],*nam

你的temp的变量定义的不对,它应该是存放字符串的,所以应该定义为字符串变量! 而且你的大括号,不能放在if前,应该放在temp前边 ,最后输出时用%s来控制,这是语法错误。
交换时,应该K和J交换吧,这是算法错误。
这是正确的:
#include<string.h>
#include<stdio.h>
void main()
{char *name[5]={"c language","Basic","chinese","English","VC"};
int i,j=1,k=0;
char *temp;
for(i=0;i<4;i++)
{k=i;
for(j=k+1;j<5;j++)
if((strcmp(name[k],name[j]))>0)

{ temp=name[j];name[j]=name[k];name[k]=temp;

}
}
for(i=0;i<5;i++)
printf("%s\n",name[i]);
printf("\n");
}

#include<string.h>
#include<stdio.h>
#define MAX 100 //假设这个字符串变量大小不超过100
void main()
{char *name[5]={"c language","Basic","chinese","English","VC"};
int i,j,k;
char temp[MAX];
for(i=0;i<5;i++)
{k=i;
for