学习C语言的第四天

继续进行上一次的数组。

一,数组

1.1数组作为函数的参数  

复制代码
#include<stdio.h>

void printArr(int arry[3])    //形参中不存在数组的概念,即便中括号约定了数组的大小,也无效
                            //传递是一个地址,是数组的首地址
{
    int i;
    for(i=0;i<3;i++){
        printf("%d ",arry[i]);
    }
}

int main()
{
    int arry[3]={1,3,5};
    printArr(arry);  //实参
    return 0;
}            
复制代码

数组作为形参时,传递的是地址。编程案例,有两个班的同学,分别是10个人和5个人,分别求这两个班的平均分。

复制代码
#include<stdio.h>

float twoClassAverage(int arr[],int len)
{
    int total = 0;
    for(int i=0;i<len;i++){
        total = arr[i] + total;
    }
    return total/(float)len;
}
int main()
{
    int arr1[5] = {50,56,90,39,31};
    int arr2[10] = {23,56,89,90,35,67,58,97,67,60};
    int arr1Len = sizeof(arr1)/sizeof(arr1[0]);
    int arr2Len = sizeof(arr2)/sizeof(arr2[0]);
    
    printf("一班的平均成绩为:%.2f",twoClassAverage(arr1,arr1Len));
    printf("二班的平均成绩为:%.2f",twoClassAverage(arr2,arr2Len));
    
    return 0;
}
复制代码

1.2二维数组作为函数的参数

  形参怎么写  注意列,可以不注意行 正确写法 int[2][3];

                   int[][3];

                   错误写法int[][];

复制代码
#include<stdio.h>

void printArryDouble(int arr[][3])
{
    int i;
    int j;
    for(i=0;i<2;i++){
        for(j=0;j<3;j++){
            printf("%d ",arr[i][j]);
        }    
        putchar('\n');
    }
}

int main()
{
    int arr[2][3] = {{1,4,7},{8,20,7}};
    printArryDouble(arr);
    
    return 0;
}
复制代码

练习:有3*4矩阵,初始化它并输出,然后求最大值并输出

复制代码
#include<stdio.h>

void printArryDouble(int arr[][4],int hang,int lie)
{
    int i;
    int j;
    for(i=0;i<hang;i++){
        for(j=0;j<lie;j++){
            printf("%d ",arr[i][j]);
        }    
        putchar('\n');
    }
}
void initArryDouble(int arr[][4],int hang,int lie)
{
    int i;
    int j;
    for(i=0;i<hang;i++){
        for(j=0;j<lie;j++){
            printf("请输入%d行,第%d列的数据",i+1,j+1);
            scanf("%d",&arr[i][j]);
        }    
    }
}
int getMaxDataFromArryDouble(int arr[][4],int hang,int lie)
{
    int i;
    int j;
    int max = arr[0][0];
    for(i=0;i<hang;i++){
        for(j=0;j<lie;j++){
            if(max < arr[i][j]){
                max = arr[i][j];
            }
        }    
    }
    return max;
}

int main()
{
    int arr[3][4];
    initArryDouble(arr,3,4);
    printArryDouble(arr,3,4);
    printf("最大值为%d",getMaxDataFromArryDouble(arr,3,4));
    
    return 0;
}
复制代码

1.3全局变量

案例:班上10个学生,封装一个函数,调用该函数后获得班上的平均分,最高分,最低分

复制代码
#include<stdio.h>

int max;
int min;

float getAverage(int arr[],int len)
{
    int sum = 0;
    max = arr[0];
    min = arr[0];
    
    for(int i=0;i<len;i++){
        sum = sum + arr[i];
        if(max < arr[i]){
            max = arr[i];
        }
        if(min > arr[i]){
            min = arr[i];
        }
    }
    return (float)sum/len;
}

int main()
{
    int scores[] = {89,67,45,67,80,67,45,23,56,78};
    float average;
    
    average = getAverage(scores,sizeof(scores)/sizeof(scores[0]));
    printf("平均分数为%.2f,最高分为%d,最低分为%d",average,max,min);
    
    
    return 0;
}
复制代码

 

posted @   林奇老师  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示