学习笔记1——使用动态数组,异或运算,swap函数,auto的一种用法,迭代器(iterator)

学习+1

记笔记的第一天,还是代码小白,希望如果有什么不对的地方,大佬多多指正。

学习目标:

蓝桥杯省奖

学习内容:

第一道题源于蓝桥杯官网

在这里插入图片描述

第二道题源于PTA(作业)

大整数求和
在这里插入图片描述

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
//反转字符串
void FanStr(string&s){
    int n=s.length();
    for(int i=0;i<n/2;i++){
        //swap函数来源于头文件algorithm,它包含一些算法
        swap(s[i],s[n-i-1]);  //交换位置
    }
}
//将两个大整数相加
string addNums(string num1,string num2){
    FanStr(num1);
    FanStr(num2);
    string result="";
    int carry=0;
    int sum=0;
    for(int i=0;i<max(num1.size(),num2.size());i++){
        sum=carry;  //将carry储存进位赋给sum
        if(i<num1.size()){
            sum+=num1[i]-'0';  //将字符串转为int类型
        }
        if(i<num2.size()){
            sum+=num2[i]-'0';  //将字符串转为int类型
        }
        carry=sum/10;
        result+=(sum%10)+'0';  //将int类型转为字符串
    }
    //循环结束,判断是否还有进位
    if(carry){
        result+=(carry+'0');
    }
    FanStr(result);  //再次反转,得到正确顺序
    return result;
}
int main(){
    string num1,num2;
    //读取数组
    while(cin>>num1>>num2){
        string sum=addNums(num1,num2);
        //去除前导0
        //auto允许编译器自动推断变量的类型
        //it是一个迭代器,begin和end函数返回指向容器开始和结束的迭代器,它们通常一起使用
        auto it=sum.begin();
        //只要it指向的字符是'0'并且未到末尾,就不断递增迭代器it
        while(it!=sum.end()&&*it=='0')++it;
        if(it==sum.end()){
            cout<<"0"<<endl;  //如果全为0,则输出0
        }else{
            cout<<string(it,sum.end())<<endl;
        }
    }
    return 0;
}​

学习时间:

周末

学习产出:

参加蓝桥杯周赛,深刻认识到自己的不足
PTA的题*1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值