前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >C语言函数调用和数组错误总结

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

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

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

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
复制
#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
复制
	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
复制
int arr[8] = {0};

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

代码语言:javascript
代码运行次数:0
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档