1619-7 张良 十一月九号总结 [连续第四十天]

标题:学习函数

关键词:函数

内容:

1  有参宏

有参宏定义的一般格式为   #define 宏名(形参列表) 字符序列。

值得注意的是宏参和形参列表之间是不能有空格的。

所以求两个数中最的那个应该这么写:#define MAX(a,b)(a>b)?a:b

在C++中,?:是一个唯一的三目运算符.
语句1? 语句2 : 语句3
首先它对语句1进行运算,当语句1的值是 TRUE (值为非零)时,执行语句2;当语句1的值是 FALSE (值为零)时,执行语句3.


所以根据这个可以写一个判断三个数中最大值的程序。


#include <iostream>

#define MAX(a,b)(a>b)?a:b

int main()

    int x=5,y=3,z=6,m;

    m=MAX(x,y);

    m=MAX(m,z);

    std::cout<<m<<std::endl;

}

当然也可以写成一个,不用运算两次

#include <iostream>

#define MAX(a,b,c)(a>b)?(a>c)?a:c:(b>c)?b:c

int main()

{

    int x=5,y=3,z=6,m;

    m=MAX(x,y,z);

      std::cout<<m<<std::endl;

}

2  条件编译

就是可以通过人工来确定哪些程序编译哪些不编译(有点不太懂)


好了看例题

定义函数求e^x的近似解,要求最后一项小于10的-6次方,求e^x的近似值公式为=====

#include <iostream>

#include<math.h>

int fun(int n)

{

if(n==1)

    return 1;

    else

        return n*(n-1);

}//n的阶✖️

int main()

{

    double sum,m,a;

    int n=1,x;

    sum=1.0;

    std::cin>>x;

    m=x;//这个m是用来记xn次方的

    a=m/fun(n);//a用来计算每一个项的大小

    while(a<1E-6)

    {

        sum+=a;

        m*=x;

        n++;

        a=m/fun(n);

    }

    std::cout<<"sum="<<sum<<'\n';

}

例二

统计二维数组中所有元素的平均值,并将二维数组中小于平均值单位元素储存在一个一维数组中,同时输出这些元素,及其个数

#include<iostream>

#define M 3

#define N 4

float ave(int a[][N],int n)

{

    float sum=0;

    for(int i;i<n;i++)

        for(int j;j<N;j++)

            sum+=a[i][j];

    return sum/(n*N);

}

int fun(int(*p)[N],int n,int *b)

{

    float average=ave(p,n);

    std::cout<<"平均数为"<<average<<std::endl;

    int k=0;

    for(int i;i<n;i++)

        for(int j;j<N;j++)

            if(p[i][j]<average)

            {

                *(b+k)=p[i][j];

                k++;

            }

    return k;//这个函数代表小于平均数的元素的个数

}

int main()

{

    int num[M][N]{{1,10,20,30},{20,15,10,5},{3,6,9,12}};

    int c[(M)*(N)];//建立一个一维数组,这个数组肯定够用

    int count=fun(num,M,c);//现在count就代表小于平均数的元素的个数

    std::cout<<"二维数组中的元素的个数为"<<(M)*(N)<<'\n';

    std::cout<<"二维数组中的元素为";

    for(int i;i<M;i++)

        for(int j;j<N;j++)

        {

            std::cout<<num[i][j]<<'\t';

            std::cout<<'\n';

        }

    std::cout<<"小于平均数的元素为";

    for(int i;i<count;i++)

        std::cout<<c[i]<<'\t';

    std::cout<<std::endl;

    std::cout<<"小于平均数的个数为"<<count<<std::endl;

}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值