PAT乙级练习题

1.

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int sum=0;
    do{
        if(n%2==0)
        {
           n=n/2;
           sum=sum+1 ;
        }
        else if(n%2!=0)
        {
            n=(3*n+1)/2;
            sum=sum+1;
        }
    }while(n!=1);
    cout<<sum<<endl;
}

2.

#include <iostream>
#include <string>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int sum=0;
    int num=0;
    for(int n=0;s[n]!='\0';n++)
    {
        num=num+1;
    }
    for(int i=0;i<num;i++)
    {
        sum=sum+(s[i]-'0');
    }
    //取余数法求和
    //字符串数组:指针+一维数组
    //数组中的每一个元素都是一个指向一维数组的指针
    const char* a[10] ={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    int n[10];
    int yushu;
    int len=0;
    do{
        yushu=sum%10;
        n[len]=yushu;
        len=len+1;
        sum=sum/10;
    }while(sum!=0);
    int j;
    for(j=len-1;j>0;j--)
    {
        cout<<a[n[j]]<<" ";
    }
    cout<<a[n[0]];
}

4.

#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    class Student{
public:
    string name;
    string xuehao;
    int grade;};
    Student S[100];
    for(int i=0;i<n;i++)
        cin>>S[i].name>>S[i].xuehao>>S[i].grade;
    int max=0;
    for(int i=0;i<n;i++)
        {if(S[i].grade>max)
        max=S[i].grade;}
    int min=100;
    for(int i=0;i<n;i++)
    {
        if(S[i].grade<min)
            min=S[i].grade;
    }
    for(int i=0;i<n;i++)
    {
        if(S[i].grade==max)
            cout<<S[i].name<<" "<<S[i].xuehao<<endl;
    }
    for(int i=0;i<n;i++)
    {
        if(S[i].grade==min)
            cout<<S[i].name<<" "<<S[i].xuehao<<endl;
    }
}

6.

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int ones,tens,hundreds;
    char num[100];
    int len=0;//记录num中元素的个数
    ones=n%10;
    for(int j=ones;j>=1;j--)
    {
        num[len]=j+'0';
        len=len+1;
    }
    n=n/10;
    if(n!=0)
    {
        tens=n%10;
        for(int j=1;j<=tens;j++)
        {
            num[len]='S';
            len=len+1;
        }
    }
    n=n/10;
    if(n!=0)
    {
        hundreds=n%10;
        for(int j=1;j<=hundreds;j++)
        {
            num[len]='B';
            len=len+1;
        }
    }
    for(int j=len-1;j>=0;j--)
        cout<<num[j];
}

8.

#include <iostream>
using namespace std;
int main()
{
    int A[200];
    int N;
    int M;
    cin>>N>>M;
    for(int i=0;i<N;i++)
        cin>>A[i];
    for(int i=0;i<M;i++)
        A[100+i]=A[N-M+i];
    for(int i=N-1;i>=M;i--)
        A[i]=A[i-M];
    for(int i=0;i<M;i++)
        A[i]=A[100+i];
    for(int i=0;i<N-1;i++)
        cout<<A[i]<<" ";
    cout<<A[N-1];
}

9.

#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main()
{
    string s1;
    getline(cin,s1);
    int len;
    len=s1.length();
    char S[80][80];
    for(int i=0;i<80;i++)
        for(int j=0;j<80;j++)
        S[i][j]=' ';
    int j=0;
    int m=0;
    for(int i=0;i<len;i++)
    {
        {
            if(s1[i]!=' ')
            {
                S[m][j]=s1[i];
                j++;
            }
            else if(s1[i]==' ')
            {
                m++;
                j=0;
            }
        }
    }
    /*for(int i=0;i<80;i++)
        {{for(int j=0;j<80;j++)
        cout<<S[i][j];}
        cout<<endl;}
        cout<<m;
        m:单词个数*/
    for(int n=m;n>0;n--)
    {
        int j=0;
        do{
        j++;}while(S[n][j]!=' ');
        /*cout<<j<<endl;*/
        for(int i=0;i<j;i++)
            cout<<S[n][i];
        cout<<" ";
    }
    int num=0;
    do{
    num++;}while(S[0][num]!=' ');
    for(int i=0;i<num;i++)
        cout<<S[0][i];
}

11.

#include <iostream>
using namespace std;
int main()
{
    class Number{
public:
    long A;
    long B;
    long C;};
    int T;
    cin>>T;
    Number N[10];
    for(int i=0;i<T;i++)
        cin>>N[i].A>>N[i].B>>N[i].C;
    for(int i=0;i<T;i++)
    {
        if((N[i].A+N[i].B)>N[i].C)
            cout<<"Case #"<<i+1<<":"<<" true"<<endl;
        else if((N[i].A+N[i].B)<=N[i].C)
            cout<<"Case #"<<i+1<<":"<<" false"<<endl;
    }
}

13.

#include <iostream>
#include <math.h>
using namespace std;
const int maxn=1000001;
int prime[maxn],num=0;
bool p[maxn]={0};
void Find_Prime(int n){
for(int i=2;i<maxn;i++)
    {
        if(p[i]==false){
            prime[num++]=i;
            if(num>=n) break;
            for(int j=i+1;j<maxn;j+=i){
                p[j]=true;
            }
        }
    }
}
int main()
{
    int m,n,count=0;
    cin>>m>>n;
    Find_Prime(n);
    for(int i=m;i<=n;i++){
        cout<<prime[i-1];
        count++;
        if(count%10!=0&&i<n)
            cout<<" ";
        else cout<<endl;
    }
}

16.

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    string A,B;
    int a,b,pa,pb;
    cin>>A>>a>>B>>b;
    int len_A=0;
    int len_B=0;
    do
    {len_A=len_A+1;
    }while(A[len_A]!='\0');
    do
    {len_B=len_B+1;
    }while(B[len_B]!='\0');
    int len_a=0;
    int len_b=0;
    for(int i=0;i<len_A;i++)
    {
        if((A[i]-'0')==a)
        len_a++;
    }
    for(int j=0;j<len_B;j++)
    {
        if((B[j]-'0')==b)
        len_b++;
    }
    pa=a;
    pb=b;
    for(int i=1;i<len_a;i++)
        {
            pa=pa*10+a;
        }
        if(len_a==0)
    {
        pa=0;
    }
    for(int j=1;j<len_b;j++)
        {
            pb=pb*10+b;
        }
         if(len_b==0)
    {
        pb=0;
    }
        cout<<pa+pb;
}

20.

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
bool cmp(double a,double b)
    {
        return a>b;
    }
int main()
{
    class Yuebing{
public:
    int kucunliang;
    int zongshoujia;};
    int N;
    int Max;
    cin>>N>>Max;
    Yuebing X[1000];
    for(int i=0;i<N;i++)
        cin>>X[i].kucunliang;
    for(int i=0;i<N;i++)
        cin>>X[i].zongshoujia;
    double A[1000];
    double B[1001];
    for(int i=0;i<N;i++)
        A[i]=double(X[i].zongshoujia)/double(X[i].kucunliang);
    /*for(int i=0;i<N;i++)
        cout<<A[i]<<endl;*/
    for(int i=0;i<N;i++)
        B[i]=A[i];

    sort(B,B+N,cmp);//数组变量名是指向首地址的指针
    /*for(int i=0;i<N;i++)
        cout<<B[i]<<endl;*/
    int i=0;
    double shouyi=0;
    do{
        for(int j=0;j<N;j++)
        {
            if(A[j]==B[i])
            {
                if(Max>=X[j].kucunliang)
                {
                    shouyi=shouyi+X[j].zongshoujia;
                    Max=Max-X[j].kucunliang;
                    //cout<<shouyi<<"   "<<Max<<endl;
                    i++;
                    continue;
                }
                else if(Max<X[j].kucunliang)
                {
                    shouyi=shouyi+(double(Max)/double(X[j].kucunliang))*X[j].zongshoujia;
                    Max=0;
                    //cout<<shouyi<<"    "<<Max<<endl;
                    break;
                }
            }
        }
    }while(Max!=0);
    cout<<fixed<<setprecision(2)<<shouyi;
}

21.

#include <iostream>
#include <string.h>
#include <string>
using namespace std;
int main()
{
    int a[10]={0,0,0,0,0,0,0,0,0,0};
    string s;
    cin>>s;
    int num=0;
    do{
        num++;
    }while(s[num]!='\0');
    for(int i=0;i<num;i++)
    {
        a[(s[i]-'0')]=a[(s[i]-'0')]+1;
    }
    for(int i=0;i<10;i++)
    {
        if(a[i]!=0)
        {
            cout<<i<<":"<<a[i]<<endl;
        }
    }
}

22.

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int A,B,D;
    cin>>A>>B>>D;
    int sum;
    sum=A+B;
    int new_sum=0;
    int yushu;
    int i=0;
    do{
        yushu=sum%D;
        //cout<<"yushu:"<<yushu<<endl;
        sum=sum/D;
        //cout<<"sum:"<<sum<<endl;
        new_sum=new_sum+yushu*pow(10,i);
        //cout<<"new_sum:"<<new_sum<<endl;
        i++;
    }while(sum!=0);
    cout<<new_sum;
}

23

#include <iostream>
using namespace std;

int main(){
    int a[10];
    for( int i = 0; i < 10; i++){
            cin>>a[i];
    }
    for( int i = 0; i < 10; i++){
        if( i != 0 && a[i] != 0){
            cout<<i;
            a[i]--;
            break;
        }
    }
    for( int i = 0; i < 10; ){
        if( a[i] != 0){
            cout<<i;
            a[i]--;
        }else{
            i++;
        }
    }
}

26.

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int c1,c2;
    int hh,mm,ss;
    cin >> c1 >> c2;
    int sum;
    int CLK_TCK=100;
    float r;
    sum = (c2 - c1)/CLK_TCK;
    r = (c2 - c1)%CLK_TCK;
    if (r >=50) sum++;
    hh = sum / 3600;
    sum = sum % 3600;
    mm = sum / 60;
    ss = sum % 60;
    cout<<setfill('0')<<setw(2)<<hh<<":";
    cout<<setfill('0')<<setw(2)<<mm<<":";
    cout<<setfill('0')<<setw(2)<<ss;
    return 0;
}

27.

#include <iostream>
using namespace std;
int main()
{
    int N;
    char x;
    cin>>N>>x;
    int sum=0;
    int i;
    for(i=1;sum<=N;i++)
        {sum=(sum+i)*2-1;
        cout<<"i:"<<i<<endl;
        cout<<"sum:"<<sum<<endl;}
    //cout<<i-2<<endl;
    //cout<<"sum:"<<sum<<endl;
    int m=1;
    int s=0;
    do{
        s=(s+i)*2-1;
        m++;
    }while(m<=i-2);
    cout<<s;
}

29.

#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main()
{
    string s1,s2;
    getline(cin,s1);
    getline(cin,s2);
    int L1=s1.length();
    int L2=s2.length();
    char s3[80];
    int j=0;
    int m=0;
    for(int i=0;i<L1;i++)
    {
        if(s1[i]==s2[j])
        {
            j++;
            if(j==L2)
                break;//执行循环下面的语句
        }
        else if(s1[i]!=s2[j])
            {
                s3[m]=s1[i];
                m++;
            }
    }
    //m:s3的数组元素个数
    for(int i=0;i<m;i++)
    {
        if(s3[i]>'a' and s3[i]<'z')
        {
            s3[i]=s3[i]-32;
        }
    }
    int n[80];
    for(int i=0;i<m;i++)
        n[i]=1;
    for(int i=1;i<m;i++)
        for(int j=0;j<i;j++)
    {
        if(s3[i]==s3[j])
            n[i]++;
    }
    for(int i=0;i<m;i++)
    {
        if(n[i]==1)
            cout<<s3[i];
    }
}

32.

#include <iostream>
using namespace std;
int main()
{
    int N;
    cin>>N;
    int num;
    int chengji;
    //学校从1开始连续编号
    int CJ[100001];
    for(int i=0;i<100001;i++)
        CJ[i]=0;
    for(int i=0;i<N;i++)
    {
        cin>>num>>chengji;
        CJ[num]=CJ[num]+chengji;
    }
    int max=-1;
    for(int i=0;i<100001;i++)
    {
        if(CJ[i]>max)
            max=CJ[i];
    }
    for(int i=0;i<=100000;i++)
        if(CJ[i]==max)
            cout<<i<<" "<<CJ[i];
}

36.

#include <iostream>
using namespace std;
int main()
{
    int N;
    char C;
    cin>>N>>C;
    for(int i=1;i<=N;i++)
        cout<<C;
    cout<<endl;
    if(N%2==0)
    {for(int j=1;j<=N/2-2;j++)
        {
            cout<<C;
            {
                for(int i=1;i<=N-2;i++)
                    cout<<' ';
            }
            cout<<C;
            cout<<endl;
        }}
    else if(N%2!=0)
     {for(int j=1;j<=N/2-1;j++)
        {
            cout<<C;
            {
                for(int i=1;i<=N-2;i++)
                    cout<<' ';
            }
            cout<<C;
            cout<<endl;
        }}
    for(int i=1;i<=N;i++)
        cout<<C;
    cout<<endl;

}

37.

#include <iostream>
using namespace std;
int main()
{
    int g1,s1,k1,g2,s2,k2;
    //解决输入的问题
    char x='.';
    int P,A,money;
    cin>>g1>>x>>s1>>x>>k1;
    cin>>g2>>x>>s2>>x>>k2;
    P=g1*17*29+s1*29+k1;
    A=g2*17*29+s2*29+k2;
    //全部换成最便宜的货币
    money=A-P;
    if(money<0)
    {
        money=-money;
        cout<<"-"<<money/17/29<<"."<<money%(17*29)/29<<"."<<money%29<<endl;
    }
    else
    {
        cout<<money/17/29<<"."<<money%(17*29)/29<<"."<<money%29<<endl;
    }
}

40.

#include <iostream>
#include <string.h>
#include <string>
using namespace std;
const int MAXN=10010;
const int MOD=100000007;
char str[MAXN];
int leftNump[MAXN]={0};
int main()
{
    cin>>str;
    int len=sizeof(str);
    for(int i=0;i<len;i++)
    {
        if(i>0)
        {
            leftNump[i]=leftNump[i-1];
        }
        if(str[i]=='P')
        {
            leftNump[i]++;
        }
    }
    int ans=0,rightNumT=0;
    for(int i=len-1;i>=0;i--){
        if(str[i]=='T'){
            rightNumT++;
        }else if(str[i]=='A'){
        ans=(ans +leftNump[i]*rightNumT)%MOD;
        }
    }
    cout<<ans;
}

41.

#include <iostream>
#include <string.h>
#include <string>
using namespace std;
int main()
{
    class Student{
public:
    string kaohao;
    int jishi;
    int kaoshi;};
    Student a[1000];
    int N;
    cin>>N;
    for(int i=0;i<N;i++)
        {cin>>a[i].kaohao>>a[i].jishi>>a[i].kaoshi;}
    int num;
    cin>>num;
    int jishizuoweihao[1000];
    for(int i=0;i<num;i++)
        cin>>jishizuoweihao[i];
    for(int i=0;i<num;i++)
        for(int j=0;j<N;j++)
        if(a[j].jishi==jishizuoweihao[i])
        {
            cout<<a[j].kaohao<<" "<<a[j].jishi<<endl;
        }
}

46.

#include <iostream>
using namespace std;
int main()
{
    class huaquan{
public:
    int jiahan;
    int jiahua;
    int yihan;
    int yihua;};
huaquan a[100];
int N;
cin>>N;
for(int i=0;i<N;i++)
    cin>>a[i].jiahan>>a[i].jiahua>>a[i].yihan>>a[i].yihua;
int jia=0;
int yi=0;
for(int i=0;i<N;i++)
{
    if(a[i].jiahua==a[i].jiahan+a[i].yihan&&a[i].yihua!=a[i].jiahan+a[i].yihan)
        {yi++;}
    else if(a[i].yihua==a[i].jiahan+a[i].yihan&&a[i].jiahua!=a[i].jiahan+a[i].yihan)
        {jia++;}
}
cout<<jia<<" "<<yi;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值