第十四周实验报告2

  实验目的:学会使用循环控制语句解决实际问题
实验内容:用循环控制语句编写程序,完成表达式的计算

* 程序头部注释开始

* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:     成绩详情                        
* 作    者:     徐嘉健                        
* 完成日期:     2011    年    11   月    28   
* 版本号:      number one     

* 对任务及求解方法的描述部分
* 输入描述:学生人数和成绩
* 问题描述:(函数及数组的简单应用) 在数组score中将要存储某小组C++程序设计的成绩,请设计完成下面功能函数,并将它们组合成一个完整的应用:
(1)输入小组人数及成绩;
(2)输出该小组的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
(3)输出考得最高成绩和最低成绩的同学的人数及对应的学号(设成绩对应的下标即学号,可能有相同的成绩)
* 程序输出:小组的最高成绩、最低成绩、平均成绩和成绩的标准偏差;最高成绩和最低成绩的同学的人数及对应的学号
* 程序头部的注释结束

#include <iostream>

#include<Cmath>

using namespace std;

int score[50];

int num;

void input_score();

int get_max_score();

int get_min_score();

double get_avg_score();

double get_stdev_score();

int count(int);

void output_index(int);

int main(void)
{
    int max_score, min_score;
    cout << "小组共有多少名同学?";
    cin >> num;
    cout << endl << "请输入学生成绩:" << endl;
    input_score();
    max_score=get_max_score();
    cout << endl << "最高成绩为:" << max_score << ",共有 " << count(max_score) << " 人。";
    min_score = get_min_score();
    cout << endl << "最低成绩为:" << min_score << ",共有 " <<count(min_score ) << " 人。";
    cout << endl << "平均成绩为:" << get_avg_score();
    cout << endl << "标准偏差为:" << get_stdev_score();
    cout << endl << "获最高成绩的学生(学号)有:";
    output_index(max_score);
    cout << endl << "获最低成绩的学生(学号)有:";
    output_index(min_score);
    system("PAUSE");

    return 0;
}

void input_score()
{
    int i;
    for(i = 0; i < num; i++)
    do
    {
         cout << "输入第 " << i + 1 << " 位同学的成绩:";
         cin >> score[i];
     }while(score[i] < 0 || score[i] > 100);

     return;
}

int get_max_score()
{
    int i, max;
    for(i = 0; i < num; i++)
    {
         while(max < score[i])
        {
            max = score[i];
        }
    }

    return max;
}

int get_min_score()
{
    int i, min = 100;
    for(i = 0; i < num; i++)
    {
         while(min > score[i])
         {
             min = score[i];
         }
     }

    return min;
}

double get_avg_score()
{
    int i;
    double sum, avg;
    for(i = 0, sum = 0; i < num; i++)
    {
        sum = sum + score[i];
    }
    avg = sum / i;

    return avg;
}

double get_stdev_score()
{
    int i;
    double sum, avg, stdev;
    for(i = 0, sum = 0; i < num; i++)
    {
         sum = sum + score[i];
    }
    avg = sum / i;
    for(i = 0, sum = 0; i < num; i++)
    {
        sum = pow(score[i] - avg, 2);
    }
    stdev = sqrt(sum / (num - 1));

    return stdev;
}

int count(int s)
{  
    int i, j;
    for(i = 0, j = 0; i < num; i++)
    {
         if (s == score[i])
              j = j + 1;
         else
             continue;
    }

    return j;
}

void output_index(int s)
{  
    int i;
    for(i = 0; i < num; i++)
    {
         if (s == score[i])
             cout << " " << i + 1;
         else
            continue;
     }
}

运算结果:

第十四周实验报告2

经验积累:

1.很多个函数的调用,了解调用机制很重要。

2.把自己想象成计算机,一步一步走查很有用,特别是在程序既没有语法错误也没有逻辑错误时,有利于问题的解决。

3.程序越来越长,要解决的问题也越来越多,分解问题,逐一击破理念的实用性显现无疑,毕竟即使是人类这种复杂的生命体,要想一次同时思考多个问题也是很困难的。

 

上机感言:

老师布置的作业的难度是越来越大了那,显然程序的长度也在成倍的增长,所以真的是很容易自己把自己搞晕,可是当把这个看似很复杂的程序分解,一个一个函数的拆开来看,每一个问题又都是我们学过也练习过的,问题就不会显得那么困难了。

我就是这样,一开始看老师给的模板,真的是一个头两个大,光是给的程序头就那么长,仔细数数,需要调用函数的数量也是前所未有的,我自己承认现在还是个菜鸟,所以真的开始就有些丧失信心了,可是我做的很满意的一件事是,把主函数和第一个需要调用函数外的函数全部删掉,只专注于仅留的简单问题,解决起来还是得心应手的,然后慢慢一个一个增加要用的被调函数,每次只做一小步,然后回过头,却发现,自己走过的路程是那么的漫长,成就感油然而生,一开始不知如何下手的问题也便迎刃而解了,这算是我的一点心得吧,真的很管用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值