Problem1069--输出成绩

1069: 输出成绩

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 79  Solved: 29
[Submit] [Status] [Web Board] [Creator:]

Description

给定n个小朋友的数学成绩,求这n个小朋友的平均成绩,以及输出所有高于平均成绩的数学成绩(按输入的顺序输出)。

Input

第一行一个整数n,接下来n行每行一个小于等于100的整数。

Output

第一行是n个成绩的平均值,保留3位小数。
接下来若干行输出高于平均分的成绩,每行一个数。

Sample Input

5
10
20
30
40
60

Sample Output

32.000
40
60

HINT

n<=1000
本题因为最后要输出比平均分高的成绩,所以我们要把之前的所有成绩都保存起来。
保存所有的成绩,用单个变量是不行的,我们用数组(和平时的表格是一样的)来保存这组数。
int a[1001];  //数组中包含了1001个元素,分别是a[0],a[1],...,a[1000],这1001个元素可分别一个int类型值。
注意C++中的数组第一个元素的下标是0,下标要从零开始,元素个数要开够,一般人习惯从1开始存放数据,那么我们要开到1001。
定义起来的包含1001个元素的数组(表格),想存取哪个元素(表格的格子),直接用下标进行定位。
遍历整个(或某段)数组,需要用for循环。
时间限制:1000ms
空间限制:256MByte


#include <iostream>
using namespace std;
int main()
{
  int a[10]={0};  //理解成 类型int [10]  变量名称是 a 的一种新的类型
             //int [10] 表示10个整型数的集合,称位数组 ,十个数名称分别为a[0],a[1]...a[9] .
            // 数组可以定义直接赋值  int a[10] ={1,2,3,4,67},没有赋值的整型赋值为0
            //数组的大小不能改变的,所以一般定义的大,够用 比如定义100,但只有了10个是可以的
  for(int i=0;i<6;i++)
           cin>>a[i];          //通常动态赋值
  for(int i=0;i<6;i++)
   cout <<a[i]<<" ";
 cout<<endl;
 cout<<a[1]<<endl;    //这个输出第2个元素的值;
 cout<<a[5]<<endl;    //这个输出第6个元素的值;
 cout<<a<<endl;       //定义数组是连续的100个整型变量空间,这个a存的是整块空间第一个地址
    cout<<&a[0]<<endl;   //恰好是a[0]的地址,&a[0];
                      //为什么要这样子呢?我要访问第5个空间,可以先找到第五个空间的a+5
 cout<<a[5]<<endl;  //知道第6个同学的地址(住址),只要*加上他的地址,即*(a+5)就等于a[5]
  cout<<(a+5)<<endl;  //这个是a[5]所在的住址。
 cout<<*(a+5)<<endl;  //这样做的好处,不用一个一个按次序的找到a[5],只要通过计算就找到a[5];

  
#include <iostream>
using namespace std;
int main()
{
  int a[1001];
  int n,i,sum;
  double b; //平均成绩
  sum=0;  //和的初始
  cin>>n;
  for(i=0;i<n;i++)
   { cin>>a[i];
    sum=sum+a[i];
   }
   b=sum*1.0/n; //求平均成绩
   printf("%.4lf\n",b);
   for(i=0;i<n;i++)
     if(a[i]>b) cout<<a[i]<<endl; //输出大于平均成绩的数
 
  return 0;
}
  
  
  


Source/Category


[Submit] [Status]