前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言函数调用和数组错误总结

C语言函数调用和数组错误总结

作者头像
小志biubiu
发布于 2025-02-27 06:41:58
发布于 2025-02-27 06:41:58
14800
代码可运行
举报
运行总次数:0
代码可运行

这部分是函数调用错误和数组错误总结

当时写的二分法查数组位置,用函数调用二分法,给大家看一下我的错误调用方式,我直接把定义的函数名整体粘贴复制用,后来改了也是带着int 哈哈.  (错误示范)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void bin_search(int arr[], int left, int right, int key);

正确写法如下,这样调用才正确.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bin_search(arr,left,right,key);

顺便给大家介绍一下二分法查数组位置

这个方法是确定左右位置,通过重复取中方式来减小范围,锁定要搜寻的数值,然后打印位置下标.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int bin_search(int arr[], int left, int right, int key);
// arr 是查找的数组
//left 数组的左下标
//right 数组的右下标
//key 要查找的数字
int main()
{
	int arr[9] = { 1, 3, 5, 7, 9, 54, 23, 87, 12 };
	int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int left = arr[0];
	int key;
	scanf("%d", &key);
	bin_search(arr,left,right,key);
	return 0;
}

int bin_search(int arr[], int left, int right, int key)
{
	int f = 0;
	int mid = 0;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			f = 1;
			break;
		}
	}
	if (f == 1)
	{
		printf("找到了,下标是%d\n", mid);
	}
	else
	{
		printf("找不到\n");
	}
	return 0;
}

在这过程中我也有个小错误,比如混淆了下标和值,导致运行出错.下面这种,明明是下标缩小范围,我把它写成arr[mid],变成数值没法缩小范围.   (错误示范) 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > key)
		{
			right = arr[mid - 1];
		}
		else if (arr[mid] < key)
		{
			left = arr[mid + 1];
		}

重复踩坑的就是数组的函数调用, (错误示范)

我这里想实现一个调用函数使定义的数组初始化为0, 一心想着像定义一样初始化数组就不停尝试下面这样初始化,   (错误示范)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int arr[8] = {0};

但正确的方式下面是用赋值方式将所有元素赋值为0,来实现要求.,而且满足函数的 高内聚 ,低耦合 ,用int sz来求数组长,再去传数值, 应用函数再调用.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	init(arr, sz);
	print(arr, sz);
	return 0;
}
void init(int arr[],int sz)
{
	for (int i = 0; i < sz; i++)
	{
		arr[i] = 0;
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C:每日一题:二分查找
每次将待查找的范围缩小一半,通过比较中间元素与目标元素的大小,来决定是在左半部分还是右半部分继续查找。
LonlyMay
2024/10/21
940
C:每日一题:二分查找
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
以前,我们查找数组元素都是利用for循环进行下标索引去查找我们想要的元素,但是今天呢,我想对比循环和二分法两种不同方式的差距,让我们在以后学习或者工作中更加便捷,快速,高效的去做一些项目
ImAileen
2024/01/18
1110
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
C语言函数二分查找(折半查找)
C语言函数二分查找(折半查找) 参考视频讲解哔哩哔哩比特鹏哥的视频 ——链接 二分查找 #include <stdio.h> //二分查找 //在一个有序数组中查找具体的某个数 //如果找到了返回,这个数的下标,找不到返回-1 //例如我要在这个数组中找到7 //首先找到这组被查找元素的中间的元素 //假如说发现中间元素5要比我要找的数要小 //说明我要找的数在5的右边,这样我的范围就缩小了一半 //查找了一次范围就缩小了一半,这样的速度是比较快的 //这就叫二分查找(折半查找)
半生瓜的blog
2023/05/12
9310
C语言实现二分法
在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半 。
用户10781703
2024/02/02
1370
C语言——D/数组
数组是⼀组相同类型元素的集合; • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0; • 数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组,多维数组⼀般⽐较多见的是⼆维数组。
用户11015888
2024/03/11
1660
C语言——D/数组
【初级】C语言——函数
在计算机科学中,子程序(英语: Subroutine, procedure, function, routine, method,
xxxflower
2023/04/16
1.7K0
【初级】C语言——函数
数组练习之二分查找和多个字符从两端向中间汇聚
实现思路:定义两个字符数组,将要移动的字符数组元素赋值给另一个数组元素,实现多个字符行两端向中间汇聚。(sizeof,strlen详解:sizeof,sizeof与strlen的区别-CSDN博客
用户11328191
2024/10/23
1110
数组练习之二分查找和多个字符从两端向中间汇聚
C语言------数组
type指定的是数组中存放数据的类型,可以是char、short、int 、float
凯子坚持C
2024/09/23
1940
【C语言】变长数组,二分查找和数组之间自动替换的实现
上一回我们了解了一维数组和二维数组的创建,初始化,和使用,这次我们拓展C语言的变长数组和查找的讲解。
学习起来吧
2024/02/29
1550
【C语言】变长数组,二分查找和数组之间自动替换的实现
计算机小白的成长历程——分支与循环(6)
大家好,很高兴又和各位见面了,在上一篇内容结尾有两道题目不知道大家有没有自己去尝试编写代码,今天咱们通过几道题目开始今天的内容。
蒙奇D索隆
2023/10/13
1670
计算机小白的成长历程——分支与循环(6)
C语言——数组
什么是数组呢?从名字上来看,数组、数组是不是就是数据的组合呢?让我们来看看数组的概念,数组是⼀组相同类型元素的集合,我们需要注意的是数组中存放的是1个或者多个数据,但是数组元素个数不能为0。同时 数组中存放的多个数据,是相同类型的。
用户11352420
2024/11/07
1980
C语言——数组
【C语言】一维数组(含数组二分查找)
    数组也是有类型的,数组算是⼀种⾃定义类型,去掉数组名留下的就是数组的类型,比如:
TANGLONG
2024/10/15
1190
【C语言】一维数组(含数组二分查找)
c语言从入门到实战——数组
C语言数组是一种用来存储相同类型元素的数据结构,它由一组连续内存空间组成,并且每个元素的大小相同。这些数据按照一个固定的顺序排列。数组可以有一个或多个维度,每个维度的大小必须是正整数。
鲜于言悠
2024/03/20
4840
c语言从入门到实战——数组
【C语言】C语言基础习题详解(牛客网)&&二分查找逻辑
三目运算符,即a>b?a:b类型的,很多时候适当的使用三目运算符可以使得代码更简洁有序,减小代码的复杂程度,接下来的例子就可以很明显的展示三目运算符的作用
用户10925563
2024/06/04
1490
【C语言】C语言基础习题详解(牛客网)&&二分查找逻辑
有序数组中查找具体数字n(二分查找)
   我们先定义一个有序的数组arr,再设置数组中的一个数字k为我们所寻找的值,当数字与算法结果匹配时,打印“找到了,下标为–”,若该数字在数组中未查找到,则打印“找不到”。   因为该数组是有序的,我们可以利用一个循环结构,当i
RAIN7
2021/08/11
8720
C语言系列之数组
定义:数组是一组相同类型元素的集合。 ①数组中存放的是1个或多个数据,但数组元素的个数不能为0。 ②数组中存放的多个数据,类型是相同的。 数组分为一维数组和多维数组,多维数组一般比较多见的是二维数组。
四念处茫茫
2025/02/02
960
C语言系列之数组
【C语言篇】从零带你全面了解数组(超详细)
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。
半截诗
2024/10/09
3250
【C语言篇】从零带你全面了解数组(超详细)
关于我、重生到500年前凭借C语言改变世界科技vlog.14——常见C语言算法
根据当前所学C语言知识,对前面知识进行及时的总结巩固,出了这么一篇 vlog 介绍当前所学知识能遇到的常见算法,这些算法是在C数据结构初阶常用的一些算法,重要性不言而喻,本章将用简单易懂的语言带领读者深入理解
DARLING Zero two
2024/11/19
700
C++021-C++二分查找
在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/
用户2225445
2023/10/16
2440
C++021-C++二分查找
【C语言刷怪篇】二分法
在我们的学习过程,难免会遇到许多问题。当我们遇到问题时,无论他简单与否,先试着能不能自己解决它,实在不行再去寻找高人求助。尽量不要遇到问题都还没面对他,就去请大佬把他解决了,这样对我们的学习帮助很小,而且不经过思考就解决的问题,也很难让我们去记住他,以后遇到同样的问题还是要去请大佬。就像你是一位原神萌新,每次打周BOSS的时候都要请其他的满级大佬来帮你打,但是打完之后所有突破材料都被大佬拿走了,你只能混到一点经验值。因此在日常生活中,不管我们遇到的是什么样的问题,我们都应该先去直面它,尽自己最大的力想出该问题的解决方法,这样我们才能触类旁通,事半功倍
f狐o狸x
2024/11/19
1150
【C语言刷怪篇】二分法
相关推荐
C:每日一题:二分查找
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验