2025年3月c++二级

1

2
#include <bits/stdc++.h>
using namespace std;

int a,s1=0,s2=0; 
int main(){
    while(1){
        cin >> a;
        if(a==1){
            s1++;
        }
        if(a==0){
            s2++;
        }
        if(a==-1){
            break;//跳出循环 
        }
    }
    if(s1>s2){
        cout << "Yes" << endl;
    } 
    if(s2>s1){
        cout << "No" << endl;
    }
    if(s1==s2){
        cout << "Tie" << endl;
    }
    cout << s1 << ":" << s2;
    return 0;
} 
2

方法一

#include <bits/stdc++.h>
using namespace std;

int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

string s;
int n,m;
int main(){
    getline(cin,s);
    scanf("%d - %d",&n,&m);
    cout << s << endl;
    for(int i=n;i<=m;i++){
        int x=i,sum=0;
        while(x){
            sum=sum*10+x%10;
            x/=10;
        }
        if(sum==i){//先判断是否是回文数 
            int mon=i/100%100;//获取到月份 
            int day=i%100;//获取到日 
            if(mon>=1 && mon<=12){
                if(day>=1 && day<=a[mon]){
                    cout << i << endl;
                }
            } 
        }
    }
    return 0;
} 

方法二

#include <bits/stdc++.h>
using namespace std;

int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//每个月对应的天数
int b[10010];//定义一个数组用来保存满足条件的日期 
int n,m,cnt=0;//n代表出生日期,m代表结束日期,cnt作为索引 
string s;//定义变量s用来保存输入的名字 

int main(){
    getline(cin,s);
    scanf("%d - %d",&n,&m);//以格式化的方式进行输入,这样保证可以随时获取数据 
    cout << s << endl;
    for(int i=1;i<=12;i++){// i代表月份
        for(int j=1;j<=a[i];j++){//j代表每个月的天数
            int x=(i%10)*10+i/10;//x---月份翻转 
            int y=(j%10)*10+j/10;//y---日期翻转
            int t=y*1000000+x*10000+i*100+j;//得到翻转后的数据
            if(t>=n && t<=m) b[++cnt]=t; 
            
        } 
    
    }
    for(int i=1;i<=cnt;i++){
        cout << b[i] << endl;
    }
    return 0;
} 
3
#include <bits/stdc++.h>
using namespace std;

string s;
int cnt=0;//定义变量实现计数 
int main(){
    getline(cin,s);
    int i=0;//索引
    while(i<s.size()){
        if(s[i]!='6') cout << s[i];
        else{
            cnt++;
            while(s[i+1]=='6'){
                cnt++;i++;
            }
            if(cnt<=3){
                for(int i=1;i<=cnt;i++){
                    cout << '6';
                }
            }
            else if(cnt<=9) cout << '9';
            else cout << 27;
        }
        i++;cnt=0;
    } 
    return 0;
} 
4
#include <bits/stdc++.h>
using namespace std;

int n,a,s1=0,s2=0,x1,x;//正整数n,a是循环输入保存数据的变量,s1是用来保存第一次的
//累加和的结果,s2用来依次统计后边的累加和,判断和第一次是否相同 
bool f=false;//用来做标记,判断是输出NO还是累加和 
int main(){
    cin >> n;
    bool k[n];//用来保存f每次的取值 
    int g[n];//用来保存每次s2的取值,如果条件不成立取0 
    for (int i=0;i<n;i++){//循环n次 
        f=false;//每次初始化f的取值 
        cin >> a;//输入数据 
        s1=0;//初始化 
        x1=a*2;
        while(x1!=0){//获取每个位置上数据的累加和 
            s1=s1+x1%10;
            x1=x1/10;
        }
        for(int h=3;h<=9;h++){//3-9的乘积的数字各个位置上数据的累加和 
            x=a*h;
            s2=0;
            while(x != 0){
                s2=s2+x%10;
                x=x/10;
            }
            if(s2!=s1){//判断累加和是否相同,如果不同则f==true 
                f=true;
                break;//跳出循环 
            }
            
        }
        k[i]=f;//将当前f的取值保存到数组中 
        if(f==true){//如果不是不变初心数 
            g[i]=0;//g[i]数组中保存数据0 
        }
        else{
            g[i]=s2;//g[i]中添加当前s2的数据 
        }
    }   
    for(int j=0;j<n;j++){//循环生成索引获取数组中的每一个数 
        if(k[j]==true){//如果k数组中的值为true 
            cout << "NO" <<endl;//输出NO 
        }
        else{
            cout << g[j] << endl;//输出数组g中的数值 
        }
    }
    
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容