一位数组的增删改查

通常我们需要对表格数据进行增删改查,下面是完整的代码

#include <stdio.h>
int main()
{
	int array[20] = { 1,5,9 };
	int size = 3;
	//末尾直接插入
	int count = 0;
	while (count < 3)
	{
		int insertNum = 0;
		printf("请在末尾插入一个数:");
		scanf("%d", &insertNum);
		array[size++] = insertNum;
		for (int i = 0; i < size; i++)
		{
			printf("%d  ", array[i]);
		}
		printf("\n");
		count++;
	}

	//删除:
	int deleteNum = 0;
	int pos = -1;
	int flag = 0;
	int i = 0;
	printf("请输入要删除的信息:");
	scanf("%d", &deleteNum);
	//先查找下标:
	for (i = 0; i < size; i++)
	{
		if (array[i] == deleteNum)
		{
			pos = i;
			break;
		}
	}
	if (pos == -1)
	{
		printf("查询不到删除信息\n");
	}
	else
		//下面是删除操作: 数组的删除是伪删除
		//伪删除: 数组长度不会变,只是单纯的改变都是记录当前数组中的元素个数的变量,采用前移操作覆盖的方式
	{
		printf("删除信息的下标为:%d\n", pos);
		for (i = pos; i < size; i++)
		{
			array[i] = array[i + 1];
		}
		array[size--];
		printf("删除之后的数组为:\n");
		for (i = 0; i < size; i++)
		{
			printf("%d ", array[i]);
		}
		printf("\n");
	}
	int changeNum = 0;
	int changePos = 0;
	int changeInfo = 0;
	printf("请输入要修改的信息:");
	scanf("%d", &changeInfo);	//修改那个数就输入哪个数
	for (i = 0; i < size; i++)
	{
		if (array[i] == changeInfo)	//查找修改数的下标
		{
			changePos = i;
			break;
		}
	}
	printf("将此信息修改为:");
	scanf("%d", &changeNum);	 //输入新的修改数
	array[changePos] = changeNum;//赋值修改
	printf("修改之后的数组为:\n");
	for (i = 0; i < size; i++)
	{
		printf("%d ", array[i]);
	}
	printf("\n");

		//保证有序性的插入
		int arrayNum[9] = { 1,4,10 };
		int arraySize = 3;
		printf("打印一个有序数组:\n");
		for (int i = 0; i < arraySize; i++)
		{
			printf("%d ", arrayNum[i]);
		}
		printf("\n");
		int insertInfo = 0;
		while (1)
		{
		printf("插入一个数:\n");
		scanf("%d", &insertInfo);
		int insertPos = -1;
		for (int i = 0; i < arraySize; i++)
		{
			if (insertInfo < arrayNum[i])
			{
				insertPos = i;
				break;
			}
		}
		if (insertPos == -1)
		{
			arrayNum[arraySize] = insertInfo;
		}
		else
		{
			for (int i = arraySize; i > insertPos; i--)
			{
				arrayNum[i] = arrayNum[i - 1];
			}
			arrayNum[insertPos] = insertInfo;
		}
		arraySize++;
		for (int i = 0; i < arraySize; i++)
		{
			printf("%d ", arrayNum[i]);
		}
	}
	return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OBnq2j1-1613823492502)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210220201300428.png)]

本该两天前写好的代码硬是拖到现在,害,啥也不是,这篇写给自己,是个教训

这是找了两天没找出错的的代码,贴出来以明志

//保证有序性的插入
	int arrayNum[9] = { 1,4,10 };
	int arraySize = 3;
	int i = 0;
	printf("打印一个有序数组:\n");
	for (i = 0; i < arraySize; i++)
	{
		printf("%d ", arrayNum[i]);
	}
	printf("\n");
	int insertInfo = 0;
	int insertPos = -1;
	int Count = 0;
	while (Count < 3)
	{
		printf("插入一个数:\n");
		scanf("%d", &insertInfo);
		for (i = 0; i < arraySize; i++)
		{
			if (insertInfo < arrayNum[i])
			{
				insertPos = i;
				break;
			}
		}
		if (insertPos == -1)
		{
			arrayNum[arraySize] = insertInfo;
		}
		else
		{
			for (i = arraySize; i > insertPos; i--)
			{
				arrayNum[i] = arrayNum[i - 1];
			}
			arrayNum[insertPos] = insertInfo;
		}
		arraySize++;
		for (i = 0; i < arraySize; i++)
		{
			printf("%d ", arrayNum[i]);
		}
		Count++;
	}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值