字符串排序
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
输入3个字符串,按字典序从小到大进行排序。
Input
输入数据有一行,分别为3个字符串,用空格分隔,每个字符串长度不超过100。
Output
输出排序后的三个字符串,用空格分隔。
Example Input
abcd cdef bcde
Example Output
abcd bcde cdef
先贴出本题AC代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
char a[5][150], *p[5], *s;
for(i=0;i<3;i++)
{
p[i]=a[i];
}
for(i=0;i<3;i++)
{
scanf("%s", a[i]);
}
for(i=0;i<2;i++)
{
for(j=0;j<2-i;j++)
{
if(strcmp(p[j],p[j+1])>0)
{
s=p[j];
p[j]=p[j+1];
p[j+1]=s;
}
}
}
printf("%s %s %s", p[0], p[1], p[2]);
return 0;
}
我觉得 *p 里面存放的是变量内容,而 p 里面存放的应该是字符数组a 的地址。
所以如果 printf(“%s”,p); 的话,应该输出的是数组a 的地址值。
可结果输出的却是数组a 中存放的字符串内容。
百度后明白了:指针变量p的值是地址,地址指向的位置是个char数组,%s输出的是p指向的数组,如果你用%d输出p,才是输出地址值