栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

有序一维数组的增删查改—C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有序一维数组的增删查改—C语言

(一)增:

#include
int main(){
	int a[11] = {11,22,33,44,55,66,77,88,99,111};
	int m,end,temp1,temp2;
	int i, j;
	printf("please input new number:");
	scanf("%d", &m);
	end = a[9];
	if (m >= end) {
		a[10] = m;
	}//比较这个数和数组的最后一个数的大小,如果大于最后一个数直接插入数组末尾即可
	else {
    for (i = 0; i < 10; i++) {
    if (a[i] > m)//若数组中元素大于这个数,就插入于此,这位置之后的数都向后移动一个单位
    {
				temp1 = a[i];//保存第i个位置的数值
				a[i] = m;//将新输入的数插入到第i个位置
				for (j = i + 1; j < 11; j++) {
					temp2 = a[j];
					a[j] = temp1;
					temp1 = temp2;
				}//将i之后的元素向后移动一个单位
				break;
			}
		}
	}
	printf("The new array is:");
	for (i = 0; i < 11; i++) {
		printf("%3d", a[i]);
	}
	return 0;
}
//转载于@程序猿群哥@度小编

(二)删(无序数组删除某个指定元素):

方法一:遍历法

int main()
{
	int arr[]={1,2,3,4,5,6,6};
	int delect =0;
	int i=0,j=0,k=0;
	int n;//n为数组长度
	
	n=sizeof(arr)/sizeof(int);
	printf("删除前数组为:");
	for (k=0;k<=n-1;k++)
	{
		printf("%4d",arr[k]);
	 }
	 printf("/n") ;
	 printf("please input the number you want to delect");
	 scanf("%d",&delect);
	 for (i=0;i<=n-1;i++){
	 	if(delect ==arr[i])
	 	{
	 		for(j=i;j<+n;j++)
	 		{
	 			arr[j]=arr[j+1];//实现数的覆盖 
			 }
		 }
	 }
	 printf("删除后的数组为");
	 for(k=0;k<=n-2;k++)
	 {
	 	printf ("%4d",arr[k]);
	 	
	  } 
	  printf("n");
	  return 0;
}//转载于@topicstudy

方法二:记录元素下标

#include
int main()
{
	int arr[]={1,3,6,5,4,};//4后面还有一个,的意思是数组是动态长度吗? 
	int delect=0;
	int delectIndex=0;
	int i=0;//非循环嵌套,可以只定义一个
	int n ;
	n=sizeof(arr)/sizeof(int);
	printf("Original array:") ;
	for (i=0;i<=n-1;i++){
		printf("%4d",arr[i]);
	}
	printf("n");
	
	printf("please input the number you want to delect:");
	scanf("%d",&delect);
	for(i=0;i<=n-1;i++){
		if(delect==arr[i])
		delectIndex=i;//记录要删除的元素的下标 
	}
	for(i= delectIndex;i<=n-2;i++) {
	    arr[i]=arr[i+1];//后面的元素顺位往前移动 
	}
printf("The deleted array is:");
for (i=0;i<=n-2;i++)
{
	printf("%4d",arr[i]);
}
printf("n");
return 0;

}
//转载于@topicstudy

以上代码存在bug:如果输入的元素在数组里面不存在,会自动删除a[0].

(三)查找元素是否存在

#include
void input(int array[10],int n);
int find(int array[10],int n);

int main()
{
	int array[10]={0};
	int i, n, h;
	do
	{
		printf("please input the whole numbers-n(010);
	input (array,n);
	h= find(array,n);
	
}

void input(int array[10],int n)
{
	int i;
	printf("请输入%d个数组元素:n",n);
	for (i=0;i 

(四)改指定位置的元素的数值

#include
int main(void){
	int i;
	int num[]={1,2,4};
	num[2]= 120;//位置在2,及数组的第3个元素
	for(i=0;i<3;i++)
    printf("%d ",num[i]);
	} 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879884.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号