`@TOC第3章入门篇(1)–入门模拟
第3章入门篇(1)–入门模拟(1)
3.1简单模拟
模拟题是一类“题目怎么说,你就怎么做”的题目。这类题目不涉及算法,完全只是根据题目描述来进行代码的编写
- PAT B1001
#include <iostream>
using namespace std;
int main(){
int n,cont=0;
scanf("%d",&n);
while(n!=1){
if(n%2==0){
n=n/2;
} else{
n=(3*n+1)/2;
}
cont++;
}
printf("%d",cont);
return 0;
}
- PAT B1032
#include <iostream>
using namespace std;
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;
}
3.2查找元素
给定一些元素,然后查找某个满足条件的元素。如果需要在一个比较范围的数据集里进行查找,那么直接遍历每一个数据即可;如果需要查找范围比较大,那么可以用二分查找(后面会有详细介绍)等算法来进行更快速的查找。
- codeup 1934
#include <iostream>
using namespace std;
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;
}
3.3图形输出
根据规则来进行画图。只需要弄清楚规则就能编写代码。
做法有两种
- 通过规律,直接进行输出。
- 定义一个二维字符数组,通过规律填充之,然后输出整个二维数组。
PAT B1036
#include <iostream>
using namespace std;
int main(){
int row,col;
char c;
scanf("%d %c",&col,&c);
if(col%2==0){
row=col/2;
}else{
row=col/2+1;
}
for(int i=0;i<col;i++){
printf("%c",c);
}
printf("\n");
for(int i=2;i<row;i++){
printf("%c",c);
for(int j=0;j<col-2;j++){
printf(" ");
}
printf("%c\n",c);
}
for(int i=0;i<col;i++){
printf("%c",c);
}
return 0;
}
注释:整数除以2进行四舍五入操作可以通过判断它是否是奇数来解决,以避免浮点数的介入