回顾前面所学:
顺序结构
分支结构
循环结构
预处理符号 #
#include
头文件有
<stdio.h>
包含 输入输出
<string.h>
包含字符串
<math.h>数学符号
void main(void)
变量定义赋初值
预处理
预算符:
数字运算符、赋值运算符
关系运算符
逻辑运算符(与或)
三目运算
min = (a < b) ? a : b
-
函数概述
-
自定义函数
-
函数定义及调用
-
函数嵌套
-
递归函数
-
数组与函数
-
函数应用程序举例
-
变量的作用域和存储类型
函数
- c语言程序的特点:函数化结构
- 函数分类:系统函数、用户函数
- 系统函数:printf()、scanf()、sqart()等
- 用户函数:在程序中编写的函数,又称为自定义函数
- 用户函数特例:main()函数
- 如果在程序中经常需要某种处理,可将其处理过程或方法编写为函数,需要时调用即可。
- example:计算a!+b!+c!
#include<stdio.h>
int main()
{
int a,b,c,i;
long t,sum;
printf("Input a,b,c:");
scanf("%d%d%d",&a,&b,&c);
for(t=1L,i=1;i<=a;i++){
t=t*i;
sum=t;
}
for(t=1L,i=1;i<=b;i++){
t=t*i;
sum+=t;
}
for(t=1L,i=1;i<=c;i++){
t=t*i;
sum+=t;
}
printf("SUM=%ld\n",sum);
}
这种代码是最简单,容易想到的。但是重复劳动了。
阶乘是a=1*(1+1)*(1+1+1)+.....
所以计数器i++,t=1L,t=t*i;
a!=t*i
将t赋给sum,sum=t+t+t;
a!+b!+c!
三种阶乘的算法一样,我可不可以直接用一种算法,解决所有的循环呢?
待会儿说。
自己敲一遍代码:
#include<stdio.h>
int main(){
int a,b,c,i;
long sum,t=1L;
printf("请输入a,b,c");
scanf("%d%d%d",&a,&b,&c);
for(i=1;i<=a;i++)
t=t*i;
sum=t;
}
for(i=1;i<=b;i++)
t=t*i;
sum+=t;
}
for(i=1;i<=c;i++)
t=t*i;
sum+=t;
}
printf("SUM=%ld",sum);//这里的ld是长整型的意思
下面写出一个最简单的程序,解决重复劳动的问题
#include <stdio.h>
int main()
{
long f(int);
int a,b,c;
printf("Input a,b,c");
scanf("%d%d%d",&a,&b,&c);
printf("a!+b!+c!=%ld",f(a)+f(b)+f(c));
}
long f(int n)
{
long t;
int i;
for(t=1L,i=1;i<=n;i++)
t*=i;
return t;
}
这里直接调用函数
在这里我直接再默写一下
#include<stdio.h>
void main(){
long f(int);
int a,b,c;
printf("请输入a,b,c");
scanf("%d%d%d",&a,&b,&c);
printf("a!+b!+c!=%ld",f(a)+f(b)+f(c));
}
long f(int n))
{
for(t=1L,i=1;i<=n;i++)//这里的n就是a,b,c的通项,简称通用公式。
t*=i;
return t;
}
是这样的,我用的编译器不能识别void,所以你用int和 void都行,void是空类型,int是整形的。
还可以放到上面
#include<stdio.h>
void main(){
long f(int n))
{
for(t=1L,i=1;i<=n;i++)//这里的n就是a,b,c的通项,简称通用公式。
t*=i;
return t;
}
int a,b,c;
printf("请输入a,b,c");
scanf("%d%d%d",&a,&b,&c);
printf("a!+b!+c!=%ld",f(a)+f(b)+f(c));
}
函数定义的一般格式
函数类型 函数名(形式参数){
函数体
}
形式参数表格式
(数据类型 变量1,数据类型 变量2,,.......数据类型 变量n)
函数定义示例
定义连续输出n个*字符的函数
void pNstars(int n){
int i;
for(i=1;i<=n;i++)
putchar('*');
}
函数值及return
函数值:函数执行后带回的一个结果
函数值通过函数体中return返回
return 格式
return 表达式;
或
return (表达式);