C语言:位数大小排序(掌握数值排序算法) 程序说明:输入一个五位整数,对此整数中的五个数值进行从大到小的顺序排序,形成一个新的五位整数,并输出这个整数。

这个题目核心算法我觉得是两个,第一个就是将输入的五位整数里的五个数分别提取出来成为单独的数值,其次就是将这五个数进行排序组合为新的五位整数,可以分别写两个子函数来实现这两个功能。
1:提取功能

void extract(int n,int x[])
{
	int i;
	for(i=0;i<5;i++)
	{
		x[i]=n%10;
		n/=10;
	}
}

以数组作为实参和形参,既不需要在传值时另找载体,并且在除留取余以及排序时都非常方便。
2:排序功能

void sort(int x[])
{
	int i,j,t;
	for(i=0;i<4;i++)
	for(j=i;j<5;j++)
	if(x[i]<x[j])
	{
		t=x[i];
		x[i]=x[j];
		x[j]=t;
	}
}

完整代码:

#include<stdio.h>
int main()
{
	void part(int,int[]);
	void sort(int []);
	int i,x[5];
	printf("输入一个5位正整数:");
	scanf("%d",&i);
	if(i>99999||i<10000)
	{
		printf("输入的不是5位整数.\n");
		return 0;
	}
	extract(i,x);
	sort(x);
	printf("新的5位整数为:");
	for(i=0;i<5;i++)
	printf("%d",x[i]);
	return 0;
}
void extract(int n,int x[])
{
	int i;
	for(i=0;i<5;i++)
	{
		x[i]=n%10;
		n/=10;
	}
}
void sort(int x[])
{
	int i,j,t;
	for(i=0;i<4;i++)
	for(j=i;j<5;j++)
	if(x[i]<x[j])
	{
		t=x[i];
		x[i]=x[j];
		x[j]=t;
	}
}

猜你喜欢

转载自blog.csdn.net/RViewSonic/article/details/107574854