C语⾔基础算法——数组元素的查、删除和添加
从这篇博客开始,我们慢慢要进阶了,⼩⽩们,如果觉得我写的还不错,⿇烦你注册常来,顺便给我点个赞哈~让更多的⼈看到此类⼲货。——————————————————–华丽分割线————————————————————
今天⼀样是对数组元素进⾏相应操作,不过是稍微复杂点的操作,但是在实际⽣活中⼜是⽐较基础的应⽤。我给思路给程序,发散思维的⼯作你们脑洞⼤点,充分发挥⾃⼰的想象⼒并去实施。
——————————————————–华丽分割线————————————————————
⼀、数组元素的查和删除
⾸先,给定⼀些数组元素(有些同学会问为什么总是给定?不要急,前期牢固基础,后期才能开车载⼈,成为⼀名合格的⽼司机),C中定义好⼀组数后,数组中的元素有下标或者说索引,⽐如说,第1个元素就是从下标为0开始,第2个元素下标就是1,…依次类推。
其次,我们遇到个问题:如果要访问数组中的元素,到底是直接访问元素?还是访问元素的下标?访问的计算机思路是什么?(数组元素在这⾥是数组中的数)
冒泡排序代码c语言答:通过访问元素下标来访问元素。穷举法。谨记
最后,既然是查,那我们的思路就是:要查的是元素的下标。如果和删除操作相结合就是:我们要怎么样才能删除特定的数据,查到要删除的元素的下标后,然后⼲嘛?注意:前⽅⾼能地想,如果怎么样,那么要⼲嘛?也就是说,如果到了,那么我要删除。
重头戏来了,初步思路已经有,你要怎么删除
html css怎么将图片放在右边⽐如,1 2 3 4 5,删除 3 是不是成了 1 2 4 5。想想,
1、删除导致元素减少
2、4的位置到了3,5的位置到了4
总结:所谓删除逻辑就是,后⾯⼀个数覆盖前⾯⼀个数,最后数量要减少了1。
⼆、数组元素的添加
承接上⾯的删除操作,下启添加操作。
添加到底是个什么操作呢?假设你要挖墙脚,如狼似虎、饥渴难耐的你在和她聊天,表⽩之后的结果就是,你再发送消息会收到“您还不是对⽅的好友,请通过验证添加对⽅为好友”的回复,即你被删
除好友了。后来她和她的男友吹了,她想起了你(备胎⼀号),⽽后添加了你。此时,刚添加的朋友在通讯录⾥是最后⼀位,⽽刷新⼀下之后,朋友列表会按照昵称拼⾳的⾸字母进⾏排序。
要划重点了,同学们。你先是被添加了,通讯录⾥才有你,也就是说,先进⾏添加操作,再执⾏整体数量加1的操作。通讯录好⽐⼀个数组,刚添加的你是在最后⼀位,通讯录扩充了,⽽刷新后,你被排序了。(排序可⽤之前的冒泡排序,我敲的累所以没写)
总结:
1、先执⾏添加操作,再执⾏数组长度 + 1 的操作
2、刚被添加的元素在数组末位
3、这⾥是数字,升序还是降序排列,随你,⽤我第⼀篇博客的⽅法去实现
好啦,上程序代码:
#include <stdio.h>
//查和删除的业务逻辑
/
*****************************************
sql查询语句博客*1、查要删除数字的下标
*2、从下标开始,后⾯⼀个覆盖前⾯⼀个数字
*3、数组总长度-1
******************************************/
int main()
{
int count = 7; //数组元素个数
double Nums[] = {423.2, 457.7, 409.0, 412.3, 407.6, 580.3, 320.5};
int JudgementNum; //⽤户进⾏下⼀步操作的判断数
double InsertNum; //⽤户要插⼊的数据
double DeleteNum; //⽤户要删除的数据
int DeleteIndex = -1; //删除某个数据的下标(索引),要给⼀个不可能的初值,⽅便判断。
int i; //循环变量
printf("当前采集到的数据为:\n");
for(i = 0; i < count; i++)
{
printf("%.2lf\t", Nums[i]);
}music可数吗
printf("\n\n是否需要删除部分数据?\n提⽰:输⼊数字1进⾏删除操作,输⼊数字0确认当前数据采集⽆误。\n");
printf("\n\n是否需要删除部分数据?\n提⽰:输⼊数字1进⾏删除操作,输⼊数字0确认当前数据采集⽆误。\n"); printf("请输⼊:");
scanf("%d", &JudgementNum);
if(JudgementNum == 1)
{
printf("\n请输⼊要删除的数据:");
scanf("%lf", &DeleteNum);
for(i = 0; i < count; i++) //穷举法,是常⽤算法之⼀
{
if(DeleteNum == Nums[i]) //Nums[i]表⽰数组中的第i个元素
{
//到后并记录当前数据的下标(索引)
DeleteIndex = i;
break; //到了要删除的数据,直接跳出循环,提升效率
}
}
//根据索引的判断,如果你要删除的数的下标和所给定索引的初值相同,那么肯定就是没到。
if(DeleteIndex == -1)
{
printf("没有到该数据,删除失败!\n");
}
else
{
//如果到了,建⽴⼀个循环并且从下标开始,数组中的元素后⾯⼀个覆盖前⾯⼀个,且数组长度 - 1
for(i = DeleteIndex; i < count - 1; i++)
{
Nums[i] = Nums[i+1];
}
count--;
//并打印输出后的结果
printf("\n第%d个数据将被删除,删除后的结果为:\n", DeleteIndex + 1);
for(i = 0; i < count; i++)
{
printf("%.2lf\t", Nums[i]);
}
horizontalheader
}
}else if(JudgementNum == 0)
{
printf("当前数据采集⽆误并保存!");
}
else
{
后台写的websocket怎么测试printf("删除数据操作发⽣错误!");
}
//注意:以下程序实现的是删除数据之后的插⼊操作
printf("\n\n是否需要添加部分数据?\n提⽰:输⼊数字1进⾏添加操作,输⼊数字0保存当前数据。\n");
printf("请输⼊:");
scanf("%d",&JudgementNum);
if(JudgementNum == 1)
{
printf("\n请输⼊要添加的数据:");
scanf("%lf", &InsertNum);
//进⾏添加操作,再数组长度+1
Nums[count] = InsertNum;
count++;
printf("\n添加数据后的结果为:\n");
for(i = 0; i < count; i++)
{
printf("%.2lf\t", Nums[i]);
}
}else if(JudgementNum == 0)
{
printf("当前数据已被保存。\n");
}
else
{
{
printf("添加数据操作发⽣错误\n");
}
return 0;
}
程序设计细节:
我增加了程序的判断能⼒(⽤好if-else if-else结构)
1、是否需要进⾏删除操作,通过输⼊0还是1进⾏。同理添加操作。
2、输⼊的是数字还是其他数字对程序的执⾏结果不同。
程序测试结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论