前一天学习的数组,接下来要学习的是二维数组和函数。
一.二维数组
1.1引入场景
有三个小队,每个小队都有10个人,对小队进行一些操作。
1.2二维数组的定义和表达形式
二位数组通常称为矩阵 类型说明符 数组名[常量表达式][常量表达式] 例:
int arr[3][3]; //一个三行三列的二维数组
1.3二维数组的遍历
#include<stdio.h> int main() { int arry[2][3] = {{5,4,3},{3,8,9}}; int i,j; for(i=0;i<2;i++){ for(j=0;j<3;j++){ printf("%d,%d,%d \n",i,j,arry[i][j]); } } return 0; }
1.4一些注意事项
二维数组可以不写列,但是一定要写行
1.5练习题
有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号
#include<stdio.h> int main() { int i; int j; int hang; int lie; int arry[3][4] = {1,8,12,2,3,67,4,5,6,5,90}; int max = arry[0][0]; for(i=0;i<3;i++){ for(j=0;j<4;j++){ if(max < arry[i][j]){ max = arry[i][j]; hang = i; lie = j; } } } printf("%d %d %d",max,hang+1,lie+1); return 0; }
二.函数
2.1为什么要用函数
2.1 1.避免代码冗长
2.1.2.模块化的设计思路
2.1.3.按功能划分,每个函数代表一个功能
2.2函数三要素
函数名 参数列表 返回值 c语言要求,再程序中用到的所有函数,必须“先定义,后使用”
2.3函数的定义和调用
类型名 函数名(){ 函数体 }
2.3.1定义无参函数
#include<stdio.h> void printWelcome() { printf("=======\n"); printf("欢迎\n"); printf("=======\n"); } int main() { printWelcome(); return 0; }
2.3.2定义有参数返回值的函数
#include<stdio.h> int getDataFromX(int data) { return 2*data + 1; } int main() { int x; int y; puts("请输入一个数:"); scanf("%d",&x); y = getDataFromX(x); printf("x = %d,y = %d",x,y); return 0; }
2.3.3定义空参数
占坑用
2.4形式参数和实际参数
传递参数,传递是值 形参和实参值相同,但是地址空间不同。形式参数的生命周期:栈空间,被调用的时候才为形式参数申请内存,调用结束,内存才被释放。编程案例:输入两个函数,要求输出其较大值,用函数实现
#include<stdio.h> int getMaxFromTwoData(int data1,int data2)//形式参数 { return data1>data2?data1:data2; } int main() { int a; int b; int max; puts("请输入两个数:"); scanf("%d %d",&a,&b); max = getMaxFromTwoData(a,b);//实际参数 printf("a = %d,b = %d,max = %d",a,b,max); return 0; }
2.5函数调用过程
2.6函数调用的条件
1.函数已被定义2.调用库函数3.函数的声明
2.7函数的嵌套
案例:输入四个数,函数的方式找出最大值
#include<stdio.h> int getMaxFromTwoData(int data1,int data2) { return data1>data2?data1:data2; } int getMaxFromThreeData(int data1,int data2,int data3) { int ret = getMaxFromTwoData(data1,data2); return ret>data3?ret:data3; } int getMaxFromFourData(int data1,int data2,int data3,int data4) { int ret = getMaxFromThreeData(data1,data2,data3); return ret>data4?ret:data4; } int main() { int a; int b; int c; int d; int max; puts("请输入四个数:"); scanf("%d%d%d%d",&a,&b,&c,&d); max = getMaxFromFourData(a,b,c,d);//实际参数 printf("a = %d,b = %d,c = %d,d = %d,max = %d",a,b,c,d,max); return 0; }
2.8函数的递归
工作时应该尽量减少递归的使用。
编程案例:用递归法求n!
#include<stdio.h> int factorial(int data) { if(data == 0){ return -1; }else if(data ==1){ data = 1; return data; }else{ return data*factorial(data-1); } } int main() { int data; int res; puts("请输入一个数"); scanf("%d",&data); res = factorial(data); printf("阶乘为%d",res); }
标签:return,函数,int,data1,第三天,C语言,学习,data,data2 From: https://www.cnblogs.com/Lynchteacher/p/17274682.html