c/c++语言开发共享『嗨威说』常见的C++函数模板整理(一)

开学两天,身上的职责直接变为两个班班长,三个小组组长,哇这事情估计够我忙活了,想躲都躲不掉啊,看来我还是真招人推荐各种管理职务啊,以后要是有人推荐我当经理啊领导啊该多好哈哈哈哈。记得今天奶奶生日,很开心地给奶奶打了一通电话,这怕是我第一次给奶奶电话送生日祝福了哈哈哈,是啊,很想珍惜身边的人,但很多时 …


  开学两天,身上的职责直接变为两个班班长,三个小组组长,哇这事情估计够我忙活了,想躲都躲不掉啊,看来我还是真招人推荐各种管理职务啊,以后要是有人推荐我当经理啊领导啊该多好哈哈哈哈。记得今天奶奶生日,很开心地给奶奶打了一通电话,这怕是我第一次给奶奶电话送生日祝福了哈哈哈,是啊,很想珍惜身边的人,但很多时候却一心想提高自己地能力而忽视了身边人,就这四年,就这四年好好提升自己,毕业出来一定要好好陪陪家里祖辈亲戚们。

  今天有点特殊,我整理了一下学到这么久编程以来的一些模板和技巧,虽然还没整理完,就作为(一)吧,后面会慢慢更新(其实是今天解不出难题哭了,一天一道acm都要死了,可能自己训练量和能力远远不够吧,所以渣渣了,努力努力!)

 

 

今日推荐:

  今天心情很糟糕,每次心情很烂的时候总会去听听自己最最最喜欢的歌曲没有之一,去激励自己走出烂心情,希望读到这篇博客的读者们,也能轻松摆脱自己的烂心情,笑对人生~

《于是》 – 邓紫棋

 

  既然回不去了 我还在烦恼什么
  于是告诉自己不要哭
  我不要哭 我不能哭
  往前方的路走一步
  再走一步 就会幸福
  成长要学会独处
  虽然有一点孤独
 

链接:https://music.163.com/#/song?id=36198060&autoplay=true&market=baiduhd

 

 

(-> 001)分割数值(倒序输出)模板:

#include<iostream>  using namespace std;  int main()  {      int num,k;      cin >> num;      while(num>0)      {          k = num % 10;          cout<<k<<" ";          num = num / 10;      }  }

 

 

(-> 002)求a、b的最大公约数:

    法一:

long long gcd(long long m, long long n)  {      return (m==0)?n:gcd(n%m, m);  }

    法二:

int gcd(int big, int small)  {      if (small > big) swap(big, small);      int temp;      while (small != 0){ //  辗转相除法          if (small > big) swap(big, small);          temp = big % small;          big = small;          small = temp;      }      return(big);  }

 

 

(-> 003)求a与b的最小公倍数。 与上面函数配合使用。

long long lcm(long long a, long long b)  {     return a / gcd(a, b) * b;  }

 

 

(-> 004)判断素数的方法:

    法一:

bool sushu(int num)  {      int sqrto,test = 0;      sqrto = sqrt(num);      for(int i = 2;i<=sqrto;i++)      {          if(num%i==0) break;          else test++;      }      if(test == (sqrto -1)) return 1;      else return 0;  }

    法二:

bool judge(int x){      for(int i=2;i<sqrt(x);i++)          if(x%i==0)              return false;      return true;  }

 

 

(-> 005)全排列输出:

void pern(int list[], int k, int n) {   //  k表示前k个数不动仅移动后面n-k位数      if (k == n - 1) {          for (int i = 0; i < n; i++) {              printf("%d", list[i]);          }          printf("n");      }else {          for (int i = k; i < n; i++) {   //  输出的是满足移动条件所有全排列              swap(list[k], list[i]);              pern(list, k + 1, n);              swap(list[k], list[i]);          }      }  }

 

 

(-> 006)向量工具:

struct node {        double x; // 横坐标        double y; // 纵坐标    };      typedef node vector;    vector operator + (vector a, vector b) { return vector(a.x + b.x, a.y + b.y); }    vector operator - (point a, point b) { return vector(a.x - b.y, a.y - b.y); }    vector operator * (vector a, double p) { return vector(a.x*p, a.y*p); }    vector operator / (vector a, double p) { return vector(a.x / p, a.y*p); }      double dot(vector a, vector b) { return a.x*b.x + a.y*b.y; } // 向量点乘    double length(vector a) { return sqrt(dot(a, a)); }  // 向量模长    double angle(vector a, vector b) { return acos(dot(a, b) / length(a) / length(b)); }  // 向量之间夹角      double cross(vector a, vector b) { // 叉积计算 公式        return a.x*b.y - a.y*b.x;    }      vector rotate(vector a, double rad) // 向量旋转 公式  {        return vector(a.x*cos(rad) - a.y*sin(rad), a.x*sin(rad) + a.y*cos(rad));    }      point getlineintersection(point p, vector v, point q, vector w) { // 两直线交点t1 t2计算公式         vector u = p - q;         double t = cross(w, u) / cross(v, w);  // 求得是横坐标        return p + v*t;  // 返回一个点    }  

 

 

(-> 007)组合公式:

long long int c(int m,int n) {      int k=1;//相当于c(m,n)      long long int ans=1;      while(k<=n) {          ans=((m-k+1)*ans)/k;          k++;      }      return ans;  } 

 

 

(-> 008)大数阶乘公式:

string bigfactorial(int n){      int ans[maxn],digit = 1;      ans[0] = 1;      for(int i = 2; i <= n; i++){          int num = 0;          for(int j = 0; j < digit; j++){              int temp = ans[j]*i + num;              ans[j] = temp%10;              num = temp/10;          }          while(num != 0){              ans[digit] = num%10;              num /= 10;              digit++;          }      }      string str = "";      for(int i = digit-1; i >= 0; i--)          str += ans[i] + '0';      return str;  }

 

 

(-> 009)杨辉三角打印:

#include<iostream>  #include<cstdlib>  using namespace std;  long long int s=1;  long long int h,i,j;    int main()  {      while(cin>>h)      {          cout<<"1"<<endl;          for (i = 2; i <= h; s= 1, i++)          {              cout<<"1 ";              for (j = 1; j <= i - 2; j++)              {                  cout<<(s = (i - j) * s / j)<<" ";              }              cout<<"1"<<endl;          }          cout<<endl;      }      return 0;  } 

 

 

(-> 010)其他整理:

    1、char c1,c2,c3的int型即为ascii码

    2、cout << setprecision(2) << fixed << 固定精度输出

    3、printf(“%.2lfn”,num)用于输出double类型数据并固定精度

    4、获取需要空格输入的段落:

char a[100];  cin.getline(a, 100)

    5、数组a[100]的清零操作 memset(a,0,sizeof(a)); 

    6、  getchar();//把回车符吃掉,否则下一句会出错

      gets(a); //读取整行
      length=strlen(a); //获得长度

 

 

   前阵子的一些小模板,积累了起来,贴在博客就方便自己或者有需要的人使用啦~ 我会继续更新这些比较实用常用的小模板呢~ 如有错误,希望评论指正哟~ 互相帮助才能更加成长~

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/605048.html

(0)
上一篇 2021年5月13日
下一篇 2021年5月13日

精彩推荐