您的位置:首页 > 其它

【数组】14周项目三。(正版)

2013-11-27 16:39 274 查看
上机内容:C++程序的编写和运行

上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程

我的程序:
/*
Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作    者:赵玲玲
* 完成日期:2013 年 11 月 27 日
* 版 本 号:v1.0
* 输入描述: 略
* 问题描述:成绩处理
* 程序输出: 略
* 问题分析:数组应用,循环应用,不同功能的函数调用
*/

#include <iostream>
#include <cmath>                                           //用到开方
using namespace std;
int cin_gra(int);                                          //输入成绩
void cout_gra();                                           //输出最高最低和平均数
void cout_s();                                             //输出标准偏差
int a[100],n,i,ave;                                        //定义外部变量a[100](不会超过100名同学),输入的个数n,后面用到的i,ave
int main()
{
    cout<<"小组共有多少名同学?";
	cin>>n;
	cin_gra(n);                                       //调用函数
	cout_gra();
	cout_s();
    return 0;
}
//输入成绩
int cin_gra(int n)
{
	cout<<"请输入同学的成绩(1-100):"<<endl;
	for(i=1;i<=n;i++)                                  //车轮式的输入成绩
	{
		cout<<"输入第"<<i<<"位同学的成绩:";
		//freopen("input.txt","r",stdin);这里没法用。。。
		cin>>a[i];
		if(a[i]>100||a[i]<0)
		{
			cout<<"输入第"<<i<<"位同学的成绩:"; //如果输入的成绩大于100,提示错误
			i--;
		}
	}
	return 0;
}
void cout_gra()
{
	int max=0,min=100,num1=0,num2=0,sum=0;//给max赋值为0,肯定都比他大;同理给min赋值为100
	for(i=1;i<=n;i++)
	{                                  
		if(max<a[i])                                //如果有比max还大的数,就将最大值的值给max
		{
			max=a[i];
		}
		if(min>a[i])                                //同理求min
		{
			min=a[i];
		}
		sum+=a[i];                                  //求出总和ave=sum/n; 
	}
	ave=sum/n;                                           //求平均数
	for(i=1;i<=n;i++)
	{
		if(max==a[i])                               //求得最高分的人数
		{
			num1++;
		}
		if(min==a[i])                               //求得最低分的人数
		{
			num2++;
		}
	}
	cout<<"最高成绩为:"<<max<<"  "<<"最低成绩为:"<<min<<"  "<<"平均成绩为:"<<ave<<endl;
	cout<<"取得最高成绩"<<max<<"分的共"<<num1<<"人,";cout<<"他们的学号是:";
	for(i=1;i<=n;i++)
	{
		if(max==a[i])
		{
			cout<<i<<" ";                       //学号
		}
	}
	cout<<endl;
	cout<<"取得最低成绩"<<min<<"分的共"<<num2<<"人,";cout<<"他们的学号是:";
	for(i=1;i<=n;i++)
	{
		if(min==a[i])
		{
			cout<<i<<" ";
		}
	}
	cout<<endl;
    return ;
}
//标准偏差
void cout_s()
{
	double s1=0,s;
	for(i=1;i<=n;i++)
	{
		s1+=(a[i]-ave)*(a[i]-ave);                  //先在循环里面讲平方根里面的除数求出
	}
	s=sqrt(s1/(n-1));                                    //求出标准偏差
		cout<<"标准偏差是:"<<s<<endl;
	return ;
}


运行结果:


心得体会: 一开始把max和min的赋值弄到for循环里面去了,导致每次循环都是重新赋值,师哥就是棒!
学号那里的也根据王颖的做出来了,当时想的太复杂,其实很简单的。。。

知识点总结:一些细节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: