实战训练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,即为小明可以够到的最大高度;紧接着将小明可以达到的最大高度依次和桃子的高度进行比较,只要桃子的高度小于等于最大高度,即可摘到桃子。具体程序代码如下:
#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,那么停止输入数组元素,然后从最后一个元素开始,依次输出每个数组元素,具体程序代码如下:
#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类型数组,然后依次输入每门兴趣班的节数,节数和对应的价格进行相乘,并累加到总价格中,具体程序代码如下:
#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;
}