学习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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!