C++008-C++循环结构简单统计
C++008-C++循环结构简单统计
在线练习:
http://noi.openjudge.cn/ch0104/
https://www.luogu.com.cn/
案例练习
题目描述 输出最高分
输入数据:
题目描述
在比赛中,去掉一个最高分,去掉一个最低分,选手的最后得分由剩余评委打分的平均分或总分决定。
输入
多个评委的打分
输出
最高分
样例输入
10 9 8 7 6
样例输出
10
思路:
设定变量Max,初始化为INT_MIN;
输入变量a,如果a>Max,那么Max=a;
重复步骤2,直到所有的数据输入完毕。
注:要使用INT_MIN等极限值,需要包含头文件<limits.h>;或者使用万能头文件<bits/stdc++.h>
#include<iostream>
#include<limits>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,Max = INT_MIN;
cin>>n;
for(int i = 1; i <= n ;i++)
{
cin >>m;
if(m > Max) Max = m;
cout<<"m="<<m<<",Max="<<Max<<endl;
}
cout<<"Max="<<Max;
return 0;
}
输出为:
题目描述 整数序列的元素最大跨度值
题目描述
给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。
输入
一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。
输出
输出一行,表示序列的最大跨度值。
样例输入
6
3 0 8 7 5 9
样例输出
9
#include<iostream>
#include<limits>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,Max=INT_MIN,Min=INT_MAX;
cin>>n;
for(int i = 1; i <= n ;i++)
{
cin >>m;
if(m > Max) Max = m;
if(m < Min) Min = m;
cout<<"m="<<m<<",Max="<<Max<<endl;
cout<<"m="<<m<<",Min="<<Min<<endl;
}
cout<<Max - Min;
return 0;
}
输出为:
题目描述 求和与均值
题目描述
读入n (1<=n<=10000)个整数,求它们的和与均值。
输入
输入第一行是一个整数n,表示有n个整数。
第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。
输出
输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。
样例输入
4
344
222
343
222
样例输出
1131 282.75000
//#include <iostream>
//#include<iomanip>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
double a,sum=0,avg;
cin>>n;
for(int i =1;i <=n;i++)
{
cin >>a;
sum+=a;
}
avg = sum/n;
cout<<sum<<" ";
//cout<<fixed<<setprecision(0)<<sum<<" ";
cout<<fixed<<setprecision(5)<<avg<<"";
return 0;
}
出错的根源:
上一个程序为在计算平均值时不做隐式臻化而把输入数据喜明为dgble,耍和值超过6位数时,浮点类型数据为了保持6位有效数字而改用科学记数法。整数类型不会有这样的情况发生,所以与答案输出不相符,错误!
改正方案:
按照题目描述,输入数据以及和值声明为int类型,计算平均值时进行隐式转化即可。
和值若为浮点数,在15位有效数字内,可以设定输出精度为小数点后0位;
题目描述 最高的分数
题目描述
孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗。
输入
输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.
第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。
输出
输出一个整数,即最高的成绩。
样例输入
5
85 78 90 99 60
样例输出
99
#include <iostream>
#include<limits>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
int Max=INT_MIN;
int n;
int a;
cin>>n;
for(int i =1;i <=n;i++)
{
cin >>a;
if(a>Max) Max=a;
}
cout<<Max;
return 0;
}
题目描述 奥运奖牌计数
题目描述
2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。
输入
输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。
输出
输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。
样例输入
3
1 0 3
3 1 0
0 3 0
样例输出
4 4 3 11
#include <iostream>
#include<limits>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b,c,s1=0,s2=0,s3=0;
cin>>n;
for(int i =1;i <=n;i++)
{
cin >>a>>b>>c;
s1 += a;
s2 += b;
s3 += c;
}
cout<<s1<<" "<<s2<<" "<<s3<<" "<<s1+s2+s3;
return 0;
}
在线练习:
总结
本系列为C++学习系列,会介绍C++基础语法,基础算法与数据结构的相关内容。本文为C++循环结构的入门课程,包括相关案例练习。
相关文章
- 模拟实现C++中的string类(详细解析)
- C/C++ 中头文件相互包括引发的问题
- C++学习笔记_21 优先级队列实现-堆积树-堆排序 2021-05-24
- C++学习笔记_08 运算符重载 2021-04-22
- VTK学习笔记(一) 第一个C++ Demo运行成功
- 数据结构实验一 顺序表 c++版本
- C++解决share_ptr造成的循环引用
- C++你不知道的那些事儿—C++语言的15个晦涩特性
- C++经典面试题(二)
- SpiderMonkey-让你的C++程序支持JavaScript脚本
- C++ STL 中list是双向循环链表中循环可以实现什么功能?
- C++实现string存取二进制数据的方法
- (Windbg调试四)C++死锁问题定位与分析
- C++11的for循环,以及范围Range类的实现
- 【PAT乙级真题】1008 数组元素循环右移问题(分数 20)(C++)
- C++ | 智能指针面试题:使用weak_ptr解决循环引用无法析构的问题