你自己的是对的啊.
要对自己有信心.
#include
#include
main()
{
char str[4][20];
char *p[4],**pp=p,*temp;
int i,j;
for(i=0;i<4;i++)
{ p[i]=str[i];
printf("Input the NO.%d string:",i+1);
scanf("%s",p[i]);
}
for(i=0;i<3;i++)
for(j=i+1;j<4;j++) /*改了这里.*/
if(strcmp(pp[i],pp[j])>0)
{ temp=pp[i];
pp[i]=pp[j]; /*改了这里.*/
pp[j]=temp;
}
for(i=0;i<4;i++)
printf("%s ",pp[i]);
printf("\n");
getch();
return;
}
己经验证过了,正确
我知道了。。。
#include
#include
main()
{
char str[4][20];
char *p[4],**pp=p,*temp;
int i,j;
for(i=0;i<4;i++)
{ p[i]=str[i];
printf("Input the NO.%d string:",i+1);
scanf("%s",p[i]);
}
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
if(strcmp(pp[j],pp[j+1])>0)
{ temp=pp[j];
pp[j]=pp[j+1];
pp[j+1]=temp;
}
for(i=0;i<4;i++)
printf("%s ",pp[i]);
printf("\n");
}
temp=pp[j];
pp[j]=pp[j+1];
pp[j+1]=temp;
你看一下。你这个哪里错了。。。
if(strcmp(pp[j],pp[j+1])>0)
{ temp=pp[j];
pp[j]=pp[j+1];
pp[i+1]=temp; //改成pp[j+1]=temp;
}
书上的印刷错误,以后有这样的问题看看大小写,标点符号,相似字母什么的就行了。
//书上用的是冒泡排序法,有一处将j写成了i,因此报错,改成下面这样就行了
#include
#include
main()
{
char str[4][20];
char *p[4],**pp=p,*temp;
int i,j;
for(i=0;i<4;i++)
{
p[i]=str[i];
printf("Input the NO.%d string:",i+1);
scanf("%s",p[i]);
}
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
if(strcmp(pp[j],pp[j+1])>0)
{ temp=pp[j];
pp[j]=pp[j+1];
pp[j+1]=temp; //修改了这一行
}
for(i=0;i<4;i++)
printf("%s ",pp[i]);
printf("\n");
}