仅用(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,再以实参的形式传递出去,子函数多个参数接口接着, 这样其他的函数变可以获得数组的长度