C语言的攻克之路

简介: C语言的攻克之路

前言

今天和大家分享牛客网刷题的几道题目

题目

1 序列中删除指定数

最初的想法:是想在序列中先找到要替换的数,将这个数删除,但我很快发现自己无法将这个数删除。(有知道怎么删除的小伙伴可以告诉我噢!)。

解题思路:1 将删除数排除在序列之外。

                 2 在将这个序列后面的数前移。

                 3 打印这个新的序列。

代码

#include<stdio.h>
 
int main()
{
    int n = 0;
    scanf("%d",&n);
    int arr[50]={0};
    int i = 0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    //输入删除数
    int del = 0;
    scanf("%d",&del);
    int j = 0;
    for(i=0;i<n;i++)
    {
        if(arr[i]!=del)
        {
            arr[j++]=arr[i];
        }
    }
    //打印
    for(i=0;i<j;i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

2序列中整数去重

       

解题思路:1 找到相同的元素

                  2 如果元素数相同,便将后续元素向前移动

代码:

#include<stdio.h>
 
int main()
{
    int n = 0;
    scanf("%d", &n);
    //数据输入
    int arr[1000] = { 0 };
    int i = 0;
    for (i = 0;i < n;i++)
    {
        scanf("%d", &arr[i]);
    }
    for (i = 0;i < n;i++)
    {
        int j = 0;
        for (j = i + 1;j < n;j++)
        {
            //先找到相同元素
            //如果相同,就将后续元素先前移动
            if (arr[i] == arr[j])
            {
                int m = 0;
                for (m = j;m < n - 1;m++)
                {
                    arr[m] = arr[m + 1];
                }
                n--;//表示已经去掉一个相同的数
                j--;//继续判断下个是否要是重数
 
            }
        }
    }
    for (i = 0;i < n;i++)
    {
        printf("%d ", arr[i]);
    }
 
    return 0;
}

3有序序列合并

解题思路:1 建立三个数组arr1和arr2及arr3让下标分别为i和j及k(初始值都为0)。

                 2 让arr1[i]和arr2[j]比较,让较小的数存入arr3中在让i++或者j++,后继续比较。

                 3 当arr1或者arr2中的元素都存完后在将没存完的数组继续存入arr3中。

代码:

#include<stdio.h>
 
int main()
{
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    int arr1[1000] = { 0 };
    int arr2[1000] = { 0 };
    int arr3[2000] = { 0 };
    //数据输入
    int i = 0;
    for (i = 0;i < n;i++)
    {
        scanf("%d", &arr1[i]);
    }
    for (i = 0;i < m;i++)
    {
        scanf("%d", &arr2[i]);
    }
    //处理
    int j = 0;
    int k = 0;
    i = 0;
    while (i < n && j < m)
    {
        //将一个较小的数放到合并的数组中
        if (arr1[i] < arr2[j])
        {
            arr3[k++] = arr1[i++];
        }
        else
        {
            arr3[k++] = arr2[j++];
        }
    }
    //当arr1数组元素先存完
    //将arr2中剩余的数自己放入arr3中
    if (i == n)
    {
        for (;j < m;j++)
        {
            arr3[k++] = arr2[j];
        }
    }
    else
    {
        for (;i < n;i++)
        {
            arr3[k++] = arr1[i];
        }
    }
    //打印arr3
    for (i = 0;i < k;i++)
    {
        printf("%d ", arr3[i]);
    }
    return 0;
}

结束语

今天分享到这里,希望小伙伴们能多多指点我,大家一起加油,一起进步!

 


相关文章
|
存储 编译器 C语言
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它4
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它4
|
编译器 C语言
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它3
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它3
|
存储 C语言
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它1
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它1
|
C语言
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它2
【C语言】 指针篇,不会的一定要看,指针没有想象的那么难,我们一起攻克它2
|
30天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
59 10
|
30天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
47 9
|
30天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
40 8
|
30天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
48 6
|
30天前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
224 6
|
30天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
59 6