C语言(指针基础练习)

news/2024/12/14 15:55:31/
  1. 删除数组中的元素

数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。

#include <stdio.h>
#include <stdbool.h>// 函数声明
int deleteElement(int arr[], int size, int element);int main() {int arr[] = {1, 2, 3, 4, 3, 5, 6};int size = sizeof(arr) / sizeof(arr[0]);int elementToDelete = 3;printf("Original array: ");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");int newSize = deleteElement(arr, size, elementToDelete);printf("Array after deleting %d: ", elementToDelete);for (int i = 0; i < newSize; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}// 删除数组中的元素,返回新数组的大小
int deleteElement(int arr[], int size, int element) {int newSize = 0;for (int i = 0; i < size; i++) {if (arr[i] != element) {arr[newSize] = arr[i];newSize++;}}return newSize;
}

在这里插入图片描述
2. 给定⼀个n个元素有序的(升序)整型数组nums和⼀个⽬标值target,写⼀个函数A搜索nums中的target,如果⽬标值存在返回下标,否则返回-1。

在这里插入图片描述

#include <stdio.h>// 二分查找函数,返回元素在数组中的索引,如果未找到则返回-1
int binarySearch(int arr[], int size, int target) {int left = 0;int right = size - 1;while (left <= right) {int mid = left + (right - left) / 2; // 防止(left + right)可能导致的溢出// 检查中间元素是否是目标值if (arr[mid] == target) {return mid; // 找到目标,返回索引}// 如果目标值大于中间元素,则在右半部分查找if (arr[mid] < target) {left = mid + 1;} else { // 如果目标值小于中间元素,则在左半部分查找right = mid - 1;}}// 未找到目标值,返回-1return -1;
}int main() {int arr[] = {2, 3, 4, 10, 40};int size = sizeof(arr) / sizeof(arr[0]);int target = 10;int result = binarySearch(arr, size, target);if (result != -1) {printf("元素在数组中的索引为: %d\n", result);} else {printf("数组中未找到该元素\n");}return 0;
}

在这里插入图片描述
3. 给定⼀个含有n个正整数的数组和⼀个正整数s,找出该数组中满⾜其和≥s的⻓度最⼩的连续⼦数组,并返回其⻓度。如果不存在符合条件的⼦数组,返回0。
在这里插入图片描述

#include <stdio.h>
#define MAX_INT 2147483647 int minSubArrayLen(int nums[], int numsSize, int s) {int minLength = MAX_INT; int currentSum = 0;int left = 0;for (int right = 0; right < numsSize; right++) {currentSum += nums[right];while (currentSum >= s) {minLength = (minLength < (right - left + 1)) ? minLength : (right - left + 1);currentSum -= nums[left];left++;}}// 检查是否找到了符合条件的子数组return (minLength == MAX_INT) ? 0 : minLength;
}int main() {int nums[] = {2, 3, 1, 2, 4, 6};int s = 6;int numsSize = sizeof(nums) / sizeof(nums[0]);int result = minSubArrayLen(nums, numsSize, s);printf("满足和大于等于 %d 的最小长度连续子数组的长度是: %d\n", s, result);return 0;
}

在这里插入图片描述


http://www.ppmy.cn/news/1555056.html

相关文章

Next.js配置教程:构建自定义服务器

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 前言 1. 什么是自定义服务器&#xff1f; 2. 配置自定义服务器 2.1 基础配置 2.2 集成不同的服务器框架 使用Fastify 使用Koa 3. 自定义服务器的高级功能 3.1 路…

【数据结构】数据库索引(B树,B+树)简介

前言 仅做学习记录&#xff0c;侵删 一、什么是索引 索引是数据库表中的字段的索引&#xff0c;所谓的索引就是在表的字段上添加的&#xff0c;每个字段都可以添加索引来提高查找效率&#xff0c;也可以多个字段联合添加一个索引。 参考字典的实现&#xff0c;索引相当于字典…

2024年12月10日Github流行趋势

项目名称&#xff1a;astral-sh / uv 项目维护者&#xff1a;charliermarsh zanieb konstin renovate BurntSushi项目介绍&#xff1a;一个极快的Python包和项目管理器&#xff0c;使用Rust编写。项目star数&#xff1a;30,855项目fork数&#xff1a;839 项目名称&#xff1a;…

每天40分玩转Django:简介和环境搭建

Django简介和环境搭建 一、课程概述 学习项目具体内容预计用时Django概念Django框架介绍、MVC/MTV模式、Django特点60分钟环境搭建Python安装、pip配置、Django安装、IDE选择45分钟创建项目项目结构、基本配置、运行测试75分钟实战练习创建个人博客项目框架60分钟 二、Djang…

查询三网话费余额接口,移动话费余额接口、电信话费余额接口、联通话费余额的接口+html前端查询UI界面

PHP是直接请求的接口&#xff0c;HTML代码也是直接请求的接口。如果HTML想上线运行&#xff0c;还是需要做下安全的。 下边是PHP代码 <?php // 定义API接口地址和参数 $apiUrl "https://api.taolale.com/api/Inquiry_Phone_Charges/get"; //API文档地址&…

tklog0.2.8—Rust高性能日志库

tklog是rust高性能结构化日志库&#xff0c;支持同步日志&#xff0c;异步日志&#xff0c;支持自定义日志的输出格式&#xff0c;支持按时间&#xff0c;按文件大小分割日志文件&#xff0c;支持日志文件压缩备份&#xff0c;支持官方日志库标准API&#xff0c;支持mod独立参数…

网络原理初识一>网络基本的概念, 网络如何转发

目录&#xff1a; 一.网络基本的概念&#xff1a; 二. 封装和分用 (网络转发)&#xff1a; 一.网络基本的概念&#xff1a; 1..局域网 (LAN)&#xff1a; 局域网&#xff0c;即 Local Area Network&#xff0c;简称LAN。 Local 即标识了局域网是本地&#xff0c;局部组建的…

Golang学习笔记_08——For循环

Golang学习笔记_05——延迟调用 Golang学习笔记_06——变量和常量 Golang学习笔记_07——基本类型 文章目录 For循环1. 基本形式2. 省略形式3. While循环4. 无限循环5. 使用 range 进行迭代 源码 For循环 在Go语言中&#xff0c;for 循环是唯一的一种循环结构&#xff0c;它非…