仅用(A[0] ~ A[N-1] 与 i ,这N+1个变量)不借助min变量求数组最小/大值

仅用(A[0] ~ A[N-1] 与 i ,这N+1个变量)不借助min变量求数组最小/大值

address: 天勤第二章线性表课后习题综合运用题 思考题 41页

#include<stdio.h>
#include<string.h>

# define N 6
 
int finMin(int A[], int &i)	//A是待查数组,i用来保存最小值 
{
	// i%100 == min
	// i/100 == 代替循环变量 
	i = A[0];
	while(i/100 <= N-1){
		if(i%10 > A[i/100])
		{
			i = i - i%10;	//如果i的个位上的数字(i%100)大于A[i/100]对应数字,则将个位上的数字换成A[i/100] 
			i = i + A[i/100];
		}
		i = i+100;
		printf("当前的i=%d\n", i);
	}  
	i = i % 100;
	return i;
} 
int main(){
	int arr[6] = {31,52,23,14,6,8};	//数组长度要刚好等于初始化方框里的长度 
	int res;
	finMin(arr, res);
	printf("%d", res);
	return 0;
} 

由此思考C语言数组遍历的问题,如何在函数不传参数的情况下获得数组长度呢()

sizeof是运算符,返回 unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。

它的功能是:获得保证能容纳实现所建立的最大对象的字节大小

**sizeof(arr) / sizeof(int) <==> sizeof(arr) / sizeof(ary[0]) **得到 arr 内的元素的个数

获取数组大小,必须在声明的函数内获取;不能在子函数中获取。

int main(){
	int arr[6] = {31,52,23,14,65,86};	//数组长度要刚好等于初始化方框里的长度 
	int res;
	int count = sizeof(arr)/sizeof(arr[0]);//子函数中无法正确获取数组大小
	printf("%d\n", count);
	for(int j=0; j<count; j++){
		printf("%d",arr[j]);
	}
//	printf("%d", res);
	return 0;
} 

非要在子函数中获得数组长度咋整?
答:建议在定义数组的函数中计算数组的长度, 得到arrLength,再以实参的形式传递出去,子函数多个参数接口接着, 这样其他的函数变可以获得数组的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值