#include <stdio.h>
#include <string.h>
void bubblesort(int n, char *ptr[]){
char *tmp;
for (int i = 0; i < n; i++){
for (int j = 0 ; j < n; j++){
if(strcmp(*(ptr+i) , *(ptr+j))>0){
strcpy(tmp , *(ptr+i));
strcpy(*(ptr+i) , *(ptr+j));
strcpy(*(ptr+j) , tmp);
}
}
}
//printf("\n",ptr+0,ptr+1,ptr+2,ptr+3,ptr+4,ptr+5,ptr+6,ptr+7,ptr+8,ptr+9); **<= without this line my code doesn't executive**
}
int main()
{
int n;
scanf("%d\n", &n);
char str[10][20];
for (int i = 0; i < n; i++)
gets(str[i]);
char *ptr[10];
for (int i = 0; i < n; i++)
ptr[i] = str[i];
bubblesort(n, ptr);
for (int i = 0; i < n; i++)
puts(ptr[i]);
}
C:\Users\kk\Desktop\C〉a 10香蕉猕猴桃苹果西红柿柠檬甜瓜梨蓝莓草莓橙子
西红柿草莓梨橙子甜瓜柠檬猕猴桃蓝莓香蕉苹果
C:\用户\kk\桌面\C〉
线上无
C:\Users\kk\Desktop\C〉a 10香蕉猕猴桃苹果西红柿柠檬甜瓜梨蓝莓草莓橙子
C:\用户\kk\桌面\C〉'
1条答案
按热度按时间jyztefdp1#
1.内部循环应使用
j
和j + 1
,而不是i
和j
,并且该循环的j
条件不正确。1.当你操作字符串的指针时,你可以交换它们,而不是复制字符串本身,写
swap()
函数比内联更清楚。1.最后,
gets()
使用起来并不安全,对于这类问题,最好硬编码一个测试用例。下面是输出: