PAT题库代码(个人版本)~~持续更新,持续改进!

引言

之前在网上看到浙江大学的题目系统PAT,想要刷一刷玩,目前是乙级题库,题目不多,持续更新!努力!
话不多说,上代码!题目以及运行效果这里就不给出了,与PAT网站上的相同。

1002 写出这个数

#include<stdio.h>

char pinyin(int x){
		switch(x){
		case 0:
			printf("ling");
			break;
		case 1:
			printf("yi");
			break;
		case 2:	
			printf("er");
			break;
		case 3:	
			printf("san");
			break;
		case 4:	
			printf("si");
			break;
		case 5:
			printf("wu");
			break;
		case 6:
			printf("liu");
			break;
		case 7:
			printf("qi");
			break;
		case 8:
			printf("ba");
			break;
		case 9:
			printf("jiu");
			break;
	}
}

int main(){
	int j,sum=0,a,b,c;
	char arr[101];					//存进一个字符数组里 
	char crr[3];				
	int brr[101];
	gets(arr);
	for(j=0;arr[j]!='\0';j++){ 
		sum = sum + (int)arr[j]-48;
	}
	a=sum/100;
	b=(sum-a*100)/10;
	c=sum-a*100-b*10;
	if(a>0){
		pinyin(a);
		printf(" ");
		pinyin(b);
		printf(" ");
		pinyin(c);
	}
	else if(a==0&&b>0){
		pinyin(b);
		printf(" ");
		pinyin(c);
	}
	else if(c>=0&&b==0&&a==0){
		pinyin(c);
	}
	return 0;
} 

1006 换个格式输出整数

#include<stdio.h>

int main()
{
	int n,i,j,k,b,s,y;
	scanf("%d",&n);
	if(n>=1000){
		printf("输出数据不规范!");
	}else{
		b = n/100;
		s = (n-b*100)/10;
		y = (n-b*100-s*10);
	}
	for(i=1;i<=b;i++){
		printf("B");
	}
	for(j=1;j<=s;j++){
		printf("S");
	}
	for(k=1;k<=y;k++){
		printf("%d",k);
	}
	printf("\n");
	return 0;
} 

1008 数组元素循环右移问题

#include <iostream>
using namespace std;
int main(){
    int n,offset;
    cin>>n>>offset;
    int a[n],b[n];
    int i;
    for(i=0;i<n;i++)
        cin>>a[i];              
    for(i=0;i<n;i++){
        int temp=(i+offset)%n;  //这里替换就很直接,易懂
        b[temp]=a[i];
    }
    for(i=0;i<n-1;i++){
        cout<<b[i]<<' ';
    }   
    cout<<b[n-1];
    return 0; 
}

1009 说反话

import java.util.Scanner;

public class Main{
	public static void main(String args[]) {
		String k;
		Scanner reader = new Scanner(System.in);
		k = reader.nextLine();
		String regex = "[\\s]+";
		String words[] = k.split(regex);
		for(int i=words.length-1;i>0;i--) {
			System.out.print(words[i]+" ");
		}
        System.out.println(words[0]);
	}
}

1016 部分A+B

#include<iostream>
#include<cstring>

using namespace std;

int main(){
	string a,b;
	char x,y;
	int i,j,m=0,n=0;
	cin>>a>>x>>b>>y;
	for(i=0;i<a.size();i++){
		if(a[i]==x){
			m=m*10+x-48;
		}
	}
	for(i=0;i<b.size();i++){
		if(b[i]==y){
			n=n*10+y-48;
		}
	}
	cout<<m+n<<endl;
	
	return 0;
}

1021 个位数统计

#include<iostream>
using namespace std;
#define N 1000

int main(){
	string s;
	int i,arr[N],j,brr[10]={0,0,0,0,0,0,0,0,0,0};
	cin>>s;
	for(i=0;i<s.length();i++){
		arr[i]=(int)s[i]-48;
	}
	for(j=0;j<i;j++){
		switch(arr[j]){
			case 0:
				brr[0]++;
				break;
			case 1:
				brr[1]++;
				break;
			case 2:
				brr[2]++;
				break;
			case 3:
				brr[3]++;
				break;
			case 4:
				brr[4]++;
				break;
			case 5:
				brr[5]++;
				break;
			case 6:
				brr[6]++;
				break;
			case 7:
				brr[7]++;
				break;
			case 8:
				brr[8]++;
				break;
			case 9:
				brr[9]++;
				break;			
		}
	}
	for(j=0;j<10;j++){
		if(brr[j]!=0){
			cout<<j<<":"<<brr[j]<<"\n";
		}
	}
	
	return 0;
} 

1041 考试座位号

#include<iostream>
using namespace std;

int main(){
	int i,n,j,k;
	cin>>n;
	string a[n];
	int b[n],c[n];
	for(i=0;i<n;i++){
		cin>>a[i]>>b[i]>>c[i];
	}
	cin>>j;
	int d[j];
	for(i=0;i<j;i++){
		cin>>d[i];
	}
	for(i=0;i<j;i++){
		for(k=0;k<n;k++){
			if(d[i]==b[k]){
				cout<<a[k]<<" "<<c[k]<<"\n";
			}
		}
	}
	return 0;
}
 

1042 字符统计

(这道题花了我蛮长时间,其过程可能比较麻烦,希望有读者可以加以优化!)

package test;
import java.util.Scanner;

public class practice {
	public static void main(String args[]) {
		String odex="",index;
		int brr[] = new int[26];
		int i,maxnum=0;
		Scanner reader = new Scanner(System.in);
		index = reader.nextLine();
		String regex = "[\\s\\d\\p{Punct}]+";
		String words[] = index.split(regex);
		int arr[] = new int[26];
		char k[];
		for(i=0;i<words.length;i++) {
			words[i]=words[i].toLowerCase();
			odex+=words[i];
		}
		k = odex.toCharArray();
		
		for(i=0;i<k.length;i++) {
			arr[((int)k[i])-97]++;
		}
		
		for(i=0;i<26;i++) {
			if(arr[i]>maxnum) {
				maxnum=arr[i];
			}
		}
		for(i=0;i<26;i++) {
			if(arr[i]==maxnum) {
				brr[i]++;
			}
		}
		
		for(i=0;i<26;i++) {
			if(brr[i]==1) {
				System.out.println((char)(i+97)+" "+maxnum);
				break;
			}
		}
	}
}

1043 输出PATest

#include<iostream>
using namespace std;

int main(){
	string a;
	int P=0,A=0,T=0,e=0,s=0,t=0;
	int i;
	cin>>a;
	for(i=0;i<a.length();i++){
		switch(a[i]){
			case 'P':
				P++;
				break;
			case 'A':
				A++;
				break;
			case 'T':
				T++;
				break;
			case 'e':
				e++;
				break;
			case 's':
				s++;
				break;
			case 't':
				t++;
				break;
		}
	}
	for(i=-0;i<a.length();i++){
		if(P>0){
			cout<<'P';
			P--;
		}
		if(A>0){
			cout<<'A';
			A--;
		}
		if(T>0){
			cout<<'T';
			T--;
		}
		if(e>0){
			cout<<'e';
			e--;
		}
		if(s>0){
			cout<<'s';
			s--;
		}
		if(t>0){
			cout<<'t';
			t--;
		}
	}
	
	return 0;
} 

1046 划拳

#include<stdio.h>
#define N 100

int main()
{
	int n,i,ah=0,bh=0;
	int a1[N];			//甲喊 
	int a2[N];			//甲划 
	int b1[N];			//乙喊 
	int b2[N];			//乙划 
	scanf("%d",&n);		
	for(i=0;i<n;i++){
		scanf("%d%d%d%d",&a1[i],&a2[i],&b1[i],&b2[i]);
	}
	for(i=0;i<n;i++){
		if(a1[i]+b1[i]==a2[i]&&a1[i]+b1[i]!=b2[i]){
			bh++;
		}
		else if(a1[i]+b1[i]==b2[i]&&a1[i]+b1[i]!=a2[i]){
			ah++;
		}
	}
	printf("%d %d",ah,bh);
	return 0; 
} 

1061 判断题

#include<iostream>
using namespace std;

int main(){
	int N,M,i,j;
	cin>>N>>M;
	int score[M],key[M],answer[N][M+1];	//储存分值,答案,学生答案(M+1用来存得分) 
	//数据的录入 
	for(i=0;i<M;i++){			
		cin>>score[i];
	}
	for(i=0;i<M;i++){
		cin>>key[i];
	}
	for(i=0;i<N;i++){
		for(j=0;j<M;j++){
			cin>>answer[i][j];
		}
		answer[i][M]=0;
	}
	//计算得分 
	for(i=0;i<N;i++){
		for(j=0;j<M;j++){
			if(answer[i][j]==key[j]){
				answer[i][M]+=score[j];	
			}
		}
	}
	//输出得分
	for(i=0;i<N;i++){
		cout<<answer[i][M]<<"\n";
	} 
	
	return 0;
} 
发布了10 篇原创文章 · 获赞 32 · 访问量 2367

猜你喜欢

转载自blog.csdn.net/qq_34533266/article/details/103606026
今日推荐