首页 > 专题系列 > C基础练习 > C语言程序设计-字符串排序[指针应用]
2013
11-25

C语言程序设计-字符串排序[指针应用]

【问题描述】按字典顺序输出某班所有人的名单。
【输入形式】一组测试数据,第一行为一个整数N,表示本班有N个人(N<=30),接下来的N行中每行一个人名
(人名均由小写字母组成,并且名字长度小于20)。
【输出形式】按字典顺序排列的人员名单。每个人名占一行。
【样例输入】5
zhangsan
liyang
wangxiao
liqing
wuhui
【样例输出】liqing
liyang
wangxiao
wuhui
zhangsan
【样例说明】某班有5个人,名字为zhangsan、liyang、wangxiao、liqing、wuhui,
按字典的排列顺序为:liqing、liyang、wangxiao、wuhui、zhangsan。
【评分标准】本题共2个测试点,每个测试点1.0分,共2.0分。

//author:xiaohuang
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	//字符指针数组,用于存储字符串
	char* names[30] ;
	int n;
	scanf("%d",&n);
	int i;
	for (i=0;i<n;i++)
	{
		names[i] = (char *) malloc(30 * sizeof(char));
		scanf("%s",names[i]);
	}
// 	stringsort(names);
	int j;
	for (i=0;i<n;i++)
	{
		bool flag = false;
		for (j=0;j<n-i-1;j++)
		{
			if (strcmp(names[j],names[j+1]) > 0)
			{
				char* temp = names[j];
				names[j] = names[j+1];
				names[j+1] = temp;
				flag = true;
			}

		}

		if(!flag)
		{
			break;
		}
	}

	for (i=0;i<n;i++)
	{
		printf("%s\n",names[i]);
	}

	return 0;
}

 


  1. 因为是要把从字符串s的start位到当前位在hash中重置,修改提交后能accept,但是不修改居然也能accept