C语言——实例039 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

第一个程序:有bug,但没发现


/*
	Name: 
	Copyright: 
	Author: 
	Date: 31/07/17 11:42
	Description: 
		【程序39】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
	1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,
	插入后此元素之后的数,依次后移一个位置。 
	?
*/

#include 

int main()
{
	int a[100],temp,i,j,n,min;
	
	int x,temp2;	
	
	/*输入待排序数据*/	
	printf("请输入待排序的数的个数:");
	scanf("%d",&n);
	printf("\n请输入%d个数:",n);
	for(i = 0;i < n;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("\n");
	
	/*排序*/ 
	for(i = 0;i < n - 1;i++)
	{
		min = i;
		for(j = i + 1;j < n;j++)
		{
			if(a[min] > a[j]) 
			{
				min = j;
			}						
		}
		temp = a[i];
		a[i] = a[min];
		a[min] = temp;			
	}
	
	/*输出排序*/ 
	printf("从小到大排序后的%d个数为:\n",n);
	for(i = 0;i < n;i++)
	{		
		printf("%-5d",a[i]);
	}
	printf("\n\n");

	/*插入*/
	while(printf("请输入插入数据:") && scanf("%d",&x) != EOF) 
	{
		printf("\n");
		n++;
		if(x >= a[n - 2])
		{
			a[n - 1] = x;
			printf("从小到大排序后的%d个数为:\n",n);
			for(i = 0;i < n;i++)
			{		
				printf("%-5d",a[i]);
			}
			printf("\n\n");
		}
		else
		{
			for(i = 0;i < n - 2;i++)
			{
				if(x < a[i])
				{
					temp = a[i];
					a[i] = x;
					for(j = i + 1;j < n;j++)
					{
						temp2 = a[j];
						a[j] = temp;
						temp = temp2;
					}
					break;
				}
			}
			printf("从小到大排序后的%d个数为:\n",n);
			for(i = 0;i < n;i++)
			{		
				printf("%-5d",a[i]);
			}
			printf("\n\n");
		} 
	}
	return 0;
}


运行结果:

C语言——实例039 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中_第1张图片



第二个程序:没有仔细测试

/*
	Name: 
	Copyright: 
	Author: 
	Date: 31/07/17 11:42
	Description: 
		【程序39】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
	1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,
	插入后此元素之后的数,依次后移一个位置。 
	
	?
*/

#include 
#include

int cmp(const void *a,const void *b)
{
	return (*(int *)a-(*(int *)b));		//从小到大 
}

int main()
{
	int a[100],temp,i,j,n,min;
	
	int x,temp2;	
	
	/*输入待排序数据*/	
	printf("请输入待排序的数的个数:");
	scanf("%d",&n);
	printf("\n请输入%d个数:",n);
	for(i = 0;i < n;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("\n");
	
	/*排序*/ 
	qsort(a,n,sizeof(int),cmp);
	
	/*输出排序*/ 
	printf("从小到大排序后的%d个数为:\n",n);
	for(i = 0;i < n;i++)
	{		
		printf("%-5d",a[i]);
	}
	printf("\n\n");

	/*插入*/
	printf("请输入插入数据:");
	scanf("%d",&x);
	a[n] = x;
	qsort(a,n + 1,sizeof(int),cmp);
	printf("\n从小到大排序后的%d个数为:\n",n + 1);
	for(i = 0;i < n + 1;i++)
	{		
		printf("%-5d",a[i]);
	}
	printf("\n\n");
	
	return 0;
}


你可能感兴趣的:(C语言)