一维数组的删 增 排序
/*一维数组的删 增 排序实例 */
#include "stdio.h"
#include "stdlib.h"
main()
{
/*
删除逻辑
12 34 23 67 9
12 34 67 9 9
1、查找要删除数字的下标
2、从下标开始,后面一个覆盖前面一个数字
3、数组的长度-1
*/
int count=5; //表示数组元素的个数
double power[]={42322,45771,40907,46789,40767};
double deletepower; //用户要删除的战力值
int deleteindex=-1; //删除战力值的下标 要给一个不可能的初值
double insertpower; //新插入的战力值
int i,j; //循环变量
int temp; // 用来交换的临时变量
printf("请输入要删除的战力值:");
scanf("%lf",&deletepower);
for(i=0;i<count;i++)
{
if(deletepower==power[i])
{
//记录当前的下标
deleteindex=i;
break;
}
}
//根据判断(是否找到),执行后续的操作
if(-1==deleteindex)
{
printf("没有找到要删除的战力值!\n");
}
else
{
//从下标开始 前一个覆给前面一个
for(i=deleteindex;i<count-1;i++)
{
power[i]=power[i+1];
}
count--;
}
printf("删除后的结果为:\n");
for(i=0;i<count;i++)
{
printf("%.2lf\t",power[i]);
}
//删除之后插入
printf("请输入要插入的战力值:\n");
scanf("%lf",&insertpower);
power[count]=insertpower;
count++;
printf("插入后的结果为:\n");
for(i=0;i<count;i++)
{
printf("%.2lf\t",power[i]);
}
//数组排序
//循环录入5个整型数字,进行降序排列输出结果
//使用冒泡排序 原理:遍历和交换
/*
16 25 9 90 23
1、 25 16 9 90 23
2、 25 16 9 90 23
3、 25 16 90 9 23
4、 25 16 90 23 9 //第一轮最小的数到最后
5、 25 16 90 23 //第二轮
6、 25 90 16 23
7、 25 90 23 16
8、 90 25 23
9、 90 25 23 //第三轮
注:需要比较多轮(数组长度-1)轮
每一轮 比较的次数比上一轮-1次
(数组长度-1)-当前的轮数
*/
//外层来控制轮数
for(i=0;i<count-1;i++)
{
//内层控制每轮比较次数
for(j=0;j<count-i-1;j++)
{
if(power[j]<power[j+1])
{
temp=power[j];
power[j]=power[j+1];
power[j+1]=temp;
}
}
}
printf("降序排列为:\n");
for(i=0;i<count;i++)
{
printf("%.2lf\t",power[i]);
}
}

浙公网安备 33010602011771号