C语言:实现数组的删除和增加

/* 
    删除方法:
    如:12  32  56  84  95
    用覆盖的方法
    若删除第三个,则第四个要覆盖第三个,第五个要覆盖第四个
    覆盖完:12  32  84  95  95
    所以要实现删除,还要删除最后一个数字,即不打印,数组元素 - 1
     */ 

增加方法就简单,因为数组在定义的时候没有定义空间大小,所以可以随意增添。 

#include <stdio.h>
#define N 5
int main()
{
	//实现数组的删除
	/* 
	删除方法:
	如:12  32  56  84  95
	用覆盖的方法
	若删除第三个,则第四个要覆盖第三个,第五个要覆盖第四个
	覆盖完:12  32  84  95  95
	所以要实现删除,还要删除最后一个数字,即不打印,数组元素 - 1
	 */ 
	double powersNum[] = {2008, 3210, 4651, 8754, 3549};
	
	int i;//循环变量 
	int j;//冒泡排序中的外循环变量
	double delete_prwer;//要删除的数据
	int delete_Index = -1;//寻找出来的数组的下标 
	int count = 5;//表示数组个数 
	int temp;//临时存储空间 
	double insertpower;//插入数据
//	for(i = 0; i < 5; i++) 
//	printf("%.lf\t",powersNum[i]); 
	printf("请输入要删除的Power:");
	scanf("%lf", &delete_prwer);
	for(i = 0; i < count; i++)
	{
		if(delete_prwer == powersNum[i])
		{
			delete_Index = i;//记录找到的数据对应的下标 
			break;//找到元素后跳出循环,提高效率 
		}
	 }
	 printf("查找次数为:%d\n", i + 1);
	 if(-1 == delete_Index)
	 {
	 	printf("很遗憾!没有找到相应的数据!\n");
	 }
	 else
	 {
	 for(i = delete_Index; i < count - 1 ; i++)
	 	{
	 	powersNum[i] = powersNum[i + 1]; 	
	 	}
		 count--;
	 }
	 printf("删除后的结果为:\n");
	 for(i = 0; i < count; i++)
		{
		printf("%.2lf\t", powersNum[i]);	
		}
		printf("\n");
		printf("请输入要插入的数据:\n");
	 	scanf("%lf", &insertpower);
	 	powersNum[count] = insertpower;
	 	count++;
	 	//printf("%.2lf\n", powersNum[count]);
	 	printf("输入后的结果为:\n");
	 	for(i = 0; i < count; i++)
	 	{
	 		printf("%.2lf\t", powersNum[i]);
		 }
	 	
		
	//冒泡排序 : 87, 5, 45, 23, 96  
	/*使上述数字由小到大排序
	计算机运算过程:
	第一轮:                轮数中比较的次数 
	87  45  23  96   5       4 
	二
	87  45  96  23   5       3
	三
	87  96  45  23   5       2
	四
	96  87  45  23   5       1
	*/ 
	// i 为 0 为起始数值 
	//比较轮数 : count - 1
	//每轮中比较的次数:count - j - 1 
	//外层循环控制轮数,内层控制比较次数 
		
	for(j = 0; j < count-1; j++)
	{
		for(i = 0; i < count - j-1; i++)
		{
			if(	powersNum[i] > powersNum[i + 1])
			{
			temp = powersNum[i];
			powersNum[i] = powersNum[i + 1];
			powersNum[i + 1] = temp;
			}		
		}
	 } 
	 printf("\n");
	 printf("重新排序的结果为:\n");
	 
	for(i = 0; i < count; i++)
	{
		printf("%.2lf\t", powersNum[i]);
	}	
	
	return 0;
 } 

posted @ 2022-03-12 23:31  竹等寒  阅读(55)  评论(0编辑  收藏  举报  来源