类型标识符 函数名 (形式参数)
{
语句声明
语句声明
}
(1).类型标识符 (返回值的类型的标识符)
返回值类型
返回值 如果没有,返回值类型 一般写成void
返回的结果的类型 与 定义返回值类型 不一致 ,以定义的返回值类型为准
返回值的类型如果不写,默认为int型
(2).函数名-------一般和函数功能对应
(3).形式参数------函数接收数据的入口
形参不是一定要有,需要看函数的需要,在没有形参的时候,一般要写成void。
(4).函数体--------完成函数具体功能的代码
add(a,b)//函数调用语句
或者
int ret;
ret = add(a,b); //说明函数调用在表达始中
ret = add(a,b)+3; //函数调用成为表达式的一部分
printf(”sum = %d\n“,add(a,b));//表示函数作为某个函数的实际参数;
返回值的类型标识符 函数名(形式参数)//函数头-----规定了下一个函数的形式
{
函数体 //实现函数功能的代码
返回结果 //return 返回结果
}
1.main函数之前
2.main函数之后:要加函数声明即-----函数头 + 分号 ;函数声明最次要放在使用之前
#include
int max(int a,int b)
{
if (a>b)
{
return a;
}else
return b;
}
int main(void)
{
int a,b;
scanf ("%d%d",&a,&b);
int num=max(a,b);
printf("max=%d\n",num);
return 0;
}
#include
int Prime(int a)
{
int i=0;
for (i=2;i
#include
void Prime100(void)
{
int i=0;
for(i=2;i<100;++i)
{
if (Prime(i)!=0)
{
printf("%d ",i);
}
}
putchar('\n');
return ;
}
int main(void)
{
Prime100();
return 0;
}
#include
int Year(int a)
{
if (a%4==0 && a%100!=0 || a%400==0)
{
return 1;
}else
{
return 0;
}
}
int Days(int y,int m)
{
int day=0;
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
day=m==2?mon[m-1]+Year(y):mon[m-1];
return day;
}
int main(void)
{
int y=0;
int m=0;
printf("Enter Year Month: \n");
scanf("%d%d",&y,&m);
printf("%d\n",Days(y,m));
return 0;
}
1.函数实现:主要是代码的逻辑
2.流程图:主要是某个功能块儿
3.main函数:指的是主函数 针对每个功能块
4.函数调用的本质:函数调用就是一个函数调到另一个函数中实现其功能 结束之后返回到原来位置,也就是所谓的”进栈“和”出栈“。
特点:先进后出(FILO) 栈的空间默认是8M 同时也可以更改
主要:局部变量
自动申请 自动释放
int a;
特点:空间大 手动申请 手动释放
常量区是全局区中划分的一个小区域,里面存放的是常量,如const修饰的全局变量、字符串常量等。
全局将变量区
以上就是内存的五个区
程序 = 代码 + 数据
有一种特殊的嵌套调用------递归(自己调用自己)
递归就是循环
分为直接递归和间接递归
递归求1+-----+100的和:
//sum()
递归来实现: //倒着来
sum(100)
|--sum(99)+100
|--sum(98)+99
|--sum(97)+98
...
|--sum(2)+3
|--sum(1)+2
|--1
写出代码:
1.递推关系 //重复的
第n项 与 第n-1项之间的关系
2.结束条件
sum(100) = sum(99)+100
sum(99) = sum(98) + 99
……
sum(2) = sum(1)+2
sum(1) = 1
sum(n) = sum(n-1) + n
int sum(int n) //n = 2
{
if 递归是否结束? (n==1)
{ //结束
return 1;
}else
{
return sum(n-1)+n;
}
}
递归函数内部的逻辑:
1.看是否递归结束了?
如果结束,返回结束时的值
2.如果没结束
递归继续往
作业:
1. 封装一个函数,获得两个数的最大公约数 5 3 封装一个函数,获得两个数的最小公倍数 5 3
返回值类型: int 参数: int a,int b
函数名: Gcd //greatest common divisor(gcd)
lowest common multiple (LCM)
least common multiple
函数体: 实现思路
#include
int Gcd(int a,int b)
{
int p=0;
if (a>b)
{
p=b;
}else
{
p=a;
}
while(p>1&&a%p==0&&b%p==0)
{
return p;
p--;
break;
}
return 1;
}
int Lcm(int a,int b)
{
int q=(a*b)/Gcd(a,b);
return q;
}
int main(void)
{
int a,b;
printf("Enter two natural numbers: \n");
scanf("%d %d",&a,&b);
printf("Greatest common divisor=%d\n",Gcd(a,b));
printf("Least common multiple=%d\n",Lcm(a,b));
return 0;
}
2. 打印1000以内的所有回文数,用函数实现 应该拆分成两部分 判断回文数 打印回文数。
#include
int Pas(int n)
{
int p=0;
if (n>9 && n<=99)
{
if (n/10==n%10)
{
p=1;
}
}
if(n>99 && n<1000)
{
if (n/100==n%10)
{
p=1;
}
}
return p;
}
int main(void)
{
int num;
for(num=10;num<1000;++num)
{
if (Pas(num))
{
printf("%d ",num);
}
}
putchar('\n');
return 0;
}