PTA部分题目C++重练

早上好啊,大佬们,最近不是开了算法的专栏嘛,但是还没有正式开始学习算法,还在接触学习C++的内容,但是大佬们也是知道的,如果不练习肯定是不能很好掌握的。

所以,小白兔可能在结束C++STL库内容之前会发几篇之前写的PTA的一些比较麻烦的题目,用C++重新写一遍。

L1-056 猜数字

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

typedef struct{
    char s[10];
    int guess;
}peo;
int main()
{
    int N, ave=0, k=0, dis=10000;
    peo x[10005];
    cin >> N;
    for (int i=0; i<N; i++)
    {
        cin >> x[i].s >> x[i].guess;
        ave += x[i].guess;
    }
    ave /= N*2;
    for (int i=0; i<N; i++)
    {
        if (dis > abs(ave - x[i].guess))
        {
            dis = abs(ave - x[i].guess);
            k = i;
        }
    }
    cout << ave << ' ' << x[k].s << endl;
    
    return 0;
}

L1-058 6翻了

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int cnt=0, i;
    string s;
    getline(cin, s);
    for (i=0; i<s.length(); i++)
    {
        if (s[i] == '6')
        {
            for (;s[i] == '6'; i++)
                cnt ++;
            if (cnt > 9) printf("27");
            else if (cnt > 3) printf("9");
            else
                for (int j=0; j<cnt; j++)
                    printf("6");
        }
        cnt = 0;
        printf("%c", s[i]);
    }
    cout << "\n";
    return 0;
}

L1-093 猜帽子游戏

cpp 复制代码
#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
    int n,m;
    cin>>n;
    int a[101]={0};
    int s[101]={0};
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cin>>m;
while(m--)
{
int num=n,num1=0;
for(int i=0;i<n;i++)
{
cin>>s[i];
}
for(int i=0,j=0;i<n,j<n;i++,j++)
{
if(s[i]!=a[j]&&s[i]!=0)
{
num--;
}
if(s[i]==0)
{
num1++;
}
}
if(num==n&&num1!=n)
{
}

L1-101 别再来这么多猫娘了!

cpp 复制代码
#include<iostream>
#include<vector>
#include<string>

using namespace std;

const int N=110;

string str[N],s;

int main()
{
    int n;
    cin>>n;
    cin.ignore();//处理回车
    for(int i=0;i<n;i++) getline(cin,str[i]);
    
    int m;
    cin>>m;
    if(m==0) cout << 0 << endl << "He Xie Ni Quan Jia!";//如果m=0,那么无论如何都会违规,按要求进行输出
    else
    {
        cin.ignore();//处理回车
        int num=0;//记录违规的词的数量
        getline(cin,s);
        for(int i=0;i<n;i++)
        {
            while(s.find(str[i])!=s.npos)//这里使用string库中的find函数,如果找到违规词执行以下循环
            {
                int res=s.find(str[i]);//记录找到的违规词的位置
                num++;//数量加一
                s.erase(res,str[i].length());//使用string库中的erase函数删除这个违规词
                s.insert(res,"---");//因为后面还有判断所以不能直接替换先把出现违规词的地方用一个字符串代替,进行标记
            }
        }
        if(num>=m)
        //如果违规词的数量大于给出的阈值进行输出
        cout << num << endl << "He Xie Ni Quan Jia!";
        
        else//小于等于阈值的情况
        {
            while(s.find("---")!=-1)//如果找到了标记的地方进行循环
            {
                int t=s.find("---");//定义一个整型的t来存位置
                s.erase(t,3);//删除
                s.insert(t,"<censored>");//插入关键词
            }
            cout<<s<<endl;
        }
    }
}

L1-102 兰州牛肉面

cpp 复制代码
#include<iostream>

using namespace std;

const int N=110;

double much[N];//按题目要求需要用double类型的数组去存
int num[N];//存总营业额

int main()
{
    int n;
    cin>>n;
    double sum=0;
    for(int i=1;i<=n;i++)
    cin>>much[i];
    
    int a,b;
    while(cin>>a>>b,a!=0)//0 0的时候停止
    {
        sum+=much[a]*b;
        num[a]+=b;
    }
    for(int i=1;i<=n;i++)
    {
        printf("%d\n",num[i]);
    }
    printf("%.2f",sum);//精确到分就是小数点后两位
}

L1-103 整数的持续性

cpp 复制代码
#include<iostream>
#include<vector>

using namespace std;

int zhao(int num)//找持续性
{
    int res=0;//记录次数
    while(num>=10)//当num<10时停止查找
    {
        int s=1;//记录成绩
        while(num>0)//计算每一位相乘的积
        {
        s*=(num%10);
        num/=10;
    }
    num=s;//更新状态
    res++;
    }
    return res;
}

int main()
{
    int a,b;
    cin>>a>>b;
    int max=-1000;
    vector<int> llong;
    for(int i=a;i<=b;i++)
    {
        int res=zhao(i);
        if(res>max)//如果有更大的就将vecotr清空再将最大的值插入
        {
            max=res;
            llong.clear();
            llong.push_back(i);
        }
        else if(res==max)//如果和最大值一样则直接插入
        {
            llong.push_back(i);
        }
    }
    cout << max <<endl;
    for(int i=0;i<llong.size();i++)
    {
        if(i>0)
        cout<<" ";
        cout<<llong[i];
    }
}

总结

大家一定不要停下刷题的脚步哦,这东西也会有手生一说的,如果很久没写的话,也是会变差的。

OK,今天水一篇,我们下一篇见。Bye Bye~

相关推荐
苹果酱0567几秒前
C语言 char 字符串 - C语言零基础入门教程
java·开发语言·spring boot·mysql·中间件
代码小鑫17 分钟前
A032-基于Spring Boot的健康医院门诊在线挂号系统
java·开发语言·spring boot·后端·spring·毕业设计
训山25 分钟前
4000字浅谈Java网络编程
java·开发语言·网络
API快乐传递者26 分钟前
除了网页标题,还能用爬虫抓取哪些信息?
开发语言·爬虫·python
TaoYuan__1 小时前
机器学习的常用算法
人工智能·算法·机器学习
hutaotaotao1 小时前
c语言用户不同命令调用不同函数实现
c语言·开发语言
huangjiazhi_1 小时前
QTcpSocket 服务端和客户端
开发语言·qt
ac-er88882 小时前
ThinkPHP中的MVC分层是什么
开发语言·php·mvc
槿花Hibiscus2 小时前
C++基础:Pimpl设计模式的实现
c++·设计模式
用户40547878374822 小时前
深度学习笔记 - 使用YOLOv5中的c3模块进行天气识别
算法