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

同理:

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

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

10.C++输出格式问题

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

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

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

 

 

 

 


 

 

posted on 2013-08-11 22:40  爱你一万年123  阅读(172)  评论(0编辑  收藏  举报

导航