c语言期末作业 生成一组随机数,对他们进行 排序,插入一个数之后仍然使这组数保持有序

1、用CreateRandData( )、Sort( )、InsertValue( )三个函数实现以下功能:

a 生成10个三位随机正整数放在a数组中;

b 对数组中的元素进行升序排序,排序方法可任选(选择排序、冒泡排序、插入排序);

c 任意输入一个整数,并插入到数组中,使之仍然保持有序;

程序:

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <time.h>
#define Max 100 
#define N 10 
int n = N; 
void InsertValue(int a[],int element);
void Sort(int a[]);
void CreatRandData(int a[]);
void printArr(int a[]);

int main() 
{
	int a[Max];
	int x;
	CreatRandData(a);
	printArr(a);
	Sort(a);
	printArr(a);
printf("请输入要插入的数\n");//插入一个数
	scanf("%d",&x);
	InsertValue(a,x);
	printArr(a);
	system("pause");
}
void CreatRandData(int a[]) //生成随机数
{
	int i;
	srand((int)time(NULL));
	for (i=0; i<N; i++)
	{
	a[i]=rand()%(1000-100)+100;//随机数范围
	}
		
}
void Sort(int a[])//冒泡排序
{
	int i, j, temp;
	for(i=0; i<N-1; i++)//前一个数与后一个比较,把小的放在前面
	for(j=0; j<N-1-i; j++)
	if(a[j] > a[j+1])
	{
	temp = a[j];
	a[j] = a[j+1];
	a[j+1] = temp;
	}
}
void InsertValue(int a[],int element) //插入一个数排序
{
	int j;
	if(n+1 > Max)
	return;
	for(j=n-1; j>=0; j--)
	{
		if(a[j] > element)
		a[j+1] = a[j];
		else break;
	}
	n++;
	a[j+1]=element;
}

void printArr(int a[]) 
{
	int i;
	printf("\n");	
	for(i=0; i<n; i++)
	printf("%d,",a[i]);
	printf("\n");
}

猜你喜欢

转载自blog.csdn.net/m0_64383325/article/details/122025838