结构体
#include <bits/stdc++.h>
using namespace std;
struct Book{//定义书的结构体
char title[200];//title是长度200以内的字符串
float price;
};
int main(){
Book b[101],t;//定义了一个book类和一个101的book数组
int n;
cin>>n;
int i,j;
for(i=1;i<=n;i++){//注意是从1开始的
cin.get();//吃掉空格
cin.get(b[i].title,200);//输入当前的书名
cin>>b[i].price;//输入当前的书的价格
}
for(j=1;j<=n-1;j++){//冒泡排序, 承接上文的设定(从1开始)
for(i=1;i<=n-j;i++){
if(b[i].price<b[i+1].price){
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
}
}
for(i=1;i<=n;i++){//输出
cout<<b[i].title<<endl;
}
return 0;
}
大数相加
#include <bits/stdc++.h>
using namespace std;
int num(char x){
return (int)x-48;;
}
char str(int x){
return (char)(x+48);
}
int main(){
string s1,s2,s;//定义三个字符串
cin>>s1;//用cin输入两个字符串
cin>>s2;
bool flag = false;//用来标记是否有进位
string s0("");
if(s1.length() < s2.length()){
int cha = s2.length()-s1.length();
for(int i=0;i<cha;i++){
s0.append("0"); //append是从后append, 结束后会得到一个长度为cha的0串
}
s1.insert(0,s0);//将上文得到的0串插入到短的字符串前面
}else{
int cha = s1.length()-s2.length();
for(int i=0;i<cha;i++){
s0.append("0");
}
s2.insert(0,s0);
}
int n = s1.length();
string result = "";
for(int i=n-1;i>=0;i--){
int temp = 0;
if(flag){//如果有进位
temp = num(s1[i]) + num(s2[i])+1;
}else{//如果没有进位
temp = num(s1[i]) + num(s2[i]);
}
if(temp>=10){//判断是不是有进位
flag = true;
temp = temp%10;
}else flag=false;
// cout<<temp;
string a= "";
a+=str(temp);//把结果变成字符串
result.insert(0,a);//拼接起来
}
cout<<result;
return 0;
}
十进制转十七进制
#include<iostream>
using namespace std;
char t(int x){//将数字和对应的应该转化为什么字符依次对应
if(x==10){
return 'a';
}else if(x==11){
return 'b';
}else if(x==12){
return 'c';
}else if(x==13){
return 'd';
}else if(x==14){
return 'e';
}else if(x==1){
return '1';
}else if(x==2){
return '2';
}else if(x==3){
return '3';
}else if(x==4){
return '4';
}else if(x==5){
return '5';
}else if(x==6){
return '6';
}else if(x==7){
return '7';
}else if(x==8){
return '8';
}else if(x==9){
return '9';
}else if(x==0){
return '0';
}else if(x==15){
return 'f';
}else if(x==16){
return 'g';
}
return 0;
}
int num[100];//对与十七进制每一位进行储存
int main(){
int n;
cin>>n;
int j=0;
while(n>=17){ //进行十位转十七位,参考二进制
num[j]=n%17;
n=n/17;
j++;
}
num[j]=n;
for(int i=j;i>=0;i--){ //由低到高,倒序输出
cout<<t(num[i]);
}
return 0;
}
梳理难记的代码
头文件
#include <bits/stdc++.h>
using namespace std;
输入char数组型的字符
cin.get(a, 1007);
输入string类型的数组
cin>>s1;
deque的常用方法
deque<int> d;
d.push_back(elem);//在容器尾部添加一个数据
d.push_front(elem);//在容器头部插入一个数据
d.erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。
d.erase(pos);//删除pos位置的数据,返回下一个数据的位置。
d.at(idx);//返回索引idx所指的数据,如果idx越界,抛出out_of_range。
d.front();//返回第一个数据。
d.back();//返回最后一个数据
deque.size();//返回容器中元素的个数
deque.empty();//判断容器是否为空
d.sort(); //从大到小排序