函数一

函数:函数声明,函数定义,函数调用。

/*计算两个数的平均值。*/
#include<stdio.h>
void main()
{
    int x,y;
    double avg(double a,double b);
    printf("输入两个数\n");
    scanf("%d%d",&x,&y);

    printf("%d和%d的平均值为:%.2f\n",x,y,avg(x,y));//函数调用
}
double avg(double a,double b)
{
    double c;
    c=(a+b)/2;
    return c;
}

程序分析:该程序包含两个函数,分别为main函数和avg函数,main函数是C语言中必须有的,并且只能有一个,C语言从main函数开始执行并终止于main函数。avg函数是人为定义的一个函数,功能是计算两个数的平均值。
定义为:

double avg(double a,double b)
{
    double c;
    c=(a+b)/2;
    return c;
}

函数开始处的double表示avg的返回类型,也称函数类型,也就是每次调用函数的返回类型。avg是函数名称,称为函数名。标识符a和b是函数的形式参数,表示在调用avg函数时提供求平均值的两个数。每个形式参数必须有类型。函数的形式参数本质上是变量,其初始值在调用函数时才能提供。
函数类型、函数名和函数参数构成了函数头部。
每个函数都有一个大括号括起来的执行部分,称为函数体。
为了激活函数,需要写函数名和跟随其后的实际参数,例如avg(x,y)。实际参数等价于该函数的输入部分。调用avg(x,y)的效果就是把变量x和y的值分别赋值给形式参数,然后执行avg函数的函数体。实际参数不需要一定是变量,任何类型的表达式都可以。

/*计算1到10的和。*/
#include<stdio.h>
void sum(int begin,int end)
{
    int i;
    int sum=0;
    for(i=begin;i<=end;i++)
    {
        sum+=i;
    }
    printf("%d到%d的和为:%d\n",begin,end,sum);//函数调用
}
int main()
{
    sum(1,10);
    sum(11,20);
}

如果把main函数放到前面,把认为定义的函数放到后面。需要先声明函数才可以使用。

/*计算1到10的和。11到20的和*/
#include<stdio.h>

void sum(int begin,int end);//函数声明

int main()
{
    sum(1,10);
    sum(11,20);
    return 0;
}

void sum(int begin,int end)//函数定义
{
    int i;
    int sum=0;
    for(i=begin;i<=end;i++)
    {
        sum+=i;
    }
    printf("%d到%d的和为:%d\n",begin,end,sum);
}

C语言在调用函数时只能传值给函数。
函数声明:函数类型 函数名[形参];

函数声明必须与函数定义一致,函数声明可以不说明形参的名称。最好不要省略形参名称。函数声明一定要在函数调用之前。

函数声明:

#include<stdio.h>

void sum(int begin,int end);//函数声明

int main()
{
        .......
        return 0;
}

形参只能是变量,不能是常量或者表达式。

/*输出数字金字塔。*/
#include<stdio.h>

void jzt(int n);//函数声明

int main()
{
    int num;
    printf("请输入金字塔的层数\n");
    scanf("%d",&num);

    jzt(num);//函数调用,输出金字塔
    return 0;
}

void jzt(int n)//函数定义
{
    int i,j;
    for(i=1;i<=n;i++)//金字塔层数
    {
        for(j=1;j<=n-i;j++)//每行左边的空格岁
        {
            printf(" ");

        }
        for(j=1;j<=i;j++)//每行数字
        {
            printf("%d ",i);
        }
        printf("\n");
    }
}

函数jzt的功能很明确,就是从键盘上输入金字塔的层数,然后在屏幕上显示出来,不做任何运算,也没有计算结果所以不需要返回值。形参n决定了金字塔的层数,当执行函数调用jzt(num)时,将实参num的值传给形参n,然后继续执行函数定义中的语句,在函数定义内部只能访问形参。不能访问实参。

例题、判断1777和1991是否为素数。
程序分析:素数是只能被1和本身整除的整数。判断素数的方法是用1到sqrt(n)去除n,若都不能整除n,则n是素数,函数返回1,否则n不是素数,函数返回0.

/*判断一个数是否为素数*/
#include<stdio.h>
#include<math.h>

int prime(int n);//函数声明

int main()
{
    int num;
    printf("请输入一个数\n");
    scanf("%d",&num);

    if(prime(num))
    {
        printf("%d是素数!\n",num);
    }
    else
    {
        printf("%d不是素数!\n",num);
    }
    return 0;
}

int prime(int n)//函数定义
{
    int i,k,result;
    k=sqrt(n);

    for(i=2;i<=k;i++)
    {
        if(n%i==0)break;
    }
     if(i>k)
            result=1;
        else result=0;
    return result;
}
函数                头文件

输入、输出函数   iostream.h  
数学函数 math.h
字符和字符串函数 string.h
动态分配函数 malloc.h
图形函数 graphics.h 

#include<iostream.h>
#include<math.h>
double fx(double x);

void main()
{   double  a,y;
    cout<<"please input a(1<=a<5):";
    cin>>a;
    y=fx(a-1)+fx(2*a)+fx(a*a);
    cout<<"y="<<y;            
}
double fx(double x)
{   double f;
    if(x>=1 && x<4) f=3*x+5;
    if(x>=4 && x<8) f=2*sin(x)-1;
    if(x>=8)        f=sqrt(1+x*x);
    return f;        
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值