70,020
社区成员




# include<stdio.h>
# include<string.h>
int main(){
void change(char string[10]);
void rank(char *string[3]);
int i;
char *pointer[3];
char word[3][10];
for(i=0; i<3; i++) pointer[i]=word[i];
printf("input 3 strings:\n");
for(i=0; i<3; i++){
if(!i) printf("input the 1st number(end it with.):\n");
else if(1==i) printf("inout the 2rd number:\n");
else if(2==i) printf("input the 3th number:\n");
scanf("%s", word[i]);
change(word[i]);
}
rank(pointer);
printf("after rank:\n");
for(i=0; i<3; i++) printf("%s", *pointer[i]);
putchar('\n');
return 0;
}
void change(char string[10]){
int i=0;
while('.'!=string[i++]);
string[i]='\0';
}
void rank(char *string[3]){
int i, j, *temp;
for(i=0; i<3; i++){
for(j=0; j<2-i; j++){
if(strcmp(string[j], string[j+1])>0){
temp=string[j];
string[j]=string[j+1];
string[j+1]=temp;
}
}
}
}
# include<stdio.h>
# include<string.h>
void change(char string[10]);
void rank(char *string[3]);
int main(){
int i;
char *pointer[3] = {0};
char word[3][10] = {0};
for(i=0; i<3; i++) pointer[i]=word[i];
printf("input 3 strings:\n");
for(i=0; i<3; i++)
{
#if 0
if(!i) printf("input the 1st number(end it with.):\n");
else if(1==i) printf("inout the 2rd number:\n");
else if(2==i) printf("input the 3th number:\n");
#else
printf("input the %d number(end it with.):\n", i + 1);
#endif
input:
scanf("%s", word[i]); //因为word[i]的长度只有10,所以输入不能超过10个字符
if(strlen(word[i]) >= 10)
{
printf("length must < 10, please rescaf\n");
goto input;
}
change(word[i]);//这个有点多余
}
rank(pointer);
printf("after rank:\n");
for(i=0; i<3; i++) printf("%s\n", pointer[i]);
putchar('\n');
return 0;
}
void change(char string[10]){
int i=0;
while('.'!=string[i++]);
string[i]='\0';
}
void rank(char *string[3]){
int i, j;
char temp[10] = {0};
for(j=0; j<2; j++){
if(strcmp(string[j], string[j+1])>0){
//temp=string[j];
strcpy(temp, string[j]);
//string[j]=string[j+1];
strcpy(string[j], string[j+1]);
//string[j+1]=temp;
strcpy(string[j+1], temp);
}
}
}
for(i=0; i<3; i++) printf("%s\n", pointer[i]);
//*去掉,%s需要需要一个字符串首地址
//change也有问题,如果没有最后字符不是'.'会出现内存错误,所以需要加上string[i]!='\0'
void change(char string[10]){
int i=0;
while(string[i]!='.' && string[i]!='\0'){i++;}
string[++i]='\0';
printf("%s",string);
}
// char *temp=NULL; 把指针和指针交换
void rank(char *string[3]){
int i, j;
char *temp=NULL;
for(i=0; i<3; i++){
for(j=0; j<2-i; j++){
if(strcmp(string[j], string[j+1])>0){
temp=string[j];
string[j]=string[j+1];
string[j+1]=temp;
}
}
}
}
。。。。。。。。。。。。。。。
rank(pointer); //没错的
printf("after rank:\n");
for(i=0; i<3; i++) printf("%s", *pointer[i]); 把这个 *去掉
putchar('\n');
修改后
。。。。。。。。。。。。。。。
rank(pointer);
printf("after rank:\n");
for(i=0; i<3; i++) printf("%s", pointer[i]);
putchar('\n');