【C语言】写一个函数,用对输入的五个字符串按由小到大顺序排列输出。

导读:本篇文章讲解 【C语言】写一个函数,用对输入的五个字符串按由小到大顺序排列输出。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

解题思路:用一个字符型二维数组来接收五个字符串。统计每一个字符串的ASCII码并存入一个整型数组中,再对该数组中的的值进行由大到小的排名(即统计该元素在所有元素中的排序位置),根据该排名情况从大到小输出对应的字符串。

#include<stdio.h>
#define N 5
#define M 10
int main(){
	void compare(char a[][M],int b[]);	//函数声明 
	int i,j; 
	char a[N][M]={'\0'},*p;	//定义一个字符型二维数组(并置空)用于存放N个字符串,指针变量用于每个字符串的输入和输出 
	int b[N]={0};	//存放这N个字符串的排名结果 
	/*--接收输入的字符串--*/ 
	for(i=0;i<N;i++){
		printf("输入第%d个字符串:",i+1);
		p=&a[i][0];
		gets(p);
	}
	/*--对这N个字符串比较大小并排名--*/ 
	compare(a,b);
	/*--按照排名输出对应的的字符串--*/ 
	printf("这%d个字符串从大到小排列为:\n",N);
	for(i=0;i<N;i++){{}
		for(j=0;j<N;j++)
			if(b[i]==j)break;
		p=&a[j][0];
		puts(p);
	}
	return 0;
} 
/*--比大小--*/
void compare(char a[][M],int b[]){
	int i,j,t,max,k;	
	int size_str; 
	int c[N]; 	//存放每个字符串的ASCII码值 
	/*计算字符串大小并存储其值*/ 
	for(i=0;i<N;i++){
		for(j=0,size_str=0;a[i][j]!='\0';j++)
			size_str+=a[i][j];
		c[i]=size_str;
	}
	/*--依据每个字符串大小进行排名(非排序)--*/ 
	for(j=0;j<N;j++){
		for(i=0,max=c[0],k=0;i<N;i++)
			if(max<c[i]){
				max=c[i];	//交换本轮最大者 
				k=i;		//记录本轮最大者序号 
			}	
		b[j]=k; 
		c[k]=-1;		//本轮最大者置负(因为所有字符ASCII码都是非负的字符串当然也是。最大者置负数就不会影响下一轮最大者) 
	}
} 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82668.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!