您的位置:首页 > 其它

【数组】项目二。成绩处理(无学号版)(函数版)

2013-11-27 13:07 176 查看
上机内容:C++程序的编写和运行

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

我的程序:
/*
Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作    者:赵玲玲
* 完成日期:2013 年 11 月 27 日
* 版 本 号:v1.0
* 输入描述: 略
* 问题描述:成绩处理
* 程序输出: 略
* 问题分析:数组应用,循环应用,不同功能的函数调用
* 算法设计:函数类型需要适合,int还是void,注意返回值;全局变量使用;学号还不会弄;
*/

#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)
		{
			cout<<"您的输入有误!请重新启动程序!"; //如果输入的成绩大于100,提示错误
		}
	}
	return 0;
}
void cout_gra()
{
	int max,min,num1=0,num2=0,sum=0;
	for(i=1;i<=n;i++)
	{
		max=a[1];                                   //最初将最大最小都等于a[1]
		min=a[1];
		if(max<a[i])                                //如果有比a[1]还大的数,就将最大值的值给max-----没有错误吧,不知道为什么最小值能找出来,但是最大值找不出来---欢迎提错误
		{
			max=a[i];
		}
		if(min>a[i])                                //同理求min
		{
			min=a[i];
		}
		sum+=a[i];                                  //求出总和
	}
	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<<"人"<<endl;//他们的学号是:
	cout<<"取得最低成绩"<<min<<"分的共"<<num2<<"人"<<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 ;
}


运行结果:


心得体会:函数类型需要适合,int还是void,注意返回值;全局变量使用;学号还不会弄;最大值那里不知道什么情况,欢迎提错误

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