PAT|乙级PAT1011-1015答案详解与重要知识点(2021.9.21-2021.9.26)


文章目录

    • 1011
    • 1012
    • 1013
    • 1014
    • 1015

1011
#include using namespace std; struct num{double A; double B; double C; string result; }num[10]; int main(){int T; cin>>T; for(int i=0; i>num[i].A>>num[i].B>>num[i].C; } for(int i=0; inum[i].C) num[i].result="true"; else num[i].result="false"; } for(int i=0; i

1.基本数据类型的数据范围
int类型(四个字节):-231~231-1;long类型(八个字节):-263~-263-1
float类型(四个字节);double类型(八个字节)
1012
#include #include using namespace std; int main() {int N; cin>>N; int num[N]; float A[5]={ 0}; for(int i=0; i>num[i]; for(int i=0; iA[4]) A[4]=num[i]; } }for(int i=0; i<5; i++){if(A[i]==-1) cout<<'N'; else if(i==3) printf("%.1f",A[i]); else cout<

1.printf格式化输出
(1)整数
d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出
%-md:m为指定的输出字段的宽度。如果数据的位数小于m,则右端补以空格,若大于m,则按实际位数输出
%0md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以’0’,若大于m,则按实际位数输出
(2)浮点数
f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%.nf:其中有n位小数,数值宽度不变
%m.nf:输出共占m列,其中有n位小数,若数值宽度小于m左端补空格。
%-m.nf:输出共占m列,其中有n位小数,若数值宽度小于m右端补空格。
(3)字符串
s格式:用来输出一个串。有几中用法
%s:例如:printf("%s", “CHINA”)输出"CHINA"字符串(不包括双引号)
%ms:输出的字符串占m列,如果字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。
2.判断语句
若第一个if判断为真,则执行完语句1就退出该判断体,不再执行后面的else if和else,即使elseif也为真也不执行。
if(){//语句1 } else if(){//语句2 } else{//语句3 }

1013
#include #include #include using namespace std; bool isPriem(int num){if(num==1||num==4) return 0; else if(num==2||num==3) return 1; if(num%2==0) return 0; int temp=sqrt(num); for(int i=3; i<=temp+1; i+=2) if(num%i==0) return 0; return 1; }int main(){int m,n; int sum=0; int p[10000]; cin>>m>>n; for(int i=1; sum<10000; i++){if(isPriem(i)){p[sum]=i; sum++; } } for(int i=m-1; i<=n-1; i++){cout<

1014
#include #include using namespace std; int main(){char c[3]; int c2; int flag1=0; string s1,s2,s3,s4; cin>>s1>>s2>>s3>>s4; int l1,l2,l3,l4; l1=s1.size(); l2=s2.size(); l3=s3.size(); l4=s4.size(); for(int i=0; i='A'&&s1[i]<='G')) continue; if(!(s2[i]>='A'&&s2[i]<='G')) continue; if(s1[i]==s2[i]){c[0]=s1[i]; flag1=i; break; }} for(int i=flag1+1; i='A'&&s1[i]<='N')||(s1[i]>='0'&&s1[i]<='9'))) continue; if(!((s2[i]>='A'&&s2[i]<='N')||(s2[i]>='0'&&s2[i]<='9'))) continue; if(s1[i]==s2[i]){c[1]=s1[i]; break; } } for(int i=0; i='A'&&s3[i]<='Z')||(s3[i]>='a'&&s3[i]<='z'))) continue; if(!((s4[i]>='A'&&s4[i]<='Z')||(s4[i]>='a'&&s4[i]<='z'))) continue; if(s3[i]==s4[i]){c2=i; break; } } //cout<='0'&&c[1]<='9') printf("%02d:",c[1]-'0'); else cout<

1015
#include using namespace std; struct st{string xh; int de; int cai; int sum; }; bool cp(st a,st b){if( a.sum!=b.sum) returna.sum> b.sum; if(a.de != b.de ) return a.de>b.de; if(a.xh!=b.xh) return a.xh>n>>l>>h; st std0; vector> std[4]; int sum=0; for(int i=0; i>std0.xh>>std0.de>>std0.cai; std0.sum=std0.de+std0.cai; if(std0.de>=h&&std0.cai>=h) std[0].push_back(std0); else if(std0.de>=h&&std0.cai>=l) std[1].push_back(std0); else if(std0.de>=l&&std0.cai>=l&&std0.de>=std0.cai) std[2].push_back(std0); else if(std0.de>=l&&std0.cai>=l) std[3].push_back(std0); else sum++; } cout<

1.多关键字比较sort(start,end,cmp)
start、end为数据的位置,sort对start到end-1进行排序。
cmp为自定义bool返回值的函数。
//多关键字排序,先对sum进行降序,再对de进行降序,在对xh进行升序 struct st{string xh; int de; int cai; int sum; }; bool cmp(st a,st b){if( a.sum!=b.sum) returna.sum> b.sum; if(a.de != b.de ) return a.de>b.de; if(a.xh!=b.xh) return a.xh

2.可以用一个变量来暂存输入的数据,在一个循环中边输入边判断(省时省空间);也可以用数组在一个循环里输入数据,再在另一个循环里判断(费时费空间)
【PAT|乙级PAT1011-1015答案详解与重要知识点(2021.9.21-2021.9.26)】3.题目要求结尾无空行,可以在最后一个数据输出时有cout<,不会造成格式错误(因为endl只是结束该行,并不会输出一个空行)。但题目要求结尾无空格则不行。

    推荐阅读