C Programming Language | Manipulating arrays in functions

c 复制代码
#include <stdio.h>
/*
1.编写一个函数,打印传入的数组中的所有元素。
	 
*/
void printArr(int arr[],int len){
		for(int i=0;i<len;i++){
			printf("%d\n",arr[i]);
		}
}

int main(){
	//int 类型的数组
	int arr1[5]={1,2,3,4,5};
	int arr2[3]={7,8,9};

	printArr(arr1,5); 
	printArr(arr2,3); 
	return 0;
} 
//函数中操作数组 
//printf("在函数中传入数组");

改变原地址

c 复制代码
void funArr(int arr[]){
    arr[0]=100;
    arr[1]=200;
}

int main(){
    // int 类型的数组
    int arr[]={1,2};
    printf("%d %d\n", arr[0], arr[1]);
    funArr(arr);
    printf("%d %d\n", arr[0], arr[1]);
}

局部变量不改变

c 复制代码
void f(int m){
    m += 10;
}

int main(){
    int m = 1;
    printf("m=%d\n", m); // 1
    f(m);
    printf("m=%d", m); // 1
}

任务1: 定义一个函数,它的参数是int数组,它的返回值是数组中的所有元素的和。 int getArrSum(int arr\[\], int len){

}

c 复制代码
int getArrSum(int arr[], int len){
    int sum = 0;
    for(int i = 0; i<len; i++){
        sum += arr[i];
    }
    return sum;
}

int main(){
    int arr[3] = {1,2,3};
    printf("%d", getArrSum(arr, 3));
}

任务2: 定义一个函数,它的参数是int数组,它的返回值是数组中的所有元素的最大值。 int getArrMax(int arr\[\], int len){ }

c 复制代码
//任务2:获取数组中的最大值
#include <stdio.h>
int getArrMax(int arr[], int len) {
    // 处理数组长度为0的异常情况
    if (len <= 0) {
        printf("数组长度无效!\n");
        return 0; // 或根据需求返回其他标识值
    }
    // 假设第一个元素为最大值
    int max = arr[0];
    // 遍历数组,从第二个元素开始比较
    for (int i = 1; i < len; i++) {
        if (arr[i] > max) {
            max = arr[i]; // 更新最大值
        }
    }
    return max;
}

// 测试函数
int main() {
    // 测试用例1:普通数组
    int arr1[5] = {3, 7, 2, 9, 5};
    printf("数组1的最大值:%d\n", getArrMax(arr1, 5)); // 输出9

    // 测试用例2:包含负数的数组
    int arr2[4] = {-5, -2, -8, -1};
    printf("数组2的最大值:%d\n", getArrMax(arr2, 4)); // 输出-1

    // 测试用例3:单元素数组
    int arr3[1] = {10};
    printf("数组3的最大值:%d\n", getArrMax(arr3, 1)); // 输出10

    return 0;
}

任务3: 定义一个函数,它的参数是int数组,和要查找的值。如果在这个数组中,能找到,则返回第一个找到的值的下标; 如果找不到,则返回-1 int findArrValue(int arr\[\], int len, int val) { }

c 复制代码
#include <stdio.h>

// 任务3:查找数组中目标值的第一个下标,未找到返回-1
int findArrValue(int arr[], int len, int val) {
    // 处理数组长度无效的情况
    if (len <= 0) {
        printf("数组长度无效!\n");
        return -1;
    }
    // 遍历数组,逐个匹配目标值
    for (int i = 0; i < len; i++) {
        if (arr[i] == val) {
            return i; // 找到目标值,返回当前下标
        }
    }
    // 遍历结束未找到,返回-1
    return -1;
}

// 测试函数
int main() {
    // 测试用例1:目标值存在且出现多次
    int arr1[6] = {3, 7, 2, 7, 5, 9};
    int index1 = findArrValue(arr1, 6, 7);
    if (index1 != -1) {
        printf("目标值7的第一个下标:%d\n", index1); // 输出1
    } else {
        printf("未找到目标值7\n");
    }

    // 测试用例2:目标值不存在
    int index2 = findArrValue(arr1, 6, 10);
    if (index2 != -1) {
        printf("目标值10的第一个下标:%d\n", index2);
    } else {
        printf("未找到目标值10\n"); // 输出该语句
    }

    // 测试用例3:单元素数组且匹配
    int arr2[1] = {5};
    int index3 = findArrValue(arr2, 1, 5);
    if (index3 != -1) {
        printf("目标值5的第一个下标:%d\n", index3); // 输出0
    } else {
        printf("未找到目标值5\n");
    }

    // 测试用例4:空数组(长度为0)
    int arr3[0];
    int index4 = findArrValue(arr3, 0, 2);
    if (index4 != -1) {
        printf("目标值2的第一个下标:%d\n", index4);
    } else {
        printf("未找到目标值2(数组为空)\n"); // 输出该语句
    }

    return 0;
}
相关推荐
M78佐菲11 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
wWYy.12 小时前
C++与C的区别
c语言·c++
LuminousCPP13 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
程序员与背包客_CoderZ17 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
william_yangshun17 小时前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
Yyyyyy~19 小时前
【C语言】数据类型和变量【下】
c语言
小雪崩20 小时前
嵌入式学习 day30:minilog
linux·c语言·学习
二级小助手1 天前
C语言二级操作题高频真题精解与大题代码模板
c语言·计算机二级·二级c语言·c语言操作题·c语言真题·c语言大题
kkkkkkkkkk_Z1 天前
学嵌入式和C语言编程数据结构|学习日记Day22:栈,二叉树,哈希存储
c语言·数据结构·学习
Navigator_Z1 天前
LeetCode //C - 1206. Design Skiplist
c语言·算法·leetcode