标题:有人能帮我简述这个删除指定元素的操作吗?求求了
只看楼主
yh794649379
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-3-6
结帖率:0
已结贴  问题点数:20 回复次数:5 
有人能帮我简述这个删除指定元素的操作吗?求求了
//删除模块
void del_message()
{
    int i=0,j;
    long int del_num;
    system("cls");
    sum=read_message();
    printf("学生总数:%d\n",read_message());
    printf("\t\t\t\t学生信息表");
    printf("\n********************************************************************************\n");
    printf("\n学号\t姓名\t年龄\t性别\t出生年月\t专业班级\t电话\t\t宿舍号\n");
    printf("--------------------------------------------------------------------------------\n");
    for(j=0;j<read_message();j++)
        printf("\n\n%ld\t%s\t%d\t%s\t%s\t%s\t%-9ld\t%s\t\n",stu[j].num,stu[j].name,stu[j].age,stu[j].sex,stu[j].birthday,stu[j].pro,stu[j].tele_num,stu[j].dor);
        printf("--------------------------------------------------------------------------------\n");   
        printf("输入要删除的学号:");
        scanf("%ld",&del_num);
        for(j=0;j<sum;j++)
        {
            if(stu[j].num==del_num)
                for(i=j;i<sum;i++)
                {
                    stu[i]=stu[i+1];
                    save_message();
                }
        }
    printf("删除成功!");
    printf("按任意键返回主菜单!");
    getch();
    system("cls");
}
搜索更多相关主题的帖子: sum for 删除 stu printf 
2020-03-06 12:02
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:10 
就是你刚开始学for循环的时候会让你练习for循环的插入,删除,查找,替换,排序,这个就是用结构体或class做删除指令啊,但是本质没有变啊,就是把要删的数放在最后面呀,下次使用数组的时候直接长度减➖就行了

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-06 13:16
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
程序代码:
   复制粘贴一下) 这是我刚学C++练习题,你都学到结构体了,我想你能看懂
#include<iostream>
using namespace std;
int main()
{
    int num[7]= {1,8,2,6,41,17};
    int a;//输入的数字
    int temp;//一个变量
    cout << "请输入插入的数字" << endl;
    cin >> a;//插入数字
    num[7-1]=a;//最大的
    for(int i=0; i<7-1; ++i)
    {   for(int j=0; j<7-1; ++j)
        {   if(num[j]>num[j+1])
            {   temp=num[j];
                num[j] =num[j+1];
                num[j+1]=temp;
            }
        }
    }

    cout << "最终排序为:" <<endl;
    for(int i=0; i<7; ++i)
    {
        cout << num[i]<< endl;
    }

    int b;
    int x;
    printf("插入要删除的数 ");
    cin >>b;
//插入要删除的数

for(int i=0; i<7; ++i)
    {
        if(b==num[i])
        {
            x=i;
        }
    }

    for(int i=x; i<7-1; ++i)
    {
        num[i]=num[i+1];
    }

    for(int i=0; i<7-1; ++i) // 原先 int i=x; 也要改为 int i=0;
    {
        cout << num[i]<< endl;
    }
}




把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-06 13:39
Samson幽客
Rank: 2
等 级:论坛游民
威 望:2
帖 子:21
专家分:98
注 册:2020-1-14
得分:10 
你能看懂这句stu[i]=stu[i+1];吗?
删除的关键是这个
前面的for是遍历结构体,然后嵌套了一个if判断,if判断的就是他的当前遍历目标是不是你输入的那个目标;
如果是就开始执行我上面问你的那个;
stu[i]=stu[i+1];
意思就是将后面的数放到现在找到的这个数的位置了
打个比方:
-------------------
1  | 2  | 3  | 4  |
-------------------
设i=2;
那么i+1就等于3了;
stu[i]=stu[i+1];之后
--------------
1  | 3  | 4  |
--------------
希望你可以看懂;
2020-03-06 23:28
Samson幽客
Rank: 2
等 级:论坛游民
威 望:2
帖 子:21
专家分:98
注 册:2020-1-14
得分:0 
这里我写的比较简单,没标下标,数组的正确排列是从0开始的
  0   1   2   3   4   <--这是i的值;也就是下标
---------------------
| 0 | 1 | 2 | 3 | 4 |
---------------------
2020-03-06 23:32
yh794649379
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-3-6
得分:0 
回复 2楼 叶纤
谢谢谢谢谢谢谢谢谢谢谢你啊啊
2020-03-12 13:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499582-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.130265 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved