admin管理员组文章数量:1621657
目录
PAT-B 1011.A+B和C (15)
PAT-B 1016. 部分A+B (15)
PAT-B 1026. 程序运行时间(15)
PAT-B 1012. 数字分类 (20)
PAT-B 1018. 锤子剪刀布 (20)
PAT-B 1011.A+B和C (15)
#include<iostream>
using namespace std;
int main() {
int n,i;
cin >> n;
for (i = 0; i < n; i++)
{
long long int a, b, c;
cin >> a >> b >> c;
if (a + b > c)
cout << "Case #" << i + 1 << ": true" << endl;
//printf("Case #%d: ture", i + 1);
else
cout << "Case #" << i + 1 << ": false" << endl;
}
return 0;
}
1.多输入几行,用for循环.
2. [−2^31,2^31] ,用long long int
3.printf的使用:把要输出的变量用%d占位子。
4.%a.bf,a为宽度,b为小数点位数,控制小数点后b位输出
PAT-B 1016. 部分A+B (15)
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int Da, Pa=0, Db, Pb=0;
long long int a, b;
cin >> a >> Da >> b >> Db;
int sa = 0, sb = 0;
while(a!=0)
{
sa = a % 10;
if (sa == Da)
Pa = Da + Pa * 10; //取出来n个3,pa=3+pa*10
a /= 10;
}
while (b != 0)
{
sb = b % 10;
if (sb== Db)
Pb = Db + Pb * 10;
b/= 10;
}
cout << Pa + Pb << endl;
return 0;
}
1.取出来n个相同的m
pa=m+pa*10
PAT-B 1026. 程序运行时间(15)
#include<iostream>
#define CLK_TCK 100
using namespace std;
int main() {
int c1, c2;
cin >> c1 >> c2;
int n,m;
m = c2 - c1+50;
n = m/CLK_TCK; //四舍五入就给他加50或者5
int hh, mm, ss;
hh = n / 3600;
n %= 3600;
mm = n/60;
n %= 60;
ss = n;
printf("%02d:%02d:%02d", hh, mm, ss); //%02d
return 0;
}
1.要求四舍五入的时候:给原来的数加上50或者5,0.5,再除。
2.小数四舍五入成整数
a=(int)(b+0.5);
3.控制宽度(常用于时间的表示)
%02d 输出不够两位前面用0补齐
prinrf("%02d:%02d",hh,mm) 09:20
PAT-B1008. 数组元素循环右移问题 (20)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n,m;
cin >> n >> m;
vector<int>a(n); //开辟动态数组vector<int>a(n)
for (int i = 0; i < n; i++) //字符数组用循环输入输出
cin >> a[i];
m %= n; //注意m比n大的情况
reverse(begin(a), begin(a) + n ); //reverse要include<algorithm>
reverse(begin(a), begin(a) + m );
reverse(begin(a) + m, begin(a) + n );
for (int i = 0; i < n - 1; i++)
cout << a[i] << " "; //输出时注意最后一个不带空格
cout << a[n - 1];
return 0;
}
1.动态数组用vector<int>a(n)
记得include<vector>
2.字符数组只能用循环进行输入输出
3.右移m位:整体反过来,前m位反一下,后面的反一下。
#include<algorithm>
reverse(begin(a),begin(a)+n)
4.输出一串数组,最后一个不带空格
for (int i = 0; i < n - 1; i++)
cout << a[i] << " "; //输出时注意最后一个不带空格
cout << a[n - 1];
5.输出一串变量,最后一个不带空格
用flag,在每个前面输出空格,第一个前面不输出空格
6.考虑m比n大的情况
m%=n
PAT-B 1012. 数字分类 (20)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int>a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
int a1=0, a2=0, a3=0, a5=0;
float a4 = 0.0;
int flag1 = 0;
for (int i = 0; i < n; i++)
{
if (a[i] % 2 == 0 && a[i] % 5 == 0)
{
a1 += a[i];
flag1 = 1;
}
}
int flag2 = 0; //循环中用到的变量在循环外面定义
int sgn = 0;
for (int i = 0; i < n; i++)
{
if (a[i] % 5 == 1)
{
flag2 = 1;
sgn++;
if (sgn % 2 != 0)
a2 += a[i];
else
a2 -= a[i];
}
}
int flag3 = 0;
for (int i = 0; i < n; i++)
{
if (a[i] % 5 == 2)
{
flag3 = 1;
a3++;
}
}
int flag4 = 0;
int sum = 0, num = 0; //循环中用到的变量在循环外面定义
for (int i = 0; i < n; i++)
{
if (a[i] % 5 == 3)
{
flag4 = 1;
num++;
sum += a[i];
a4 =( sum * 1.0 )/ num;
}
}
int flag5 = 0;
for (int i = 0; i < n; i++)
{if(a[i]%5==4)
{
flag5 = 1;
if (a[i] > a5)
a5= a[i];
}
}
if (flag1== 0) //!!!if里面是==号,不是赋值!!!
cout << "N ";
else
cout << a1<<" ";
if (flag2 == 0)
cout << "N ";
else
cout << a2 << " ";
if (flag3 == 0)
cout << "N ";
else
cout << a3<<" ";
if (flag4 == 0)
cout << "N ";
else
printf("%1.1f ", a4);
if (flag5 == 0)
cout << "N";
else
cout << a5;
return 0;
}
1.循环内部要用到的变量在循环外部定义
2.if()括号里是==号,不是赋值号!!!
PAT-B 1018. 锤子剪刀布 (20)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int awin = 0, bwin = 0, pin = 0;
int a1 = 0, a2 = 0, a3 = 0;
int b1 = 0, b2 = 0, b3 = 0;
for (int i = 0; i < n; i++)
{
char a, b;
cin >> a >> b;
if (a == 'C'&&b == 'J')
{
awin++;
a1++;
}
if (a == 'J'&&b == 'B')
{
awin++;
a2++;
}
if (a == 'B'&&b == 'C')
{
awin++;
a3++;
}
if (b == 'C'&&a == 'J')
{
bwin++;
b1++;
}
if (b == 'J'&&a == 'B')
{
bwin++;
b2++;
}
if (b== 'B'&&a == 'C')
{
bwin++;
b3++;
}
if(a==b)
pin++;
}
cout << awin <<" "<< pin <<" "<< bwin << endl;
cout << bwin << " "<<pin <<" "<< awin << endl;
if (a2 > a1&&a2 > a3)
cout << 'J'<< " ";
else if (a1 >=a2&&a1 > a3) //注意平的时候,按字母顺序,根据这个确定带不带等号
cout << 'C'<< " ";
else
cout << 'B' << " ";
if (b2 > b1&&b2 > b3)
cout << 'J' ;
else if (b1 >= b2&&b1 > b3)
cout << 'C' ;
else
cout << 'B' ;
return 0;
}
1.注意一样多的时候按照字母顺序,根据这个关系,确定取等。
PAT-B 1010. 一元多项式求导 (25)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int a, b;
int flag = 0;
while (cin >> a >> b)
{
if (b != 0)
{
if (flag == 1) //用flag控制空格的输出
cout << " ";
cout << a * b << " " << b - 1;
flag = 1;
}
if (flag == 0) //注意理解题意,是0多项式,所有项为0时输出“0 0”
cout << "0 0";
}
return 0;
}
1.输出一串变量,最后一个没有空格:用flag,每一个前面输出空格,第一个前面不输出
2.理解清楚题意
3.不确定输入个数时
while(cin>>a>>b)
总结:
1.输入输出
(1)输入
有个数n的输入:for(i=0;i<n;i++}
没有个数的输入:while(cin>>) 按ctrl+z+enter退出输入状态
超过30000用long long int
(2)输出
int数组用for循环输入输出。
printf("%a.bf",x) a为宽度,一般设0. b为小数点后位数
printf("%02d",x) 时间格式,不够两位,前面补0. 例: 02:03
四舍五入 加50,5,0.5.
a=(int)(b+0.5);
格式控制:
2.1数组
for (int i = 0; i < n - 1; i++)
cout << a[i] << " "; //输出时注意最后一个不带空格
cout << a[n - 1];
2.2 flag
2.3 for() if(i>0)cout<<" ";
3.debug
3.1 for循环内需要用的变量在循环外定义
3.2 if()判断条件是等于,不是赋值
3.3 数组和循环结合在一起,看最大的时候是否越界
3.4 string用于循环要先 a.append(n,'0')
4.n位数右移m位
考虑m大于n:m%=n.
本文标签: PAT
版权声明:本文标题:PAT 1.模拟 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728849878a1176538.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论