C语言代码之函数相关例子
注:博主是个小白,也是第一次写博客,希望通过这个方式来激励自己,以及寻找不足。如果有什么不对的地方,希望大家多多指正。
下面还有重要的知识点哟,会的就当复习复习吧!
1、求两个数的最大值
/*求两个数的最大值*/
#include<stdio.h>
float max(float a,float b){/*被调用函数max的定义*/
float m;/*声明部分*/
if(a>b)
m=a;
else {
m=b;}
return m;/*返回两个数的最大值*/
}
int main(){
float x,y,z;
printf("请输入两个数:");
scanf("%f%f",&x,&y);
z=max(x,y);/*函数调用,求两个数的最大值*/
printf("最大值为:%.2f\n",z);/*输出两个数的最大值*/
}
2、定义两个函数,计算阶乘的和
/*定义两个函数,计算1!+2!+3!...+(n-1)!+n!的和*/
#include<stdio.h>
long factorial(int n);/*函数的声明,也可以写成long factorial(int)*/
long sum(long n);/*函数的声明,也可以写成long sum(long)*/
int main(){
printf("1!+2!+3!+...+9!+10!=%ld\n",sum(10));
return 0;
}
long factorial(int n){/*函数定义,求阶乘*/
int i;
long result=1;
for(i=1;i<=n;i++){
result*=i;
}
return result;
}
long sum(long n){/*函数定义,求累加的和*/
int i;
long result=0;
for(i=1;i<=n;i++){
result+=factorial(i);
}
return result;
}
3、交换两个变量的值
/*交换两个变量的值*/
#include<stdio.h>
void change(int a,int b){/*被调用函数change的定义*/
int t;
printf("a=%d b=%d\n",a,b);/*输出变量值*/
t=a;/*交换变量的值*/
a=b;
b=t;
printf("a=%d b=%d\n",a,b);/*输出变量的值*/
}
void main(){
int x,y;
printf("请输入两个函数:");
scanf("%d%d",&x,&y);
printf("x=%d y=%d\n",x,y);/*函数调用前,输出变量的值*/
change(x,y);/*发生函数调用*/
printf("x=%d y=%d\n",x,y);/*函数调用后,输出变量的值*/
}
/*交换两个变量的值*/
#include<stdio.h>
void exchange(int *a,int *b){
int t;
printf("a=%d b=%d\n",*a,*b);/*输出形参值*/
t=*a;/*交换形参值*/
*a=*b;
*b=t;
printf("a=%d b=%d\n",*a,*b);/*输出交换后的形参值*/
}
void main(){
int x,y;
printf("请输入两个数:");
scanf("%d%d",&x,&y);
printf("x=%d y=%d\n",x,y);
exchange(&x,&y);/*发生函数调用*/
printf("x=%d y=%d\n",x,y);/*函数调用后,输出变量值*/
}
4、计算s=n2!+m2!
/*计算s=n^2!+m^2!*/
#include<stdio.h>
long f1(int a){/*被调用函数f1的定义*/
int k;
long r;
long f2(int);{/*被调用函数f2的声明*/
k=a*a;/*计算a的平方值*/
r=f2(k);/*调用函数f2,计算a的平方的阶乘*/
return r;/*返回函数值*/
}
long f2(int b){/*被调用函数f2的定义*/
long c=1;
int i;
for(i=1;i<=b;i++)/*计算b的阶乘*/
c=c*i;
return c;/*返回函数值*/
}
void main(){
int n,m;
long s;
printf("请输入两个整数:");
scanf("%d%d",&n,&m);
s=f1(n)+f1(m);
printf("s=%ld\n",s);
}
5、用递归算法计算n!
/*用递归算法计算n!*/
#include<stdio.h>
int fac(int n){/*函数fac的定义*/
if((n==1)||(n==0))
return 1;/*n的值为0或1时的返回值*/
else
return n*fac(n-1);/*n的值大于1时的返回值*/
}
void main(){
int m,y;
printf("请输入一个整数:");
scanf("%d",&m);
if(m<0)
printf("输入错入!\n");
else
y=fac(m);/*调用函数fac*/
printf("%d!=%d\n",m,y);
}
6、局部变量代码示例
/*局部变量代码示例*/
#include<stdio.h>
void main(){
int i,j,k;/*定义局部变量ijk*/
i=6;j=5;
k=i+j;/*计算K的值,结果为11*/
{/*复合语句*/
int k=20;/*局部变量k*/
printf("%d\n",k);
}
printf("%d,%d,%d\n",i,j,k);
}
7、全局变量示例
/*全局变量示例*/
#include<stdio.h>
int a,b;/*定义全局变量ab*/
int f1(){
a=a+10;
b=b+15;
return a+b;
}
int f2(){
int a=1;/*定义局部变量a*/
a=a+5;
b=b+8;
return a+b;
}
void main(){
int x,y;/*定义局部变量xy*/
x=f1();
printf("x=%d a=%d b=%d\n",x,a,b);
y=f2();
printf("y=%d a=%d b=%d\n",a,b);
}
8、自动变量示例
/*自动变量示例*/
#include<stdio.h>
void main(){
auto int a,s,p;/*定义asp为自动整形变量*/
s=10;p=10;
printf("请输入一个整数:");
scanf("%d",&a);
if(a>10){
int s,p;
s=a*a;
p=a+a;
printf("s=%d p=%d\n",s,p);/*输出变量值*/
}
printf("s=%d p=%d\n",s,p);/*输出变量值*/
}
9、静态局部变量应用示例
/*静态局部变量应用示例*/
#include<stdio.h>
void f(){
static int j=0;/*定义静态局部变量k*/
int i=0;/*定义自动变量i*/
i=i+1;
j=j+1;
printf("%d %d\n",i,j);
}
void main(){
int i;/*定义自动变量i*/
for(i=1;i<=4;i++)
f();/*函数调用*/
}
10、寄存器变量示例
/*寄存器变量示例*/
#include<stdio.h>
void main(){
register int i,s=0;
for(i=1;i<=200;i++)
s=s+i;
printf("s=%d\n",s);
}
11、外部变量应用示例
/*外部变量应用示例*/
#include<stdio.h>
int fun(int x,int y){
extern int h;/*外部变量声明*/
int v;/*定义局部变量v*/
v=x*y*h;
return v;
}
int x=3,y=4,h=5;/*定义外部变量xyh*/
void main(){
int x=5;/*定义局部变量x*/
printf("v=%d",fun(x,y));
}
重要知识点回顾
1)声明部分是对函数体内部所用到的变量的声明
2)主函数main()只能是主调函数,不予许其他函数调用主函数
3)函数的调用方式有三种:(1) 作为表达式的一部分
(2)构成函数调用语句
(3)作为另一函数的实参
4)形参只有函数被调用时才会临时分配存储单元,调用结束时内存单元被释放,故形参只有函数调用是有效
5)形参只能是变量,实参可以是常量、变量、表达式
6)函数不能嵌套定义,但可以嵌套调用
好啦,因为时间关系,今天就写这么多,还有很多知识点没写,下次单独总结,希望大家多多支持,也希望大家多多提建议
嘿嘿~~