C语言要求通过键盘输入5字符串,再调用函数sort给字符串从小到大排列,再调用print函数完成字符串输出。

2025-03-06 03:07:50
推荐回答(5个)
回答1:

看你代码原意,是想定义一个字符串数组strs。

但是你写的char *strs[5];表示的是一个维度为5的指针数组。

你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改。

如果你不想改动其他函数,还继续使用指针数组,也是可以的。

你可以用动态内存来写输入部分:(头文件添加malloc.h)

#include 
#include 
#define N 100//每个字符串最大长度
int main()
{
    int i;
    char *strs[5];
    for(i=0;i<5;i++)
    {
        strs[i]=(char *)malloc(sizeof(char)*(N+1));
        if(strs[i])
            scanf("%s",strs[i]);
        else
        {
            printf("错误内存申请失败!\n");
            return 1;
        }
    }
    return 0;
}

回答2:

#include
#include
using namespace std; //以上为引用头文件
int main() //主函数
{
int i; //创建变量i
string str[5]; //定义数组str
void sort(string s[]); //定义函数sort
cout<<"Please input string:"<for(i=0;i<=5;i++)
cin>>str[i]; //输入5个字符串
sort(str); //调用str函数
cout<<"The sorted string is:"<for(i=0;i<5;i++)
cout<cout<return 0;
}
void sort(string s[])
{
int i,j;
string temp;
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(s[j]>s[j+1]) //对每个进行比较
{
temp=s[j];
s[j]=s[j+1];//把小的数放在前面
s[j+1]=temp;
}
}

回答3:

你没有为字符串分配空间,将main函数中的char *strs[5]修改为char strs[5][50];

回答4:

//修改后的代码:
#include 
#include
void sort(char *name[],int n);
void print(char *name[ ],int n);
int main()
{ char *strs[5],s[5][20];
  int i;
  for(i=0;i<5;i++)
    strs[i]=s[i];
  printf("Please input 5 strings:");
  for(i=0; i<5; i++)
  { scanf("%s",strs[i]);
  }

  printf("Output:\nAfter thestrings are storted the result:\n");
  sort(strs,5);
  print(strs,5);
  return 0;
}
void sort(char *name[],int n)
{ char * temp;
  int i,j;
  for(i=0; i  { for(j=0; j    { if(strcmp(name[j],name[j+1])>0)
      { temp=name[j];
        name[j]=name[j+1];
        name[j+1]=temp;
      }
    }
  }
}
void print(char *name[ ],int n)
{ int i;
  for(i=0; i  { printf("%s\n",name[i]);
  }
}

回答5:

简单修复了你的程序,有帮助请采纳哦。

#include 
#include
const int CHANGDU = 50;
void sort(char name[][CHANGDU],int n);
void print(char name[ ][CHANGDU],int n);
int main()
{
    char strs[5][CHANGDU];
    int i;
    printf("Please input 5 strings:\n");
    for(i=0; i<5; i++)
    {
        scanf("%s",strs[i]);
    }
    printf("Output:\nAfter thestrings are storted the result:\n");
    sort(strs,5);
    print(strs,5);
    return 0;
}
void sort(char name[][CHANGDU],int n)
{
    char temp[CHANGDU];
    int i,j;
    for(i=0; i    {
        for(j=0; j        {
            if(strcmp(name[j],name[j+1])>0)
            {
                strcpy(temp, name[j]);
                strcpy(name[j], name[j+1]);
                strcpy(name[j+1], temp);
            }
        }
    }
}
void print(char name[ ][CHANGDU],int n)
{
    int i;
    for(i=0; i    {
        printf("%s\n",name[i]);
    }
}