PAT刷题记录

刷题ing

暑假留校,从头开始简单刷一刷PAT上面的练习题,做一个简单的记录

B1011.A+B和C

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    int n; //多少组
    cin>>n;
    for(int i=0;i<n;i++)
    {
        long long  a,b,c;
        cin>>a>>b>>c;
        if(a+b>c)
            cout<<"Case #"<<i+1<<": true"<<endl;
        else
            cout<<"Case #"<<i+1<<": false"<<endl;
    }
}

B1016.部分A+B

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    long long a,b,pa,pb;
    pa=pb=0;
    int Da,Db;
    cin>>a>>Da>>b>>Db;
    while(a!=0)
    {
        int temp;
        if(a%10==Da)
        {
            pa=Da+10*pa;
        }
        a=a/10;
    }
    while(b!=0)
    {
        int temp;
        if(b%10==Db)
        {
            pb=Db+10*pb;
        }
        b=b/10;
    }
    cout<<pa+pb<<endl;
}

B1016.程序运行时间

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    #include<iostream>
#include<stdio.h>
using namespace std;
const int CLK_TCK=100;
int main()
{
    int C1,C2;
    cin>>C1>>C2;
    int ans=C2-C1;
    if(ans/100>=50)
    	ans=ans/100+1;
    else
    	ans=ans/100;
	printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);   	
}

B1046.划拳

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    int n;//记录多少次
    int Da,Db;
    Da=Db=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int aR,aL,bR,bL;
        cin>>aR>>aL>>bR>>bL;//甲喊,甲划,乙喊,乙划
        if(aR+bR==aL && aR+bR!=bL)
            Db++;
        else if(aR+bR==bL && aR+bR!=aL) 
            Da++;
        else;
    }
    cout<<Da<<" "<<Db<<endl;
}

B1008.数组元素循环右移(17’)

在这里插入图片描述

#include<iostream>
using namespace std;
int arr[120];
int main()
{
    int N,M;
    cin>>N>>M;
    int temp=0;
    for(int i=0;i<N;i++)
    {
        if(i<N-M)
            cin>>arr[M+i];
        else
        {
            cin>>arr[temp];
            temp++;
        }
    }
    for(int i=0;i<N;i++)
    {
    	cout<<arr[i];
        if(i!=N-1)
            cout<<" ";
	}
        
}

B1012.数字分类

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    int num;
    cin>>num;
    int A1,A2,A3,A5;
    A1=A2=A3=A5=0;
    float A4=0.0;
    int flag=1;
    float flag_A4[5]={0.0};
    for(int i=0;i<num;i++)
    {
        int temp;
        cin>>temp;
        if(temp%2==0 && temp%5==0)
        {
            A1=A1+temp;
            flag_A4[0]++;
        }
        else if(temp%5==1)
        {
            if(flag%2==0)
                A2=A2-temp;
            else
                A2=A2+temp;
            flag++;
            flag_A4[1]++;
        }
        else if(temp%5==2)
            A3++;
        else if(temp%5==3)
        {
            A4=A4+temp;
            flag_A4[3]++;
        }
        else if(temp%5==4)
        {
            if(temp>=A5)
                A5=temp;
            flag_A4[4]++;
        }
    }
    if(flag_A4[0]==0)
        printf("N ");
    else
        printf("%d ",A1);
    if(flag_A4[1]==0)
        printf("N ");
    else
        printf("%d ",A2);
    if(A3==0)
       printf("N ");
    else
        printf("%d ",A3);
    if(flag_A4[3]==0)
        printf("N ");
    else
        printf("%.1f ",A4/flag_A4[3]);
    if(flag_A4[4]==0)
        printf("N");
    else
        printf("%d",A5);
}

B1012.锤子剪刀布

在这里插入图片描述

#include<iostream>
using namespace std;
int arr_A[3]={0}; //代表出的次数  J C B
int arr_B[3]={0}; //代表出的次数
int A_win=0,A_lost=0,eq=0;
char mp[3]={'J','C','B'};
int main()
{
    int n;//对决次数/emoj
    cin>>n;
    for(int i=0;i<n;i++)
    {
        char A,B;
        cin>>A>>B;
        if(A=='C')
        {
            if(B=='C')
                eq++;
            else if(B=='J')
              {
                A_win++;
                arr_A[1]++;
            }
            else if(B='B')
                
                {
                A_lost++;
				arr_B[2]++;	
				}
        }
        else if(A=='J')
        {
            if(B=='C')
                
                {
                A_lost++;
				arr_B[1]++;	
				}
            else if(B=='J')
                eq++;
            else if(B='B')
             {
                A_win++;
                arr_A[0]++;
            }
        }
        else if(A=='B')
        {
            if(B=='C')
            {
                A_win++;
                arr_A[2]++;
            }
            else if(B=='J')
               
                {
                A_lost++;
				arr_B[0]++;	
				}
            else if(B='B')
                eq++;
        }
    }
    cout<<A_win<<" "<<eq<<" "<<A_lost<<endl; 
    cout<<A_lost<<" "<<eq<<" "<<A_win<<endl; 
 	int id=2,id2=2;
 	for(int i=2;i>=0;i--)
 	{
 		if(arr_A[i]>arr_A[id]) id=i;
 		if(arr_B[i]>arr_B[id2]) id2=i;
	 }
	 cout<<mp[id]<<" "<<mp[id2];

}

B1002.写出这个数

在这里插入图片描述

#include<iostream>
#include<string.h>
using namespace std;
char num_ch[10][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int main()
{
	char num[101];
	int flag=0;
	int num_nu[101];
    cin>>num;
    int len=strlen(num);
    int sum=0;
    for(int i=0;i<len;i++)
    {
    	sum=sum+(int(num[i])-48);
	 } 
    while(sum!=0)
    {
    	num_nu[flag]=sum%10;
    	sum=sum/10;
    	flag++;
	}
	for(int i=flag-1;i>=0;i--)
    {
    	if(i!=0)
    		cout<<num_ch[num_nu[i]]<<" ";
    	else
    		cout<<num_ch[num_nu[i]];
	} 
	
}

B1004.成绩排名

在这里插入图片描述

#include<iostream>
using namespace std;
char Name[100001][15];
char stuNum[100001][15];
int socre[100001];
int main()
{
    int num;//学生个数
    cin>>num;
    int min=0,max=0;
    for(int i=0;i<num;i++)
    {
        cin>>Name[i];
        cin>>stuNum[i];
        cin>>socre[i];
        
    }
    for(int i=0;i<num;i++)
    {
        if(socre[i]>=socre[max]) max=i;
        if(socre[i]<=socre[min]) min=i;
    }
    cout<<Name[max]<<" "<<stuNum[max]<<endl;
    cout<<Name[min]<<" "<<stuNum[min];
}

B1019.数字黑洞

在这里插入图片描述

#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
 return a>b;
}///递减排序
void to_array(int n,int num[]){///将n的每一位存到num数组
  for(int i=0;i<4;i++){
    num[i]=n%10;
    n/=10;
  }
}
int to_number(int num[]){///将num数组转换为数字
   int sum=0;
   for(int i=0;i<4;i++)
   {
       sum=sum*10+num[i];
   }
   return sum;
}
int main()
{
    int n,minm,maxm;
    scanf("%d",&n);
    int num[5];
    while(1){
        to_array(n,num);
        sort(num,num+4);
        minm=to_number(num);
        sort(num,num+4,cmp);
        maxm=to_number(num);
        n=maxm-minm;
        printf("%04d - %04d = %04d\n",maxm,minm,n);
        if(n==0||n==6174) break;
    }
    return 0;
}

B1020.月饼(21’)

在这里插入图片描述

#include<iostream>
using namespace std;
int own[10100];
float perJ[10100];
int flag[10100];
int temp;
int main()
{
    int num,need;//种类,市场需求
    cin>>num>>need;
    for(int i=0;i<num;i++)
        cin>>own[i];
    for(int i=0;i<num;i++)
    {
        cin>>flag[i];
        perJ[i]=flag[i]/1.0/own[i];
    }
    int max, tmp;
    for (int i = 0; i < num; i++) {
        max = i;
        for (int j = i + 1; j < num; j++) {
            if (perJ[j]<perJ[max]) {
                max = j;
            }
        }
        float tem;
        tem=perJ[max];perJ[max]=perJ[i];perJ[i]=tem;
        int tem2;
        tem2=own[max];own[max]=own[i];own[i]=tem2;
        tem2=flag[max];flag[max]=flag[i];flag[i]=tem2;
        //tmp = arr[k];arr[k] = arr[i];arr[i] = tmp;
    }
    int owns=0;
    float fees=0.0;
    for(int j=num;j>=0 && need!=0;j--)
    {
        if(own[j]>=need)
        {
            fees=fees+perJ[j]*need;
            break;
        }
        else
        {
            fees=fees+flag[j];
            need-=own[j];
        }
    }
    printf("%.2f",fees);
}

B1020.个位数统计

在这里插入图片描述

#include<iostream>
#include<string.h>
using namespace std;
int num[10]={0};//数组用来统计次数
int main()
{
    char N[1010];
    cin>>N;
    for(int i=0;i<strlen(N);i++)
        num[int(N[i])-48]++;
    for(int i=0;i<10;i++)
    {   
        if(num[i]!=0) 
            cout<<i<<":"<<num[i]<<endl;

    }
}

1022.D进制的A+B

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
	int A,B,C,D,num[31]={0},i=0;
	cin>>A>>B>>D;
	C=A+B;
	while(C/D)//为了处理0的情况而提前退出 
	{
		num[i++]=C%D;
		C/=D;
	}
	num[i]=C;//此时i=位数-1 
	while(i>=0)
	cout<<num[i--];
	return 0;
}

1023.组个最小数

在这里插入图片描述

#include<iostream>
using namespace std;
int num[10];
int main()
{
    for(int i=0;i<10;i++)
        cin>>num[i];
    int flag=0;
    for(int i=1;i<10;i++)
    {
        if(num[i] && flag==0)
        {
            for(int j=0;j<num[i];j++)
            {
                if(j==0)
                {
                    cout<<i;
                    for(int k=0;k<num[0];k++)
                        cout<<0;
                }
                else   
                    cout<<i;
            }
            flag++;
        }
        else
        {
            for(int j=0;j<num[i];j++)
                cout<<i;
        }
    }
    cout<<endl;
}

1023.组个最小数

#include<iostream>
using namespace std;
int judge(int n) //判断是否为素数
{
    for(int i=n/2;i>1;i--)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int n,m; //长度,位数
    cin>>n>>m;
    int nu=0;
    char num[1200];//用数组去存这些数字
    for(int i=0;i<n;i++)
        cin>>num[i];
    for(int i=0;i<n-m;i++)
    {
        for(int j=i;j<i+m;j++)
        {
          nu=nu*10+(num[j]-'0');
		}
//        cout<<nu<<endl;
        if(judge(nu))
        {
            cout<<nu<<endl;
            return 0;
        }
		nu=0;
    }
    cout<<404<<endl;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值