求教,请问下这个C语言程序哪里有问题的呢?是字符串排序,用指针做的。

2025-05-23 16:40:03
推荐回答(6个)
回答1:

#include
#include
void main()
{

char num[5]={'\0'};
char * p=num;
char t;

int i,j;
p=num;
for(i=0;i<5;i++){
scanf("%c",&num[i]);
}
for(i=0;i<4;i++){
for(j=i+1;j<5;j++)
{
if( *(p+i)-*(p+j)>0 )
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;

}
}
}
for(i=0;i<5;i++)
printf("%c\n",p[i]);
}
你的程序明显是字符排序,不是字符串排序,但是程序用混用了字符串和字符的一些操作。

回答2:

//改正了错误,去除多余的{}。
#include
#include
void main()
{

char num[5][64]; //指针数组
char (*p)[64];
char t[64];
int i,j;
p=num;
for(i=0;i<5;i++)
scanf("%s",num[i]);
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if( strcmp(*(p+i),*(p+j))>0 )
{
strcpy(t,*(p+i));
strcpy(*(p+i),*(p+j));
strcpy(*(p+j),t);

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

回答3:

#include
#include
void main()
{

char num[50]={0}; //指针数组
char t;
int i,j,n;
scanf("%s",num);
n=strlen(num);
for(i=0;i for(j=0;j {
if( *(num+j)>*(num+j+1) )
{
t=*(num+j);
*(num+j)=*(num+j+1);
*(num+j+1)=t;

}
}
}
printf("%s\n",num);
}

回答4:

char t[64];改为char t;

回答5:

char num[5]={0}; 这是指针数组???

回答6:

不懂