reply
a>b?a:b //真则执行a 假执行b
表达式1 ? 表达式2 :表达式3
表达式1? --是真 or假
若是真 则执行 表达式2
若是假 则执行 表达式3
(1).类型标识符
返回值的类型标识符 函数名(形式参数)//函数头---规定函数的形式
(2).函数名-------和函数功能对应
(3).形式参数-------函数节后数据的入口
形参----不是一定要有
看函数功能的需要
形参使用时:
a个数相同
b类型匹配
c形参 与 实参匹配顺序
//顺序是从右想做
(4).函数体---- 完成函数具体功能的代码
(5).返回值类型
返回值如果没有 返回值类型写成void
返回的结果的类型与定义返回值类型不一致,以定义的返回值类型为准
返回值的类型如果不写,默认为int型
函数定义的位置:
1.main函数之前
2.main函数之后
需要进行函数声明!
函数调用的形式:
add(a,b);//函数调用语句
int ret;
ret = add(a,d);
ret = add(a,b)
{
声明部分 //函数的身体 函数体 ------实现函数具体功能的代码
语句部分 //
}
如何定义函数?
eg
实现两个数求和 ?
a+b -----函数具有复用性
编程思维首先准备数据-->处理数据-->输出结果
y = f(x) //x-->y
函数思维 输入数据-->处理数据-->带出结果
准备数据:
准备两个数据---形式参数需要能接收两个数据---本身为变量!
处理数据:
a+b
返回结果:
return
函数名:add
形式参数::
int a,b;//形式参数不可这样写
数据类型 形参变量名1.数据类型 形参变量名2,....
这样写 int a, int b
功能:a+b
结果:
return结果;
1.函数实现
主要是 代码逻辑
2.流程图---某一个功能块
3.main函数
主逻辑
针对每个功能块 画一个流程图
main函数的流程图:
打印月份天数的流程图:
判断闰年的流程图:
打印100以内的素数:
main-->printprimeNUMIn100---> //函数嵌套调用
月份天数的查询:
main-->getMouthDays-->leapyear//函数调用的本质?
栈----数据结构---先进后出(FILO)//First In Last out
linux系统上,默认情况下 8M 但其大小可以调整,
1.栈:特点:先进后出(FILO)
8m
主要:局部变量
自动申请 自动释放
2.堆:
特点:
大!!
手动申请 手动释放
3.字符串常量区:
char s[10] = "hello";
4.全局区(静态区)
全局变量(静态变量)
5.代码区:
内存的五个区
程序 = 代码 + 数据
函数的嵌套调用: 有一种特殊的嵌套调用---递归:自己调用自己
//即为循环的意思
递归的思路,来实现代码?
循环需要
1.初始条件2.结束条件3.趋于结束的操作4.循环体
递归来达到如上想法
//倒着来
递归 --------递推--->回归----递归
写出代码:
1.递推关系 //重复的
2.结束条件 //递推的最后一项
用递归思路写出1~100求和
sum(100)=sum(99)+100
sum(99)=sum(98)+99
sum(n)=sum(n-1)+n
//sum()
递归来实现: //倒着来
sum(100)
|--sum(99)+100
|--sum(98)+99
|--sum(97)+98
...
|--sum(2)+3
|--sum(1)+2
|--1
递归函数内部的逻辑:
1.看是否递归结束?
如果结束,返回结束时的值
2.如果没结束
继续返回上一步