实战训练1---小明摘桃子
问题描述:
小明家院子里有棵桃树,桃子成熟的时候,小明就会带着30厘米高的板凳跑去摘桃子,当他不能直接用手摘到桃子的时候,就会踩到板凳上再试试。桃树上每次都是10个桃子,现在已知桃子到地面的高度,以及小明把手伸直的时候能够达到的最大高度,请帮小明算一下他能够摘到的桃子的数目。假设他碰到桃子,就会掉下来。
输入格式:
输入包括两行数据。
第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个桃子到地面的高度,两个相邻的整数之间用一个空格隔开。
第二行只包括一个100∼130 (包含100和130 )的整数(以厘米为单位),表示小明把手伸直的时候能够达到的最大高度。
输出格式:
输出一行,这一行只包含一个整数,表示小明能够摘到的桃子的数目。
输入输出样例:
|---------------------------------------------|-------|
| 输入样例1 | 输出样例1 |
| 110 198 150 140 139 124 167 198 200 115 115 | 5 |
| 输入样例2 | 输出样例2 |
| 120 188 157 135 149 128 162 193 200 116 130 | 6 |
问题分析:
根据题意,首先考虑桃子的存储问题,由于涉及到的桃子数量多,所以使用刚学习的数组来解决此问题,数组的数据类型使用int类型,长度为10,定义好数组之后,使用循环来输入每个桃子的高度存储到数组元素中;然后输入小明伸直手臂的高度,加上板凳的30cm,即为小明可以够到的最大高度;紧接着将小明可以达到的最大高度依次和桃子的高度进行比较,只要桃子的高度小于等于最大高度,即可摘到桃子。具体程序代码如下:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
const int MAXLEN =10;//定义常变量MAXLEN表示数组的长度,并初始化为10
int count=0;//定义可以摘到的桃子数量变量count并初始化为0
int a[MAXLEN];//定义数组a
for(int i =0;i<10;i++){//数组下标从0开始到10-1=9结束
scanf("%d",&a[i]);//依次输入每个桃子高度到数组元素
}
int cd;//定义小明手臂伸直可以达到的高度cd
cin>>cd;//输入cd的值
cd = cd+30;//加上板凳可以达到的最大高度
for(int i=0;i<10;i++){
if(cd>=a[i])//最大高度大于等于桃子的高度
count++;//则将count加1
}
printf("%d\n",count);//输出count的值
return 0;
}
实战训练2---小明的数字游戏
问题描述:
输入n个整数,以0结束,反向输出。(0<=n<=100)
输入格式:
输入一行,该行内输入一串整数,以0结束,以空格间隔。
输出格式:
输出一行,该行内倒着输出这一串整数,以空格间隔。
输入输出样例:
|---------------|-------------|
| 输入样例1 | 输出样例1 |
| 1 2 3 4 5 0 | 5 4 3 2 1 |
| 输入样例2 | 输出样例2 |
| 500 400 200 0 | 200 400 500 |
问题分析:
根据题意,需要输入不确定个数的整数,最大的个数不超过100个,所以在定义数组的长度可以在最大个数的基础上加5,总长度为105,数组的数据类型为int类型,使用循环为数组每个元素依次赋值,在输入的过程中,一旦判断发现数组元素的值为0,那么停止输入数组元素,然后从最后一个元素开始,依次输出每个数组元素,具体程序代码如下:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
const int MAXLEN=105;//定义常变量MAXLEN表示数组的长度
int a[MAXLEN];//定义长度为MAXLEN的int类型数组
int i;//定义数组的最后一个元素下标
for(i=0;i<MAXLEN;i++){//从0开始到MAXLEN
scanf("%d",&a[i]);//依次输入数组元素的值
if(a[i]==0)//如果数组元素的值为0
break;//停止输入跳出循环
}
for(int j=i-1;j>=0;j--){//由于最后一个元素是0,所以从倒数第二个数组元素开始到0,
printf("%d ",a[j]);//依次输出每个数组元素
}
return 0;
}
实战训练3---计算报名费
问题描述:
下面是一个兴趣班的报名费表格:
|-------|---------|
| 名称 | 费用 |
| 奥数 | 28.9元/节 |
| 英语角 | 32.7元/节 |
| 几何世界 | 45.6元/节 |
| 航天模组 | 78元/节 |
| 围棋 | 35元/节 |
| C++编程 | 86.2元/节 |
| 民乐 | 27.8元/节 |
| 国画 | 43元/节 |
| 流行舞 | 56元/节 |
| 趣味编程 | 65元/节 |
给定每种兴趣班的报名节数,编程计算应付的总费用。
输入格式:
输入一行,包含10个整数(大于等于0,小于等于100),分别表示购买奥数、英语角、几何世界、航天模组、围棋、c++编程、民乐、国画、流行舞、趣味编程的节数。每两个整数用一个空格分开。
输出格式:
输出一行,包含一个浮点数表示应付的总费用,精确到小数点后一位。
输入输出样例:
|---------------------|--------|
| 输入样例1 | 输出样例1 |
| 2 6 1 5 3 8 2 1 7 3 | 2169.8 |
| 输入样例2 | 输出样例2 |
| 9 3 2 1 4 5 8 7 3 6 | 2179.8 |
问题分析:
根据题意,每门兴趣课都有对应的价格,因此采用数组将价格进行存储,需要定义一个长度为10的double类型数组,然后依次输入每门兴趣班的节数,节数和对应的价格进行相乘,并累加到总价格中,具体程序代码如下:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
const int MAXLEN=10;//定义常变量MAXLEN表示数组的长度
double price[MAXLEN]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};//定义长度为10的double类型数组存储价格
double sum=0;//定义总价格变量sum并初始化为0
for(int i=0;i<10;i++){//然后依次输入每门兴趣课的节数,兴趣课节数和数组中的价格一一对应
int tmp;//定义节数变量tmp
scanf("%d",&tmp);//输入tmp的值
sum += price[i]*tmp;//将这门课的价格累加到总价格sum中
}
printf("%0.1lf\n",sum);//格式化输出sum的值
return 0;
}