
各位C语言的高手们,小弟今个遇到一道:将若干字符串按字母顺序(由小到大)输出,问题在下面 5
#include<stdio.h>#include(string.h>intmain(){voidsort(char*name[],intn);voidprintf(ch...
#include<stdio.h>
#include(string.h>
int main()
{
void sort(char * name[],int n);
void printf(char *name[],int n);
char * name[]={"Follow me","BASIC",Great Wall","FORTRAN","Computer design"};
int n=5;
sort(name,n);
printf(name,n);
system("pause");
returen 0;
}
void sort(char * name[],int n)
{
int i,j,k;
char * temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(name[k],name[j])>0) k=j; /*求各位大侠解释一下这句话的含义啊?name[k]和[j]明明是两个字符串的首地址,为什么可以直接拿来作比较呢*/
}
if (k!=i)
{temp=name[i];name[i]=name[k];name[k]=temp;}
}
}
void printf(char * name[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",name[i]);
return 0;
} 展开
#include(string.h>
int main()
{
void sort(char * name[],int n);
void printf(char *name[],int n);
char * name[]={"Follow me","BASIC",Great Wall","FORTRAN","Computer design"};
int n=5;
sort(name,n);
printf(name,n);
system("pause");
returen 0;
}
void sort(char * name[],int n)
{
int i,j,k;
char * temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(name[k],name[j])>0) k=j; /*求各位大侠解释一下这句话的含义啊?name[k]和[j]明明是两个字符串的首地址,为什么可以直接拿来作比较呢*/
}
if (k!=i)
{temp=name[i];name[i]=name[k];name[k]=temp;}
}
}
void printf(char * name[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",name[i]);
return 0;
} 展开
2个回答
展开全部
strcmp的函数原型是:
int strcmp(const char *, const char *)
name是char *的数组,所以每个name[i]都是char *
int strcmp(const char *, const char *)
name是char *的数组,所以每个name[i]都是char *
追问
我只想问一下strcmp(name[k],name[j])>0,中name[k]与name[j]到底比较什么东西啊,是字符串元素的首地址吗,还是别的啊?
追答
比较的是字符串,因为一个C语言的字符串是以\0结尾的,但是每个有效字符都不是\0,所以strcmp得到字符串的地址之后就可以读出整个字符串,从而完成比较~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询