#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
void sort(char **p)
{
char **q, **s, *t;
for (q = p; q < p + 4; q++)
{
for (s = q + 1; s < p + 5; s++)
{
if (strcmp(*q, *s) > 0)
{
t = *q;
*q = *s;
*s = t;
}}
}
}
int main()
{
char *a[5], b[5][99], **p;
int i;
for (i = 0; i < 5; i++)
a[i] = b[i];
printf("请依次输入五个字符串:\n");
for (i = 0; i < 5; i++)
scanf("%s", a[i]);
p = a;
sort(p);
printf("排序后输出为:\n");
for (i = 0; i < 5; i++)
{
printf("%s\n", a[i]);
}
system("pause");
return 0;
}
运行效果:
scanf()函数用法:
输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。
scanf("%s",s);改为scanf("%s",&s);
scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);
格式控制字符串包含:格式控制说明,普通字符。
1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)
2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。
3、输入的参数是变量的地址,所以要在变量前面加&。
#include
#include
int main()
{
char str[5][30],temp[30],(*p)[30];
int i,j,k,n=5;
printf("请输入五个字符串:\n");
for(i=0;i
p=str;
for(i=0;i
for(j=i+1;j
k=j;
if(k!=i)
{strcpy(temp,*(p+i));
strcpy(*(p+i),*(p+k));
strcpy(*(p+k),temp);}
}
printf("排序后的五个字符串:\n");
for(i=0;i
return 0;
}
#include
#include
void f1(char a[5][500])//用于排序的函数
{
char *p[5],**pp;
int i, j, k = 0;
char t;
for (i = 0; i < 5; i++)
p[i] = a[i];
pp=p;
for (i = 0; i<4; i++)
for (j = 0; j < 4 - i; j++)
{
if (strcmp(a[j], a[j + 1]) > 0)
{
for (k = 0; k < 500; k++)
{
t = *(a[j] + k);
*(*(pp + j) + k) = *(*(pp+j+1) + k);//对指针的指针进行操作
*(*(pp + j + 1) + k) = t;
}
}
}
}
void f2(char a[5][500])//用于输入的函数
{
int i;
for (i = 0; i < 5; i++)
gets(a[i]);
}
int main()
{
char a[5][500], *p[5];
int i;
f2(a);
f1(a);
for (i = 0; i < 5; i++)
puts(a[i]);
return 0;
}
//源程序是八个字符串,八个五个都一样
吗