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

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 256 //宏定义

int main()
{
	char strArray[N][256];
	char *str[N];
	char *temp;
	int i,n;

	printf("请输入字符串:\n");
	for(i=0;i<N;i++)
	{
		gets(strArray[i]);

		if (strcmp(strArray[i]," ")==0)//空格串作为字符串输入结束符
		{
				break;
		}
		str[i]=strArray[i];
	}

	n=i;

	//冒泡排序 方法一
	//for(int i=0;i<n;i++)
	//{
	//for(int j=i+1;j<n;j++)
	//{
	//if(strcmp(str[i],str[j])>0)
	//{
	//temp=str[i];
	//str[i]=str[j];
	//str[j]=temp;
	//}
	//}
	//}

	////冒泡排序 方法二
	//for(int i=0;i<n-1;i++)
	//{
	//	for(int j=0;j<n-1-i;j++)
	//	{
	//		if(strcmp(str[j],str[j+1])>0)
	//		{
	//			temp=str[j];
	//			str[j]=str[j+1];
	//			str[j+1]=temp;
	//		}
	//
	//	}
	//}

	//选择排序方法
	for(int i=0;i<n;i++)
	{
		char* min = str[i];
		int index=i;

		//找出最小的数
		for(int j=i+1;j<n;j++)
		{
			if(str[j]<min)
			{
				min=str[j];
				index=j;
			}

		}
		temp=str[i];
		str[i]=min;
		str[index]=temp;
	}

	printf("排序后的是:\n");

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

	printf("\n");
	system("pause");
	return 0;
}

时间: 2024-11-02 14:54:33

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

C语言-动态分配内存对任意个字符串进行排序

//动态分配内存对输入的任意字符串排序 #include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<string.h> //比较大小 //int str_compare(const char* src,const char* dst) //{ // int ret = 0; // if (src == dst) // { // return 0; // } // if (dst == NU

C语言 动态输入字符串

作者 :卿笃军 很多时候,我们不知道要开辟多大的空间,但是我们又想实现无限制的输入~~~ 这时候,就需要用到动态空间的开辟了. 先简绍2个函数: malloc()  , realloc() 函数名:malloc 原型:externvoid *malloc(unsigned int num_bytes); 功能:在堆中开辟num_bytes个字节的空间 函数名:realloc 原型:externvoid *realloc(void *mem_address, unsigned intnewsize

C语言如何接收通过键盘输入的任意长度字符串

有时候需要对用户输入的字符串进行处理,由于事先不知道用户会一次性输入多长的字符串,一般有三种处理方法: 1.根据估计用户最多输入字符串长度进行申请空间. 2.使用getch.scanf(%c)等一个字符一个字符的接收处理. 3.使用 while(1) { scanf("%1000s",&str); .... //对str字串进行处理 ... //在末尾 if(strlen(str)!=1000)//如果长度不为1000说明已经接收完,此时可以跳出循环 break; } 第一种方

c语言中读入带空格的字符串

http://blog.csdn.net/pipisorry/article/details/37073023 问题: scanf("%s", a); 运行输入hello world 回车 则输入到a的只是空格之前的部分,怎样把空格之后的部分也输出? 1. scanf( "%[^\n]", str ); #include <stdio.h> int main(){ char str[50]; scanf( "%[^\n]", str

C语言从零开始(十四)-字符串处理

在软件开发过程中,字符串的操作相当频繁.在标准C语言库中提供了很多字符串处理的函数.今天我们来介绍一些常用的字符串处理函数.1. 字符串输入输出1.1 printf() scanf() 之前我们学习过使用"%c"进行字符的输入输出.字符串的输入输出大体相同,唯一的区别是采用"%s". 请看下面这段代码: int main() { char str[10]; printf("Please input 10 words:\n"); scanf(&qu

C语言中输入输出格式控制

1.C语言中,非零值为真,真用1表示:零值为假,假用0表示. 2.转义字符参考: \a 蜂鸣,响铃 \b 回退:向后退一格 \f 换页 \n 换行 \r 回车,光标到本行行首 \t 水平制表 \v 垂直制表 \\ 反斜杠 \' 单引号 \" 双引号 \? 问号 \ddd 三位八进制 \0 空字符(NULL),什么都不做 \xhh 二位十六进制 说明: 1)\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作. 2),\n其实应该叫回车换行.换行只是换一行,不改变光标的横坐标:回

将控制台输入的每一行字符串,输出至txt文件当中

/** *    需求:将控制台输入的每一行字符串,输出至txt文件当中. /** * 需求:将控制台输入的每一行字符串,输出至txt文件当中. * 思路: * 1.首先想到BufferReader高级流读取一行字符串readLine方法. * 2.但是前提依赖于字符转换流ISR和低级节点流,这里是从控制台输入,节点流自然是System.in.如果是从文件输入,则节点流换成FIS即可 * 3.这样就能建立一条输入流了.BufferedReader(new InputStreamReader(Sy

C语言判别输入的东东

梗概:现在很多用C语言写出来的作业,都是用户输入后,电脑对应操作的.其实这样有没有漏洞呢? 这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现..我们就谈谈最后一行.[输入序号].其实很简单,switch语句,0-6中用case包括就OK了..最后来个default,一切不就好了吗? 是的,很多人会对着软件提示按..但我假设一下:电脑键盘上那么多按钮,一不小心按了字母怎么办?哈哈..很多人会说:那就default语句执行咯.但事实上是不是呢? 我亲自试了试,吓尿了.你猜怎样?整个

C语言判别输入东东

梗概:现在很多用C语言写出来的作业,都是用户输入后,电脑对应操作的.其实这样有没有漏洞呢? 这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现..我们就谈谈最后一行.[输入序号].其实很简单,switch语句,0-6中用case包括就OK了..最后来个default,一切不就好了吗? 是的,很多人会对着软件提示按..但我假设一下:电脑键盘上那么多按钮,一不小心按了字母怎么办?哈哈..很多人会说:那就default语句执行咯.但事实上是不是呢? 我亲自试了试,吓尿了.你猜怎样?整个