详细逻辑:
1、获取输入文本
2、判断输入是否是0,如果是0,直接结束函数
3、进行循环遍历,
第一个if先不管,刚开始flag=0会一直跳过
先看第二个if,如果bo数组里的这个元素跟你输入的收支编号一致,那么就flag=1,
也就是你定位到了bo数组中这个跟你输入的收支编号一致的位置。
4、flag=true之后,第三个if和第一个if都会触发,
所以bs个数减一,bo数组向后移动一位,
也就是将你定位到的那个收支编号对应的元素给删除了,其余的元素往前移动
简单来说就是数组中某个元素删去,数组该元素后边的位置往前移动一位。
整理逻辑:
大概就是先定位输入的值在数组中的元素位置,
然后删除该元素,其他元素前移进行填充。
基本逻辑和整体就是这些。
如有问题及时沟通
存在全局变量,bo(结构体数组?)和bs(长度?),if(strcmp(str,bo[i].num)==0){flag=1}定位当前账单所在位置。if(flag==1) b0[i-1]=b[i],后面元素往前移一个位置,第一元素被删除,后续元素前移一个位置。bs--,数组有效长度减一。
定义i,j,flag变量
str字符串数组
清屏
打印请输入您要删除的收支编号(输入0直接返回):)
scanf("%s",&str); 输入编号
if(strcmp("0",str == 0){ 和0比较,等于0直接返回
return;
}
下面的bs变量你在哪定义的啊?
bo和bs是什么? 猜测bo[]是收支记录数组, bs是数组长度:
设计思路是这样的:
这个设计思路不好, 效率低
基本就是这个思路