1、最大数
题目
题目描述
n个数中最大的那个数在哪里?输出其位置,若有多个最大数则都要输出。
输入格式
第一行:n( 3 <= n <= 100)
第二行:空格隔开的n个数
输出格式
输出若干个数,表示最大数的位置,每行一个。
样例
样例输入
5
1 2 6 3 6
样例输出
3
5
数据范围与提示
所有的数字都在int范围内
思路
先读入找出最大值,再通过在大值找位置
程序思路
for(int i=1;i<=n;i++)//找出最大数
{
scanf("%d",&a[i]);
maxx=max(maxx,a[i]);//找出最大数
}
for(int i=1;i<=n;i++)//输出最大数位置
{
if(a[i]==maxx) cout<<i<<endl;//比较找出最大数,然后输出
}
2、 找找谁的身高超过全家的平均身高
题目描述
找找谁的身高超过全家的平均身高(整数)。全家n口人,输入输出数据如下: (平均身高保留一位小数)
输入格式
第一行有一个整数n( 1 < n < 100 )。第二行是n个整数,用空格隔开。
输出格式
第一行为全家的平均身高(保留一位小数);第二行有若干个数,为超过平均身高的人的身高厘米数。
样例
样例输入
7
175 160 172 158 178 162 142
样例输出
163.9
1:175 3:172 5:178
思路
先求出总身高,再求平均值,最后比较输出
程序思路
for(int i=1;i<=n;i++)//找出总身高
{
scanf("%d",&a[i]);
maxx+=a[i];
}
x=maxx/n;//求平均值
printf("%.1lf\n",x);
for(int i=1;i<=n;i++)
{
if(a[i]>=x){
printf("%d:%d ",i,a[i]);//输出身高
}
}
3、支撑数
题目描述
在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?
输入格式
第一行为整数m,表示输入的整数个数。( 3<= m <=100 ) 第二行为m个整数。
输出格式
若干个支撑数,每行一个。
样例
样例输入
14
1 3 2 4 1 5 3 9 7 10 8 23 85 43
样例输出
3
4
5
9
10
85
思路
先读入两个数,再重复读入,读入一个数,判断前一个数
程序思路
for(int i=3;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i-1]>a[i]&&a[i-1]>a[i-2]) printf("%d\n",a[i-1]);//读入这个数,判断输出这个数前一个数
}
4、字符过滤、排序
题目描述
输入一行文本,包含大、小字母、数字、空格等。要求过滤掉除字母外的其他字符,并将所有的大写字母转换成小写字母,然后将字母从小到大排序,输出结果。
输入格式
第1行:一行文本,长度小于1000
输出格式
第1行:处理后的一行文本
样例
样例输入
She sells sea shells
样例输出
aeeeehhllllssssss
学习内容
map:
map的原型是红黑树,map里面key和value的结构,会用迭代器。
思路
读入、判断、map判断输出
代码思路
map<char,int> m;//定义map m
map<char,int>::iterator iter;//定义迭代器
while(cin>>a){
if(a>='A'&&a<='Z') a+=32;
if(a>='a'&&a<='z') m[a]++;
}
for(iter=m.begin();iter!=m.end();iter++) for(int i=1;i<=iter->second;i++) cout<<iter->first;
}