|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
char *str[1000]={"0"};
char swap(char,char);
int n,i;
char j;
char a;
printf("请输入有几个字符串\n");
scanf("%d",&n);
printf("输入字符串\n");
for(i=0;i<n;i++)
{
scanf("%s", &str[i]);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
a= j;
if(strcmp((str+a),(str+a+1))>0)
{
swap((str+a),(str+a+1));
}
}
}
printf("\n");
for(i=0;i<n;i++)
{
a=i;
printf("%s\n",(str+i));
}
}
char swap(char *p1,char *p2)
{
char *p[200]={"0"};
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
在你提供的代码中,存在一些问题导致字符串排序输出不正确。下面是对你提供的代码进行修正:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- void swap(char **p1, char **p2);
- int main()
- {
- char *str[1000] = { NULL };
- int n, i, j;
- printf("请输入有几个字符串:");
- scanf("%d", &n);
- printf("输入字符串:\n");
- for (i = 0; i < n; i++) {
- str[ i] = (char *)malloc(100 * sizeof(char));
- scanf("%s", str[ i]);
- }
- for (i = 0; i < n - 1; i++) {
- for (j = 0; j < n - 1 - i; j++) {
- if (strcmp(str[j], str[j + 1]) > 0) {
- swap(&str[j], &str[j + 1]);
- }
- }
- }
- printf("\n排序结果:\n");
- for (i = 0; i < n; i++) {
- printf("%s\n", str[ i]);
- free(str[ i]);
- }
- return 0;
- }
- void swap(char **p1, char **p2)
- {
- char *temp = *p1;
- *p1 = *p2;
- *p2 = temp;
- }
复制代码
在这个修正后的代码中,我进行了如下修改:
1. 修复了 swap 函数的参数类型和返回值类型,并修改了函数体的逻辑,使其能正确交换两个指针所指向的字符串。
2. 添加了对内存的动态分配和释放,使用 malloc 和 free 函数来为字符串分配和释放内存。
3. 更正了在排序过程中比较和交换字符串指针的逻辑,确保字符串按照字典序进行排序。
以上修改能够解决原代码中一些可能导致排序结果错误的问题。请注意,在 Python 中进行字符串排序时,可以使用 sort() 函数或者自定义排序函数来实现。Python 提供了更便捷的字符串操作和排序方法,这里上述修正的代码仅是对你提供的 C 语言代码的修正和调整。
如果问题已经解决,请设置最佳答案
|
|