题目----序列中删除指定数字

简介: 题目----序列中删除指定数字

题目

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

解答

#include <stdio.h>
 
void deleteNumber(int arr[], int n, int num) 
{
    int i, j;
    for (i = 0; i < n; i++) {
        if (arr[i] == num) {
            for (j = i; j < n - 1; j++) 
{
                arr[j] = arr[j + 1];
            }
            n--; // 更新数组长度
            i--; // 因为删除了一个数字,需要将索引i回退一步
        }
    }
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
}
 
int main()
{
    int arr[] = {1, 2, 3, 4, 5, 3, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);
    int num = 3;
    
    printf("Original sequence: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    printf("\nSequence after deleting %d: ", num);
    deleteNumber(arr, n, num);
    
    return 0;
}

在这个程序中,我们首先定义了一个函数deleteNumber,该函数接受一个整数数组、数组长度和要删除的数字作为参数。然后我们在main函数中定义了一个整数数组arr,并输出原始序列。接着调用deleteNumber函数删除指定的数字,并输出删除指定数字后的序列。

在函数deleteNumber中,我们使用两个循环来遍历整数数组。第一个循环用来找到要删除的数字,并将其后面的数字向前移动一个位置。第二个循环用来输出删除指定数字后的序列。

目录
相关文章
【C刷题】矩阵相等判断与序列中删除指定的数字(下)
【C刷题】矩阵相等判断与序列中删除指定的数字(下)
LeetCode------找到所有数组中消失的数字(6)【数组】
这篇文章介绍了LeetCode上的"找到所有数组中消失的数字"问题,提供了一种解法,通过两次遍历来找出所有未在数组中出现的数字:第一次遍历将数组中的每个数字对应位置的值增加数组长度,第二次遍历找出所有未被增加的数字,即缺失的数字。
|
7月前
|
C语言
C语言----随机输入10个数,从小到大依次排列
C语言----随机输入10个数,从小到大依次排列
|
7月前
|
算法
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
|
8月前
题目----从小到大输出
题目----从小到大输出
45 0
|
8月前
|
算法
题目----移除元素
题目----移除元素
41 0
|
8月前
题目----逆序
题目----逆序
29 0
|
8月前
|
测试技术
每日一题 --- 力扣318----最大单词长度乘积
每日一题 --- 力扣318----最大单词长度乘积
|
8月前
|
算法 Java C++
数据结构与算法面试题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散)
数据结构与算法面试题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散)
92 0