入门篇(1)——入门模拟
1、简单模拟
B1001 害死人不偿命的(3n+1)猜想 (15分)
/*PAT_B1001*/
#include <stdio.h>
int main()
{
int n,step=0;
scanf("%d",&n);
while(n!=1){
if(n%2==0) n=n/2;
else n=(3*n+1)/2;
step++;
}
printf("%d\n",step);
return 0;
}
P1001
B1032 挖掘机技术哪家强 (20分)
#include <cstdio>
const int maxn=100010;
int school[maxn]={0};//记录每个学校的总分
int main()
{
int n,schID,score;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&schID,&score);
school[schID]+=score;
}
int k=1,MAX=-1;
for(int i=1;i<=n;i++){
if(school[i]>MAX){
MAX=school[i];
k=i;
}
}
printf("%d %d\n",k,MAX);
return 0;
}
P1032
2、查找元素
codeup1934: 找x
#include <cstdio>
const int maxn=210;
int a[maxn];
int main(){
int n,x;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&x);
int k;
for(k=0;k<n;k++){
if(a[k]==x){
printf("%d\n",k);
break;
}
}
if(k==n){
printf("-1\n");
}
}
return 0;
}
C1934
3、图形输出
B1036 跟奥巴马一起编程 (15分)
#include<cstdio>
int main(){
int row,col;
char c;
scanf("%d %c",&col,&c);
if(col%2==1) row=col/2+1;
else row=col/2;
/*第一行*/
for(int i=0;i<col;i++){
printf("%c",c);
}
printf("\n");
/*第2-row-1行*/
for(int i=2;i<row;i++){
printf("%c",c);
for(int j=0;j<col-2;j++){
printf(" ");
}
printf("%c\n",c);
}
//第row行
for(int i=0;i<col;i++){
printf("%c",c);
}
return 0;
}
B1036
4、日期处理
codeup_1928 Problem A 日期差值
#include<cstdio>
int month[13][2]={
{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}
};
bool isLeap(int year){
return(year%4==0&&year%100!=0||year%400==0);
}
int main(){
int time1,y1,m1,d1;
int time2,y2,m2,d2;
while(scanf("%d%d",&time1,&time2)!=EOF){
if(time1>time2){
int temp=time1;
time1=time2;
time2=temp;
}
y1=time1/10000,m1=time1%10000/100,d1=time1%100;
y2=time2/10000,m2=time2%10000/100,d2=time2%100;
int ans=1;
while(y1<y2||m1<m2||d1<d2){
d1++;
if(d1==month[m1][isLeap(y1)]+1){
m1++;
d1=1;
}
if(m1==13){
y1++;
m1=1;
}
ans++;
}
printf("%d\n",ans);
}
return 0;
}
C1928
5、进制转换
1022 D进制的A+B (20分)
#include<cstdio>
int main(){
int a,b,d;
scanf("%d%d%d",&a,&b,&d);
int sum=a+b;
int ans[31],num=0;//ans存放D进制的每一位
do{
ans[num++]=sum%d;
sum/=d;
}while(sum!=0);
for(int i=num-1;i>=0;i--){
printf("%d",ans[i]);
}
return 0;
}
B1022
6、字符串处理
Codeup5901 判断回文
#include<cstdio>
#include<cstring>
const int maxn=256;
bool judge(char str[]){
int len = strlen(str);//字符串长度
for(int i=0;i<len/2;i++) {
if(str[i]!=str[len-1-i]){//如果对称位置不同
return false;
}
}
return true;
}
int main(){
char str[maxn];
while(gets(str)){
bool flag=judge(str);
if(flag==true){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
C5901
PAT_1009 说反话 (20分)
#include <cstdio>
#include <cstring>
#include<iostream>
using namespace std;
int main(){
char str[90];
cin.getline(str,90);
int len=strlen(str),r=0,h=0;
char ans[90][90];
for(int i=0;i<len;i++){
if(str[i]!=' '){
ans[r][h++]=str[i];
}else{
ans[r][h]='\0';
r++;
h=0;
}
}
for(int i=r;i>=0;i--){
printf("%s",ans[i]);
if(i>0) printf(" ");
}
return 0;
}
P1009
注意:get()方法已经不被PAT编译器支持
这里采用的是cin.getline的操作。
改变之处在于:
①增加#include《iostream>
using namespace std;
②gets --> cin.getline
网友评论