算法基础之模拟(C++示例)
模拟(simulate)就是用计算机来模拟题目中要求的操作。
题目1
给定两个整数A和B,输出他们的和。题目要你算A+B,你就算,这就是模拟。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a,b;
cout<<"请输入两个整数(空格分隔):";
cin>>a>>b;
cout<<"和为:"<<a+b<<endl;
return 0;
}
题目2
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 n天每天收到 n 枚金币后,骑士会在之后的连续 n+1天里,每天收到 n+1枚金币。
请计算在前 k 天里,骑士一共获得了多少金币。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int K,sum=0,n=0,i=1;
cout<<"请输入k值:";
cin>>K;
while(n!=K)
{
for(int j=1;j<=i;j++)
{
sum+=i;
n++;
if(n==K)
break;
}
i++;
}
cout<<sum<<endl;
return 0;
}
题目3、陶陶摘苹果
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 1010 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 3030 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知 1010 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入格式
输入包括两行数据。第一行包含 10 个 100 到 200之间(包括 100 和 200 )的整数(以厘米为单位)分别表示 10 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个 100到 120 之间(包含 100 和 120 )的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出格式
输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
解析:
总共10个苹果,凳子高30,这些都是常数;不定数是苹果所在的高度、陶陶的高度。
我们把第i个苹果的高度记做ai,陶陶的高度记做h
源码如下:
#include <iostream>
using namespace std;
int a[20],h,s;
int main(){
for(int i=0;i<10;i++){
cout<<"输入苹果到地面的高度[100~200]整数:";
cin >> a[i];
}
cout<<"输入陶陶身高[100~120]整数:";
cin>>h;
h+=30;
for(int i=0;i<10;i++){
if(h>=a[i]){
s++;
}
}
cout<<"陶陶可以摘到苹果的个数:"<<s;
return 0;
}
【此题代码也可改为:
#include <iostream>
using namespace std;
//int a[10];
int a[10] = {100,200,150,140,129,134,167,198,200,111};
int h,s;
int main(){
// for(int i=0;i<10;i++){
// cout<<"输入苹果到地面的高度[100~200]整数:";
// cin >> a[i];
// }
// cout<<"输入陶陶身高[100~120]整数:";
// cin>>h;
h = 110;
h+=30;
for(int i=0;i<10;i++){
if(h>=a[i]){
s++;
}
}
cout<<"陶陶可以摘到苹果的个数:"<<s;
return 0;
}
】