C语言-对输入的n个字符串进行排序

【问题描述】

编写程序,输入n(n≤1000)个字符串,将n个字符串排序后输出。字符串的长度小于100。

【输入形式】

第1行为整数n,接下来n行,每行为一个字符串。
【输出形式】

n行,排序后的字符串。
【样例输入】

5

Java Programming

C Programming

PHP

HTML

Pascal

【样例输出】

C Programming

HTML

Java Programming

PHP

Pascal

【样例说明】

注意:整数5后有一个回车。


需要思考解决问题的步骤

1.字符串输入字符能一个个读且换行

2.怎么比较首字母并交换

3.字符输出 


然后思考对应函数

1.scanf和gets,一起用要记得getchar()吸收掉scanf输入后的回车

2.strcmp比较两个字符串  <只能比一维数组>
//(设这两个字符串为str1,str2, 
//str1==str2,则返回零; 
//str1 > str2,则返回正数; 
//str1< str2,则返回负数。
//对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。
//如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。)

strcpy交换

3.puts会自动换行


正式代码

#include<stdio.h>
#include<string.h>
int main()
{char exchange(char m[][100],int n);//二维数组传参只能一维不写 
int n,i;
char m[100][100]={0}; //字符数组必须自定义好0这样之后自动遇0停 
scanf("%d",&n);
getchar();
//方法一直接在scanf内要求,scanf("%d\n",&n); 已经把最后的回车当成输入的一部分 
//方法2.scanf输入后有一个回车产生的空格需要吸收
//不然会自动放进后面的gets (scanf与gets的恩怨关系)
for(i=0;i<n;i++)
gets(m[i]);   //1.gets(内为数组名) 
exchange(m,n); //2.进函数来完成 
	for(i=0;i<n;i++)
	{
	puts(m[i]);
//puts()在输出字符串时会将’0’自动转换成’n’进行输出,
//也就是说,puts方法输出完字符串后会自动换行。与语句printf("%s\n",s);的作用相同
	}        

return 0;
}

char exchange(char m[][100],int n)
{
int i,j;
char b[100]={0};
for(j=1;j<=n+1;j++)      //起泡法 
{	for(i=0;i<=n-j-1;i++)//因为上面的数组是从0开始输入,这里也要从0开始比较不然会漏掉m[0]没比 
	{
		if(strcmp(m[i],m[i+1])>0)
		{
		strcpy(b,m[i]);
		strcpy(m[i],m[i+1]);
		strcpy(m[i+1],b);
		}	
	}
}	
}

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值