C语言一维数组数据随机排列,求c语言编程:1~声明有n个元素的一维数组,随机输入n个元素的值,输出n个元素 2~对数组进行排序(...

满意答案

呵呵,时间不早了,谢谢都睡了,就给楼主送点福利吧。我就一码农,不为分数而来!

想起了8年前我苦心学C语言的艰难,没有电脑,没有师傅,代码都写在草稿纸上的。

希望你能好好学习编程,代码写的很详细了。

多读,多看,多写,多调试。

先贴效果:

1---------随机数组初始化为:

28 95 15 42 43 25 5 10 76 35

2---------数组排序后的结果为:

5 10 15 25 28 35 42 43 76 95

3---------请输入X值,查找是否存在

25

存在第 4 个位置

4---------输入X值,插入数组中。

35

插入后的数组为

5 10 15 25 28 35 35 42 43 76

5---------输入您要删除的元素X

35

5 10 15 25 28 42 43 76 -1 -1

请按任意键继续. . .

再贴源代码:

#include "stdio.h"

#include "conio.h"

#include

#include

#include

//给定数组,打印出来

void printArray(int a[],int n)

{

for(int i=0;i

{

printf("%4d",a[i]);

}

printf("\n");

}

//给定数组 冒泡排序

void bubblesort(int a[],int n)

{

int i,j,temp=0;

for(i=0;i

{

for(j=n-1;j>i;j--)

{

if(a[j]

{

temp=a[j];

a[j]=a[j-1];

a[j-1]=temp;

}

}

}

}

//给定数组和要查找的元素,查找是否存在

int isExist(int a[],int key,int n)

{

int pos=-1;

for(int i=0;i

{

if(a[i]==key)

{

pos=i;

break;

}

}

return pos;

}

//给定数组和要插入的元素

void insertArray(int a[],int key ,int n)

{

int pos=-1;//记录要插入的位置

for(int i=0;i

{

if(a[i]>key)

{

pos=i;

break;

}

}

//从最后一个开始,元素后移动,数组长度不够,最后一个会丢失的

if(pos>=0&&pos

{

for(int i=n;i>pos;i--)

{

a[i]=a[i-1];

}

a[pos]=key;

}

}

//给定数组和要删除的值key 删除所有和key相等的值

void deleteArray(int a[],int key,int n)

{

int k=-1;

for(int i=0;i

{

if(a[i]==key)

{

//找到要删除的元素 从后往前覆盖

for(k=i;k

{

a[k]=a[k+1];

}

a[k]=-1;//最后用-1 替换掉

i=i-1;//推回一格,重复的元素也要删除掉

}

}

}

main()

{

int a[10]={0};

int x=0,pos=-1;

time_t t;

srand((unsigned)time(&t));

//随机初始化数组

for(int i=0;i<10;i++)

{

a[i]=rand()%100+1;

}

printf("\n1---------随机数组初始化为:\n");

printArray(a,10);

printf("\n2---------数组排序后的结果为:\n");

bubblesort(a,10);

printArray(a,10);

printf("\n3---------请输入X值,查找是否存在\n");

scanf("%d",&x);

pos=isExist(a,x,10);

if(pos==-1)

printf("不存在!\n");

else

printf("存在第 %d 个位置\n",pos+1);

printf("\n4---------输入X值,插入数组中。\n");

scanf("%d",&x);

insertArray(a,x,10);

printf("插入后的数组为\n");

printArray(a,10);

printf("\n5---------输入您要删除的元素X\n");

scanf("%d",&x);

deleteArray(a,x,10);

printArray(a,10);

system("pause");

}

10分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值