目录
目录
一、字符串中的单个字符转换成整型数字
二、用vector整行输入整数
三、素数判断(1要单独判断)
四、C++ set,setfill(),setw()的用法
五、vector的应用
L1-035 情人节 (15 分)
六、C++保留两位小数输出
L1-037 A除以B (10 分)
七、四舍五入和memset函数
L1-043 阅览室 (20 分)
八、完全由小写英文字母组成的字符串等差递增序列,与十进制相比较将其转化为26进制
L1-050 倒数第N个字符串 (15 分)
九、数组整行输入
L1-048 矩阵A乘以B (15 分)
十、竖式除法的程序实现
L1-046 整除光棍 (20 分)
十一、数组求和库函数accumulate()和绝对值函数abs()
L1-056 猜数字 (20 分)
十二、输入字符串时,把空格也录进去,cout<<"27";才能输出27,cout<<'27'输不出27
L1-058 6翻了 (15 分)
十三、判断string字符串是否含有某个子串
L1-070 吃火锅 (15 分)
十四、二进制转成十进制
L1-071 前世档案 (20 分)
十五、递归求最大公约数
L1-009 N个数求和 (20 分)
十六、C++STL之无序set
L1-011 A-B (20 分)
十七、C++ set
L1-033 出生年 (15 分)
十八、C中 %d 和 %04d 和%-4d有什么区别?
十九、C++之unordered_map
L1-044 稳赢 (15 分)
一、L1--016
#include
using namespace std;
int main(){
int n,sum = 0,count=0;
int z[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char m[]={'1','0','X','9','8','7','6','5','4','3','2'};
cin>>n;
string id[n];
int result[n];
for(int i = 0;i>id[i];
for(int i = 0;i
L1-022 奇偶分家 (10 分)
#include
using namespace std;
int main(){
int n,b;
cin>>n;
int odd=0,even = 0;
vector num;
while(n--){ //这里开始
cin>>b;
num.push_back(b);
if(cin.get()=='\n')
break;
}
for(int i = 0;i
L1-028 判断素数 (10 分)
#include
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
bool flag;
string result[n];
for(int i = 0;i>a[i];
for(int i = 0;i
L1-033 出生年 (15 分)
在C++中,setw(int n)用来控制输出间隔。
例如:
cout<<'s'<
则在屏幕显示
s a
//s与a之间有7个空格,加上a就8个位置,setw()只对其后面紧跟的输出产生作用,如上例中,表示'a'共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
如:
cout<
则输出:
****a //4个*和字符a共占5个位置。
关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
#include
using namespace std;
int main(){
int year,n;
cin>>year>>n;
for(int i = year;i<4000;i++){
set b;
int num = i;
for(int j = 0;j<4;j++){
b.insert(num%10);
num /= 10;
}
if(b.size() == n){
cout<
#include
using namespace std;
int main(){
vector name;
string a;
while(true){
cin>>a;
getchar();
if(a!=".")
name.push_back(a);
else
break;
}
if(name.size()>=15)
cout<=2)
cout<
#include
using namespace std;
int main(){
double a,b,result;
cin>>a;
getchar();
cin>>b;
if(b==0)
cout<
#include
using namespace std;
int main(){
int n,count=0,m,hh,mm,map[1001]={0},min[1001] = {0};
double sum = 0;
char b,c;
cin>>n;
while(n>0){
cin>>m>>c>>hh>>b>>mm;
if(m==0){
cout<
每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。该函数的原型为:
# include
void *memset(void *s, int c, unsigned long n);
函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。
#include
using namespace std;
int main(){
int l,n,sum;
cin>>l>>n;
sum = pow(26,l); //指数函数,pow(x,y):x的y次幂
int qure = sum - n;
char count[l];
for(int i = l-1;i>=0;i--){
count[i] = qure%26+'a'; //与十进制相比可以将其看成26进制的数字,最小数是a对应十进制的0
qure /= 26;
}
for(int i = 0;i
#include
using namespace std;
int main(){
int row1,col1,row2,col2,temp = 0;
cin>>row1>>col1;
int A[row1][col1];
for(int i = 0;i>A[i][j]; //数组可以采用两层for循环整行输入
}
cin>>row2>>col2;
int B[row2][col2];
for(int i = 0;i>B[i][j];
}
if(col1 != row2){
cout<<"Error: "<
#include
using namespace std;
int main(){
int x,n=1;
int i = 1;
cin>>x;
for(;i
#include
using namespace std;
int main(){
int n,ave,sum,min,pos,temp;
cin>>n;
string name[n];
int num[n];
for(int i = 0;i>name[i]>>num[i];
sum = accumulate(num,num+n,0);
ave = (sum/n)/2;
min = abs(num[0] - ave);
pos = 0;
for(int i = 1;i
accumulate函数将一段数字从头到尾累加起来,或者使用指定的运算符进行运算
accumulate函数的前两个参数指定累加的范围,第三个参数为累加的初值,第四个参数为进行的操作,默认为累加
使用accumulate要添加#include
#include
#include
#include
using namespace std;
int main() {
vector nums = {1, 2, 3, 4, 5};
int result = accumulate(nums.begin(), nums.end(), 0);
cout << result << endl;
return 0;
}
#include
using namespace std;
int main(){
int count,i=0;
string a;
getline(cin,a); //这种方法可以录入空格
while(i3&&count<=9)
cout<<'9';
else if(count>9)
cout<<"27";
else if(count <= 3){
for(int j = i-count;j
char *jsonData = "abcdefg";
string str = "abc";
string jsonString = jsonData;//将char *转为string类型
if(jsonString.find(str) < jsonString.length())
{
//表示str是jsonData的一个子字符串
}else
{
}
#include
using namespace std;
int main(){
vector mess;
string a;
string b = "chi1 huo3 guo1";
int t = 0,pos;
while(1){
getline(cin,a);
if(a == ".")
break;
mess.push_back(a);
}
for(int i = 0;i
#include
using namespace std;
int main(){
int n,m,i,num;
cin>>n>>m;
string a[m];
for(i = 0;i>a[i];
string bin=""; //二进制数
for(i = 0;i
#include
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return (b==0) ? a:gcd(b,a%b); //求最大公约数
}
unordered_set 容器,可直译为“无序 set 容器”,即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而 unordered_set 容器不会。
总的来说,unordered_set 容器具有以下几个特性:
- 不再以键值对的形式存储数据,而是直接存储数据的值;
- 容器内部存储的各个元素的值都互不相等,且不能被修改。
- 不会对内部存储的数据进行排序
C++ STL unordered_set容器完全攻略 (biancheng.net)
#include
using namespace std;
unordered_set str_b;
int main(){
string a,b;
getline(cin,a);
getline(cin,b);
for(int i = 0;i
标准库提供set关联容器分为:
1,按关键字有序保存元素:set(关键字即值,即只保存关键字的容器);multiset(关键字可重复出现的set);
2,无序集合:unordered_set(用哈希函数组织的set);unordered_multiset(哈希组织的set,关键字可以重复出现)。
set就是关键字的简单集合。当只是想知道一个值是否存在时,set是最有用的。
在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。set中元素的值不能直接被改变。set内部采用的是一种非常高效的平衡检索二叉树:红黑树,也称为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树。
set具备的两个特点:
set中的元素都是排序好的
set中的元素都是唯一的,没有重复的
(156条消息) C++ set用法总结(整理)_sevencheng798的博客-CSDN博客_c++ set
%d左对齐,输出变量的所有数字;
%4d右对齐,宽度为4,左边填充空格, 当变量的实际宽度大于4时,输出变量的所有数字;
%04d与%4d的唯一区别就是左边填充0。
%-4d意思是数字占四位、左对齐。
```c 比如, 1.以%d,%4d,%04d,输出12时,结果是:
12
两个空格12
0012
2.以%d,%4d,%04d,输出123时,结果是:
123
一个空格123
0123 3.
以%d,%4d,%04d,输出1234时,结果是:
1234
1234
1234
4.以%d,%4d,%04d,输出12345时,结果是:
12345
12345
12345
unordered_map 容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。
具体来讲,unordered_map 容器和 map 容器一样,以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。
C++ STL unordered_map容器用法详解 (biancheng.net)
#include
using namespace std;
unordered_map win{
{"Bu","JianDao"},
{"ChuiZi","Bu"},
{"JianDao","ChuiZi"}
};
int main(){
int k,cnt=0;
cin>>k;
string str;
while(cin>>str){
if(str=="End")
break;
else if(cnt == k){
cnt = 0;
cout<