js 实现2的n次方计算函数_C++学习笔记整理-函数


前面几章大体上和C差不多,就从函数开始吧。

第三章 函数

1 .函数的定义与使用

函数定义的语法形式:

类型标识符  函数名(形式参数表)
{
      
   语句序列
}
  • 若无返回值,类型标识符写void
  • 形式参数表:是被初始化的内部变量,寿命和可见性仅限于函数内部

函数的调用

调用前先声明函数:

  • 若函数定义在调用点之前,则无需另外声明;
  • 若函数定义在调用点之后,则需要在调用函数前按如下形式声明函数原型:

类型标识符 被调用函数名(含类型说明的形参表);

调用形式:

函数名(实参列表)

  • 嵌套调用: 在一个函数的函数体中,可以调用另一函数,称为嵌套调用。
  • 递归调用: 函数直接或间接调用自身。

//1.编写一个求x的n次方的函数

#include <iostream>
using namespace std;

//计算x的n次方
double power(double x,int n)
{
    
    double val=1.0;
    while(n--)
        val*=x;
    return val;
}

int main()
{
    
    cout << "5 to the power 2 is :"<< power(5, 2) << endl;
    return 0;
}




//2.数制转换
//输入一个8位二进制数,将其转换为十进制数输出。
//例如:11012=1(23)+1(22)+0(21)+1(20)=1310 
//所以,如果输入1101,则应输出13

#include <iostream>
using namespace std;

double power (double x,int n); //计算x的n次方

int main()
{
    
    int  value=0;
    cout <<"Enter an 8 bit binary number ";
    for (int i=7;i>=0;i--) 
    {
    
      char ch;
      cin>>ch;
      if (ch =='1')
            value+=static_cast<int>(power(2, i));
    }
    cout<<"Decimal value is "<<value<<endl;
    return 0;
}

double power(double x,int n)
{
    
    double val=1.0;
    while(n--) 
      val*=x;
    return val;
}



/*3.编写程序求π的值
π=16arctan(1/5)-4arctan(1/239)
其中arctan用如下形式的级数计算:
arctanx=x-x^3/3+x^/5-x^7/7+...
直到级数某项绝对值不大于10-15为止;π和x均为double型。*/

#include <iostream>
using namespace std;

double arctan(double x)
{
    
    double sqr = x * x;
    double e = x;
    double r = 0;
    int i = 1;
    while (e / i > 1e-15) {
    
        double f = e / i;
        r = (i % 4 == 1) ? r + f : r - f;
        e = e * sqr;
        i += 2;
    }
    return r;
}

int main() 
{
    
    double a = 16.0 * arctan(1 / 5.0); 
    double b = 4.0 * arctan(1 / 239.0); 
    /* 注意:因为整数相除结果取整,如果参数写1/5,1/239,结果就都是0 */

    cout << "PI = " << a - b << endl;
    return 0;
}



/*4.寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。
回文:各位数字左右对称的整数。
例如:11满足上述条件 
112=121,113=1331。
分析:
10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。*/

#include <iostream>
using namespace std;
//判断n是否为回文数
bool symm(unsigned n)
{
    
  unsigned i = n;
    unsigned m = 0;
    while (i > 0) {
    
      m = m*10+i%10;
      i/=10;
  }
  return m==n;
}

int main()
{
    
    for(unsigned m = 11; m < 1000; m++)
      if (symm(m) && symm(m * m) &&
          symm(m * m * m)) {
    
        cout << "m = " << m;
        cout << "  m * m = " << m * m;
        cout << "  m * m * m = "
             << m * m * m << endl;
      }
    return 0;
}

/5.计算如下公式,并输出结果: $$ k = begin{cases} sqrt{sin^2r+

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值