xdoj单词排序

//标题
//单词排序
//
//描述
//定义一个二维字符数组str[10][20],行号表示单词序号,列号表示单词最大长度,
//输入一个正整数N(N≤10),表示单词数,使用函数wd_sort()完成单词的排序,按字母顺序从小到大排列单词,使用指针完成地址传递,
//主函数完成数组输入和输出。
//输入说明
//输入一个二维字符数组str和一个正整数N,行号表示单词序号,列号表示单词最大长度。
//
//输出说明
//格式输出:单词之间空一行。
//
//输入样例
//3
//word fish egg
//输出样例
//egg
//fish
//word
//
//提示
//使用指针作形参,实现地址传递。
//数组定义后初始化。
//使用strcmp()、strcpy()和strlen()函数,头文件string.h。
之前的代码

#include<stdio.h>
#include<string.h>
int main()
{
    
       void wd_sort(char (*p)[],int );
	char str[10][20];
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
    
    
	  scanf("%s",&str[i]);
	}
	wd_sort(str,n);
		for(i=0;i<n;i++)
	{
    
    
	  printf("%s\n",str[i]);
	}
	return 0;
}
void wd_sort(char (*p)[],int n)
{
    
    	int j,i;
    char temp;
		for(i=0;i<n-1;i++)
			for(j=0;j<n-i-1;j++)
		{
    
    if(strmp((*p)[j],(*p)[j+1])>0)
		{
    
    strcpy(temp,*(p+j));
		strcpy((*p)[j],(*p)[j+1]);
		strcpy((*p)[j+1],temp);
		}
		}
}

出现了很多错误,包括类型变化中数据丢失。
一开始陷入到二维数组的使用中无法自拔,最后还是感谢大佬给我的tips

#include<stdio.h>
#include<string.h>
int main()
{
    
       void wd_sort(char (*p)[],int );
	char str[10][20];
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
    
    
	  scanf("%s",&str[i]);
	}
	wd_sort(str,n);
		for(i=0;i<n;i++)
	{
    
    
	  printf("%s\n",str[i]);
	}
	return 0;
}
void wd_sort(char (*p)[20],int n)
{
    
    	int j,i;
    char temp[20];
		for(i=0;i<n-1;i++)
			for(j=0;j<n-i-1;j++)
		{
    
    if(strcmp(*(p+j),*(p+j+1))>0)
		{
    
    strcpy(temp,*(p+j));
		strcpy(*(p+j),*(p+j+1));
		strcpy(*(p+j+1),temp);
		}
		}
}

猜你喜欢

转载自blog.csdn.net/weixin_50925658/article/details/111407137