zoukankan      html  css  js  c++  java
  • ACM之常见的(C++版)问题解析

    1.常见的输入输出格式问题

    a.输入第一行包含数据组数T,接下来的T行分别输入
    int main()
    {
    ........
    int T;
    cin>T;
    while(T--)
    {
      .......
    }
    ......
    return 0;
    }
    }
    b.读入直至文件结束int main()
    {
    ........
    int T;
    while(cin>>T)
    {
      .......
    }
    ......
    return 0;
    }
    }
    2.浮点数精度设置问题
    头文件#include<iomanip>
    输出时cout<<fixed<<setprecision(n)<<T<<endl;
    即输出T,保留小数点后T位小数

    3.取整问题
    头文件 #include<cmath>
     向上取整:double   ceil(double   x)    
     向下取整:double   floor(double   x)   
       也可以用数据类型强制转换,那要看数据的大小  
        可以用int()或long()     比如int(104.23)   =   104
    4.排序问题
    头文件 #include<algorithm>
    最常用:sort(begin,end,compare);
    begin:初始迭代器位置  end:末迭代器位置+1,compare:排序函数
    例:
    vector<int>   vec;
    vec.push_back(2);
    vec.push_back(5);
    vec.push_back(3);

    bool comapre(int a,int b)//注意参数类型必须是容器参数类型,函数写在main函数外面
    {
      return  a>=b;//以递减的顺序排序
    }
    sort(vec.begin(),vec.end(),compare);//vec.end()实际上指向最后一个元素的下一位

    5.一般数组初始化方法

    头文件#include<string.h>

    int  array[1000000];

    memset(array,0,sizeof(array));//以内存块为初始化单位,速度快,一般推荐使用

    6.消除string中的重复项

    头文件:

    #include<string>

    #include<algorithm>

    例:

    string  str("aaasssdddsssaa");

    sort(str.begin(),str.end());

    str.erase(unique(str.begin(),str.end()),str.end());

    7.删除第一个字符串中含有的所有的第二个字符串中的字符

    为提高效率,首先消除第二个字符串中的重复项,见6

    其次(假设第一个字符串string str1("djasasghjasdg"))

    bool compare(char ch)//在main函数外面编写
    {
     for (it2=str2.begin();it2!=str2.end();it2++)
      if (ch == *it2)
      return true;
    return false;
    }

    str1.resize(remove_if(str1.begin(),str1.end(),compare) - str1.begin());

    cout<<str1<<endl;

    8.字符串输入一整行问题

    string  str;

    getline(cin,str);//不包括换行符

    9.字符串转换成不同进制整数问题:

    将一个字符串类型char str[]转化换成n进制的数

    头文件:#include<stdlib.h>

    long int strtol(const char *nptr,char **endptr,int base)

    这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数范围从2到36,或0.参数base代表采用的进制方式,但遇到如'0x'前置字符则会使用16进制做转换,遇到'0'前置字符而不是'0x'前置字符的时候会使用8进制做转换。一开始strtol会扫描

    参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。弱参数endptr不为NULL,则会将遇到不符合条件而终止的nptr中的字符指针由endptr返回;若endptr为NULL,则不会返回非法字符。

    同理:

    strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数

    strtoll()将参数nptr字符串根据参数base来转换成长整型数

    10.C++输出格式问题

    例如要指明一个整数5输出固定宽度的格式如00005,此时

    设置cout.width(n);//n为宽度

         cout.fil(ch);//字符ch为填充字符 

     

     

     


     

  • 相关阅读:
    Python并发编程-IO模型-IO多路复用实现SocketServer
    Python并发编程-IO模型-非阻塞IO实现SocketServer
    Python并发编程-协程实现socketserver
    Pytho并发编程-利用协程实现简单爬虫
    Python正则表达式中的re.S
    Python-正则表达式
    django-模板初探
    django-response对象
    django-QueryDict 对象
    django-request对象
  • 原文地址:https://www.cnblogs.com/ainima/p/6331282.html
Copyright © 2011-2022 走看看