C语言学习第7天二维数组和函数第五章

1. 二维数组及其见怪不怪的初始化(41.4.6、42.4.7)

  • demo_arrays.c 二维数组的初始化赋值、输出(常量表达式里可以不写行,但是一定要写列)
#include 

int main()
{
	int arr[2]={1,2};
	//int array[2][3]={{102,205,304},{406,511,612}};
	int array2[3][4]={10,20,35,45,52,69,78,88,99,100,111,122};
	//int array2[3][4]={10,20,30,30,40,50,60}
	//int array2[3][4]={{10},{20},{30}}
	
	/*int i,j;
	for(i=0;i<2;i++){
		for(j=0;j<3;j++){
			printf("(%d,%d,%d):",i,j,array[i][j]);
			printf("%d,%p ",array2[i][j],&array2[i][j]);
		}
		putchar('\n');
	}*/
	int i,j;
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			printf("(%d,%d,%d):",i,j,array2[i][j]);
			printf("%d",array2[i][j]);
		}
		putchar('\n');
	}
	return 0;
}

2. 二维数组应用之找最大值及对应下标(43.4.8)

  • demo_ex_max.c 找最大值及对应下标
#include 

int main()
{
	int i;
	int j;
	int line;
	int column;
	int array[3][4] = {{1,20,35,48}
					,{54,64,72,84}
					,{99,100,111,122}};
	int max;
	
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			printf("%d \t",array[i][j]);//\t制表符是四个空格
		}
		printf("\n");
	}
	
	max = array[0][0];//身高最高的那个汉子,先记录第一个来挑战的汉子的身高在纸上
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			if(max < array[i][j]){//如果纸上记录的身高比当前这个小鬼的身高矮,重新写入新的身高
				max = array[i][j];
				line = i+1;
				column = j+1;
			}
		}
	}
	printf("其中在%d行第%d列的数%d最大\n",line,column,max);
	return 0;
}

第五章函数

3. 为什么需要用函数(44.5.1)

  • 避免代码冗长
  • 模块化的设计思路
  • 按功能划分,每个函数代表一个功能,而函数的名字要体现函数的功能含义,类似变量标识符y=f(x)

4. 函数三要素(45.5.2)

  • 函数名:体现功能
  • 参数列表
    比如y=f(x),x就是参数;
    比如z=f(x,y),x,y就是参数;
    参数的个数根据需求自行定义
  • 返回值
    比如y=f(x),y是函数根据x的值和f的功能执行后的结果
    另外,函数体:执行什么样的功能,涉及的处理代码叫做函数体

5. 函数的封装和调用(46.5.3)

  • demo_func.c 定义无参数函数、定义有参数有返回值函数(如y=f(x)
    一个返回值,一个参数)
#include 

void welcome()//定义无参数函数
{
	printf("========================\n");
	printf("欢迎来到我的程序,baby\n");
	printf("========================\n");
}
//整个函数只关心数据和值、变量类型
int getDataFromX(int x)//形式参数,需要包含变量类型,变量名(非必须)--定义有参数有返回值函数
{
	int data;
	data = x;
	
	return data; 
}

int main()
{
	int x;
	int y;
	
	welcome();
	puts("请输入一个数:");
	scanf("%d",&x);
	//y = getDataFromX(x);
	y = getDataFromX(x+10);
	//y = getDataFromX(100);
	printf("x=%d,y=%d\n",x,y);
	return 0;//有返回值
}

6. 函数的封装和调用2(47.5.4)

  • demo_add.c 定义有参数有返回值函数、空函数、函数调用注意的几个问题
#include 

//三要素: 返回值,参数列表,功能
int add(int data1, int data2, int data3)//函数原型
{
	int ret;
	ret = data1 + data2 + data3;
	return ret;
}

int main()
{
	int x;
	int y;
	int z;
	int fret;
	//int ret;
	
	puts("请输入一个数:");
	scanf("%d",&x);
	puts("请再输入一个数:");
	scanf("%d",&y);
	puts("请再输入一个数:");
	scanf("%d",&z);
	//fret = add(x,y,z)+100;
	fret = add(x,y,z)+100;
	printf("%d+%d+%d=%d\n",x,y,z,add(x,y,z));
	printf("FRET=%d\n",fret);
	return 0;
}

7. 形参实参区别(48.5.5)

  • demo_mem.c 形参和实参
#include 

//数据和值
int test(int x)//形式参数,需要包含变量类型,变量名(非必须) 生命周期:栈空间,
				//被调用的时候才为形式参数申请内存,调用结束,内存有被系统释放
				//局部变量的有效作用空间(作用域)要记得
{
	//int y;
	printf("test的x内存地址是%p,数值是%d\n",&x,x);
	return 0; 
}
//变量四要素: 名 类型 值 地址
int main()
{
	int x;
	int y;

	
	
	puts("请输入一个数:");
	scanf("%d",&x);
	printf("main的x内存地址是%p,数值是%d\n",&x,x);
	y = test(x);//实际参数
	//printf("x=%d,y=%d\n",x,y);
	return 0;
}

8. 编程案例函数封装获取两个数的大数(49.5.6)

  • demo_ex_max.c 获取两个数的大数
#include 

float getMaxDataFromTwo(float x, float y)//类型名:返回值的类型有关(float)
{
	//int z;
	/*
	if(x > y){
		z = x;
	}else{
		z = y;
	}
	*/
	//z = x>y?x:y;//三目运算符:工作、面试会有;跟以上if表达等同一个意思
	return x>y?x:y;
	//return z;
}

int main()
{
	float data1;
	float data2;
	float maxOne;
	//输入两个数
	//提示输入
	puts("请输入两个数:");
	//获取输入
	scanf("%f%f",&data1,&data2);
	//函数调用
	maxOne = getMaxDataFromTwo(data1, data2);
	//输出结果
	printf("两个数据是%.2f,%.2f,大数是:%.2f\n",data1,data2,maxOne);
	return 0;
}

你可能感兴趣的:(c语言,学习,算法)