2022年c/c++语言大学c组E
方法一:
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
int W = 841;
int L = 1189;
string str;
cin >>str;
int num = str[1]-'0';
while(num>0){
L = L/2;
if(L<W){
int b = L;
L = W;
W = b;
}
num--;
}
cout <<L<<"\n" <<W<<endl;
return 0;
}
swap(a,b) //a和b进行交换
方法二:
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
char c;int x;
cin >>a >>x;
int a = 1189,b=841;
while(x--){
a/=2;
if(a<b) swap(a,b);
}
cout << a <<"\n"<<b <<endl;
return 0;
}
#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
string str = "WHERETHEREISAWILLTHEREISAWAY";
sort(str.begin(),str.end());
cout <<str<<endl;
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e6+10;
int a[maxn],b[maxn];
bool cmp(int x,int y)
{
return b[x] < b[y] || b[x] ==b[y] && x <y;
}
int main()
{
int n,m;
cin >>n>>m;
for(int i=1;i<=n;i++){
int num = i;
while(num){
b[i] += num%10;
num/=10;
}
a[i]=i;
}
sort(a+1,a+1+n,cmp); //从小到大排序,如果等于true,就正常排序,如果等于false,则交换位置
cout <<a[m]<<endl;
return 0;
}
sort(a,a+10,cmp);
1、第一个参数first:是要排序的数组的起始地址;
2、第二个参数last,是结束的地址(最后一个数据的后一个数据的地址)
3、第三个cmp是排序的方法,可以是从升序也可以是降序。如果第三个参数不屑,则默认的排序 方法是从小到大排序。
cmp相当于一个bool型的函数,当返回的为true时就不交换,返回false时交换。
#include <iostream>
#include<cstring>
#include<algorithm>
#include <cstdio>
using namespace std;
int main()
{
string str;
cin >> str;
bool is_minus = str[0] =='-';
if(is_minus)
str.erase(str.begin());
reverse(str.begin(),str.end());
int k =0;
while(str[k]=='0' && str.size()-k>1)
k++;
str=str.substr(k);
if(is_minus)
cout << '-';
cout << str <<endl;
return 0;
}
substr()是C++语言函数,
主要功能是复制子字符串,
要求从指定位置开始,
并具有指定的长度。
如果没有指定长度_Count或
_Count+_Off超出了源字符串的长度,
则子字符串将延续到源字符串的结尾。
string,包含s中从pos开始的len个字符的拷贝
(pos的默认值是0,len的默认值是s.size() - pos,
即不加参数会默认拷贝整个s.
1.erase(pos,n);
删除从下标pos开始的n个字符,比如erase(0,1)就是删除第一个字符
2.erase(position);
删除postion处的一个字符(position是一个string类型的迭代器)
3.erase(first,last)
删除从first到last之间的字符(first和last都是迭代器
输入、输出:
0-670-82162-4
Right
0-670-82162-0
0-670-82162-4
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
// 请在此输入您的代码
string str;
cin >> str;
int res=0;
int a = 1;
for(int i =0;i<str.size()-1;i++)
{
if (str[i]!='-')
{ res += (str[i]-'0')*a;
a++;}
else continue;
}
int end = res %11;
if(end==str[12]-'0'||end==10&&str[12]=='X')
cout << "Right"<<endl;
else {
str = str.substr(0,str.size()-1);
cout <<str;
if (end ==10)
cout <<'X'<<endl;
else cout <<end<<endl;
}
return 0;
}
substr作为切片类似于 python的str[1:2],切片末端为 str.size()-1:字符串大小减一
str.back():返回最后一个字符
2020
gengzi
#include <iostream>
#include <cstring>
using namespace std;
string tg[]={
"geng","xin","ren","gui","jia",
"yi","bing","ding","wu","ji"
};
string dz[]={
"shen","you","xu","hai",
"zi","chou","yin","mao",
"chen","si","wu","wei"
};
int main()
{
int y;
cin >> y;
cout <<tg[y%10]<<dz[y%12]<<endl;
}
将2020带入,进行取10和12的模,得到天干的序号,和地支的序号,将他们送到数组中排序。