系统函数:由系统定义好的、用户可直接使用的函数叫做库函数
C语言程序是由一组函数组成的。C语言程序总是从main()函数处开始执行。main()函数可以调用其他函数,其他函数之间也可以相互调用,且被调用次数不限,但其他啊函数不能调用main()函数。
#include<stdio.h>
void print_image(int n) /*打印规范图形*/
{
int i,j;
printf("\n");
for(i=0;i<n-1;i++)
printf(" ");
printf("*");
for(i=0;i<n-2;i++)
{
printf("\n");
for(j=0;j<n-2-i;j++)
printf(" ");
printf("*");
for(j=0;j<2*i+1;j++)
printf(" ");
printf("*");
}
printf("\n");
for(i=0;i<2*n-1;i++)
printf("*");
}
main() /*主函数调用自定义函数*/
{
int i;
printf("请输入需要打印三角*阵的行数:\n");
scanf("%d",&i);
print_image(i);
}
对于不加类型说明符的函数,返回值一律按整型处理。
当返回值是数值时,返回值的类型可以是char型、int型、short型、long型、float型及double型;当返回值为地址时,函数的返回值应为指针型。
判断一个数是否为素数,若为素数返回1;否则返回0。(所谓素数,是指仅能被1和自身整除的大于1的整数)
#include<math.h>
int isprime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if ((i%2)==0)
return 0;
return 1;
}
指针作为函数的返回值
类型标识符 *函数名(形式参数表)
函数名前的“*”号表示函数返回指针类型的数据,类型标识符则表示函数返回的 指针所指向目标的类型。
/*求一维数组中的最大元素的地址*/
#include<stdio.h>
int *max(int a[],int n)
{
int *pa,*pmax;
pmax=a;
for(pa=a+1;pa<a+n;pa++)
if(*pmax<*pa)
pmax=pa;
return pmax;
}
main()
{
int a[10],*p;
printf("请输入需要比较的数据:\n");
for(p=a;p<a+10;p++)
{
scanf("%d",p);
}
p=max(a,10);
printf("max=%d",*p);
}
函数的递归调用
在函数的递归调用过程中,并不是重新复制该函数,而是重新石永红新的 变量和参数。每次 递归调用时都要保存旧的参数和变量,使用新的参数和变量,每次递归调用返回时,再恢复旧的参数和变量,并从函数中上次递归调用的地方继续执行。
/*求斐波拉契级数前20项的函数*/
#include<stdio.h>
long f(int n)
{
if(n==0||n==1)
return 1;
else
return f(n-1)+f(n-2);
}
main()
{
int i;
for(i=0;i<20;i++)
printf("%ld ",f(i));
printf("\n");
system("pause");
}