#include<stdio.h>
#include<string.h>
void Swap(char *p1,char *p2);
void compositor(char *p,int n);
void main()
{
char *p, str[10][20];
int i;
p=str[0];
printf("please input ten same length strings\n");
for(i=0;i<10;i++)
{scanf("%s",p+i);}/我想用一个指针指向字符串数组,可无论怎么试
p=str[0]; /可无论怎么试都不成功
compositor(p,10); /我的疑惑是怎样才能用指针指向字符串数组的
printf("After sorting by small to large\n");/每一个字符串
p=str[0]; /并对这些字符串操作排序
for(i=0;i<10;i++)
{printf("%s\n",p+i);}
getch();
}
void compositor(char *p,int n) /选择排序法/
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if (strcmp(p+j,p+k)>0) k=j;/排序法代码是没问题的,问题是
if(k!=i) /我的做法 无法对字符串 进行操作
Swap(p+j,p+k); /我的指针用法肯定出问题了,
/但不知道要怎么改
}
}
void Swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
/所以 总的要求是, 能否不用指针数组做这个题,指针数组我会/
/能的话, 帮我改程序,,不能 的说明理由,理由详细点/
这是我后面 自己调试时改的代码。仍然很有问题 ,指针对字符串是操作不到的。答上面的问题就可得全部的分,不过你心情好可以帮我 解决第15行 警告 那个警告到底是什么意思
#include<stdio.h>
#include<string.h>
void main()
{
void Swap(char *p1,char *p2);
void compositor(char (*p)[3],int n);
char str[3][20];
int i;
printf("please input ten same length strings\n");
for(i=0;i<3;i++)
{scanf("%s",*(str+i));}
compositor(str,3);/!!!!!这一行的 警告让我恼火不已警告 noname.c 15: 指针转换后指向其它类型在 main 函数中!!!!/
printf("After sorting by small to large\n");
for(i=0;i<3;i++)
{printf("%s\n",*(str+i));}
getch();
}
void compositor(char (*p)[3],int n)
{ int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if (strcmp(*(p+j),*(p+k))>0) k=j;
if(k!=i)
Swap(*(p+j),*(p+k));
}
}
void Swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
不负相思意
紫衣仙女
相关分类