【函数】
什么是函数:
抽象化功能语句模块
【模块化编程】
代码复用率
1. 函数声明
返回值数据类型 《函数名》(形式参数, ...);
2. 返回值 值传递
(1) 无返回值 void
(2) 有返回值:int char
1. 返回值 传递信息;
2. main 函数执行效果, 0 成功 , 负数 失败
3. 判断真假 1, 0 或者 if 或者 ?; ---》 bool
3. 形式参数 局部变量 值传递
注意:逗号分隔参数,个数依据逗号表达式决定
【基本数据类型
(1)复制传递方式 值赋值 a = A;
(2)地址传递方式 值赋值, 值--》地址
(3)全局变量 理想 !
【数组构造类型
(1)复制传递方式 值赋值 a[] = A[10]; 地址复制;
(2)地址传递方式 值传递 int A[10], int * str = A;
(3)全局变量
【多维数组 拓展
(1)复制传递方式 值赋值 int *a[]
(2)地址传递方式 值传递 int **a
(3)全局变量
4. 函数实现
返回值数据类型 《函数名》(形式参数, ...){
语句体;
return 值;
}
5. 函数调用:
形参:局部变量, 复制实参值参与运算;
实参:传递将要参与运算的值给形参;
函数命名:
驼峰命名法 FoxMail
fox_mail
【实践】
1. 写一个函数,实现两个数据的交换
2.编写一个函数,统计字符串中小写字母的个数,并把字符串中的小写字母转化成大写字母
3. 编写函数实现, 计算x^n (x的n次); 数据类型 复制传递
4. 编写函数实现, 一维数组累加和; 数组
5. 编写函数实现, 删除字符串中的空格;
6. 函数实现: 一维数组排序(升序);
7. 编写函数,计算一个二维整形数组的所有元素的和 拓展
void fun(int a[3][4]);
void fun(int *a);
void fun( int (*a)[]);
void fun( int *a[]);!!!
void fun( int **a);
指针的指针:
void fun( int **a ){
*a == &a;
}
int a = 10;
int *data = &a ;
fun(&data)
面试题:
1. 自己实现字符串函数功能
(strlen、strcmp)**
(strcat、strcpy) *** 返回值 int char float ? 指针类型
2. 编写函数,计算一个二维整形数组的所有元素的和 **** (多维数组传参)
3. consider a function which ,for a given whole number n,returns the number of ones required when writing out all numbers between 0 and n.
For example,f(1) = 1,f(13) = 6,Notice that f(1)=1.What is the next largest that f(n)=n?
n<4 000 000 000
e.g. f(13)=6
because the number of “1” in 1,2,3,4,5,6,7,8,9,10,11,12,13 is 6(1,11,12,13)
美国著名搜索引擎公司G 面试题 *****
答案:
题目翻译:现在要我们写一个函数,计算4 000 000 000以内的最大的那个f(n)=n的值,函数f的功能是统计所有0到n之间所有含有数字1的数字个数和。