C++程序设计-第14周数组上机实践项目

来源:互联网 发布:java zip 中文乱码 编辑:程序博客网 时间:2024/05/16 19:55

回到课程主页,链接:C++程序设计课程主页-2012级

  本次上机对应的教学内容:第5章   数组 - 一维数组


【项目1 - 数组大折腾】创建一个长度为20的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入,使后10个元素获得值,将所有元素值加倍后保存在数组中,最后由前往后输出数组中所有元素的值,再由后往前输出数组中所有元素的值,再输出数组中的所有偶数,以及下标为3的倍数的元素值。

  报告模板及部分代码如下:
/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: array.cpp                           * 作    者:                            * 完成日期:  年  月   日* 版本号: v1.0      * * 输入描述:无* 问题描述:定义数组,为数组赋初值、输入值、翻倍、输出等各种操作*/#include <iostream>using namespace std;int main( ){    int a[20]={...};  //初始化前10个元素//键盘输入后10个元素的值cout<<"请输入10个整数"<<endl;//将所有元素值加倍后保存在数组中//由前往后输出数组中所有元素的值cout<<"由前往后,数组中的值是:"<<endl;//由后往前输出数组中所有元素的值//输出数组中的所有偶数//输出下标为3的倍数的元素值return 0;}

【项目2- 成绩处理】在数组score中将要存储某小组C++程序设计的成绩,请设计完成下面的各功能函数,并将它们组合成一个完整的应用:
  (1)输入小组人数及成绩;
  (2)输出该小组的最高成绩、最低成绩、平均成绩和成绩的标准偏差(标准偏差公式:,其中为样本,为均值,为样本数目);
  (3)输出考得最高成绩和最低成绩的同学的人数及对应的学号(设成绩对应的下标即学号,可能有相同的成绩)
  (4)(选做)输出前3名同学的学号——可以先不考虑有并列名次的情况,再考虑有并列的情况。

  运行结果可以参考下图:

  

  参考程序段

#include <iostream>#include<Cmath> using namespace std; //在这个问题中,成绩和人数是核心数据,适合作为全局变量处理 int score[50];    //将score设为全局变量,在各个函数中可以直接使用 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();  //要求成绩在0-100之间   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);      return 0; }//input_score函数提供给同学们参考//input_score函数的功能是输入小组成员的成绩void input_score(){    int i;    for(i=0;i<num;i++)       do       {           cout<<"输入第 "<<i<<" 位同学的成绩:";           cin>>score[i];       }while(score[i]<0||score[i]>100);    return;  } // get_max_score()函数的功能是求出num名同学的最高成绩int get_max_score(){}// get_min_score()函数的功能是求出num名同学的最低成绩int get_min_score(){}// get_avg_score()函数的功能是求出num名同学的平均成绩double get_avg_score(){}// get_ stdev _score()函数的功能是求出num名同学成绩的标准偏差double get_stdev_score(){}// count(int s)函数的功能是返回值score数组中为s的元素的个数int count(int s){}// output_index函数的功能是输出score数组中值为s的元素的下标(index)//注意:值为s的元素可能有多个void output_index(int s){}

【项目3 - 成绩处理第二季】项目2的另一种实现。其中用于存储学生成绩的数组和学生人数的变量均是main()函数的局部变量。这种设计貌似比项目2麻烦,但其结构有更多的优点,尤其是当这个程序的规模更大时。通过这个项目,学会将数组名用作函数的参数。

  下面给出main()函数,在此之前,只允许声明函数和#include<...>,不允许定义数据。
int main(void){   int score[50]; //将score设为局部变量,通过数组名作函数参数,传递数组首地址,在函数中操作数组   int num;       //小组人数也设为局部变量,将作为函数的实际参数  int max_score,min_score;  cout<<"小组共有多少名同学?";  cin>>num;  cout<<endl<<"请输入学生成绩:"<<endl;  input_score(score, num);  //要求成绩在0-100之间   max_score=get_max_score(score, num);  cout<<endl<<"最高成绩为:"<<max_score<<",共有 "<<count(max_score, score, num )<<" 人。";  min_score=get_min_score();  cout<<endl<<"最低成绩为:"<<min_score<<",共有 "<<count(min_score,score, num )<<" 人。";  cout<<endl<<"平均成绩为:"<<get_avg_score(score, num);    cout<<endl<<"标准偏差为:"<<get_stdev_score(score, num);  cout<<endl<<"获最高成绩的学生(学号)有:";  output_index(max_score,score, num);  cout<<endl<<"获最低成绩的学生(学号)有:";  output_index(min_score,score, num);      return 0; }


【项目4 - 数组的排序】编函数,完成冒泡排序。要求不能改变下面的main函数。
  重点体会:(1)排序算法;(2)数组名作形式参数,将能改变作为实际参数的数组的值,实际参数传递给形式参数的是数组的地址值,也是传值;(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。
  参考程序段如下:
#include <iostream>using namespace std;//两个函数bubble_sort和output_array的声明int main( ){int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76};int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};bubble_sort(a,20);   //用冒泡法按降序排序a中元素output_array(a,20);   //输出排序后的数组bubble_sort(b,15);   //用冒泡法按降序排序b中元素output_array(b,15);   //输出排序后的数组return 0;}//请在下面定义bubble_sort和output_array函数


【项目5 - 涨工资了 】从文件salary.txt中读入500名工人的工资,全部增加100元后进行排序(好事,涨工资了;坏事,排序不要用冒泡,用选择法),将排序后的结果在屏幕上输出,并保存到文件ordered_salary.txt中。(salary.txt中内容可以从本文后面附1复制,自建文本文件。)
  提示:做第11周项目5,学习对文件的操作。


【项目6 - 银行系统】我们可以实现真正的多用户银行系统了。在具体业务上,不作多的改变,主要改变在用户管理上:
  (1)存储用户信息用三个全局数组,并用一个整型全局变量表示当前登录的帐户
const int NUM=5;   //暂时支持5个用户,其实,可以很多int account[NUM]={37001,37002, 37020, 37245,37888}; //帐户int pwd[NUM]={123456,654321, 456789, 987654, 234432}; //密码double balance[NUM]={1000., 300, 23.67, 42.30, 56789}; //余额int accountIndex; //用全局变量保存当前登录的帐户对应的下标

  提示:输入帐户后,在account数组中查找,找不到提示,登录失败;找到后,用accountIndex记住其下标,之后的各种业务中,pwd[accountIndex], balance[accountIndex]是该帐户的相关的信息。
  (2)转帐可以真正实现在两个帐户间的转账了。

  (3)-选做题:程序运行完,改变后的数据全丢了!可以建立文件保存有关信息,程序开始时,读入文件中保存的帐户、密码、余额,在程序退出时,再将变化后数据写入到文件中。这种做法更符合实际应用要求,同时,也可以支持更多的用户。(附2中的内容可以复制用于自建文本文件,以便于程序中使用。)


附1:

1648.4
619.54
1763.34
2772.59
858.74
723.49
2391.0
876.95
2551.5
613.30
2711.12
850.4
909.68
1213.95
1099.51
1115.36
962.57
2325.6
804.20
1900.77
2940.78
2085.27
1119.57
1784.22
1348.9
949.99
1579.13
1346.39
1822.32
678.67
1984.87
817.20
850.81
2121.39
985.94
2386.22
1112.86
1604.15
1013.89
2968.97
622.48
699.68
1034.7
1741.93
862.48
2879.14
2982.70
2513.58
2192.81
2640.22
2162.98
589.97
2277.5
1605.55
1688.42
1886.9
544.67
2410.92
1220.87
1892.87
1326.63
1696.38
1239.96
1895.55
2550.13
1946.68
2827.11
2009.47
2106.57
1401.49
2102.52
2580.97
2772.85
2809.58
2530.81
1132.66
1663.38
1974.22
1564.16
2226.63
771.30
2194.15
2620.15
2424.46
1903.66
950.45
2984.95
1942.62
1309.49
1760.42
2346.91
680.80
1525.74
1145.34
2102.63
1515.47
1324.28
1687.41
1387.96
1290.2
2491.6
1874.49
2958.17
1006.20
2258.94
2814.89
2857.60
763.77
2874.9
2777.54
895.16
2909.22
2359.26
2773.98
2416.17
1003.43
599.77
1810.6
2620.87
2306.0
1168.84
2240.99
2161.6
2627.62
681.29
998.22
1506.61
2152.61
2221.71
648.86
1800.54
1045.9
2904.98
2656.0
778.31
1385.12
2446.31
2648.55
845.14
1115.57
972.92
2554.82
1358.76
1870.13
1066.63
2962.72
1646.94
1115.63
2831.31
729.15
2052.36
1768.74
2457.61
1718.82
1522.40
2340.57
2709.33
1597.74
2906.75
2846.23
1990.25
2441.10
1005.61
2026.19
2914.69
2084.51
1939.63
782.3
2641.32
2211.90
2359.40
2071.62
2875.25
1187.33
2886.68
2375.89
1639.24
955.17
2383.71
802.77
1091.78
2504.25
1843.52
779.92
1399.35
1194.94
1792.99
2669.59
1326.54
1821.47
2112.30
596.16
2001.91
614.22
2835.94
710.45
1711.96
2497.9
1459.25
851.57
844.49
1496.64
972.81
2743.18
1529.11
1440.24
1810.68
2495.5
1446.58
1675.24
1591.71
2434.72
1608.76
955.71
938.28
1231.82
1971.24
1336.68
2912.41
1869.9
792.32
1026.28
592.22
2906.93
1449.49
1254.24
554.3
1934.49
757.65
2851.86
901.26
1558.9
2741.95
2716.12
1050.54
1011.89
993.84
2836.74
2065.60
1228.0
897.91
2704.35
2838.80
2564.65
2985.84
1906.40
1893.97
2138.85
1190.11
1313.75
1280.23
2638.86
1311.32
2798.32
2203.48
2717.51
1495.6
1349.45
1679.8
1207.1
2544.43
1952.96
2118.2
2478.74
1082.87
1136.91
833.42
1287.69
1296.38
1946.62
1327.6
2292.62
1254.64
2787.2
853.4
2360.12
2390.40
589.43
1118.11
2945.1
1636.80
2369.1
1091.62
1194.80
825.90
2145.99
2792.31
2145.1
1955.57
832.11
1658.92
1005.34
1267.37
2249.50
548.71
1576.12
2767.94
1904.86
1170.91
1166.78
2092.66
1608.52
1886.45
1638.25
2143.46
1904.57
1199.42
2839.73
1652.41
695.48
831.11
1231.26
2450.49
2607.83
2398.59
962.11
666.83
1864.86
572.72
1568.50
1180.60
2252.79
2349.14
909.41
2700.53
2487.88
2885.38
560.24
1265.45
2934.8
2048.96
2334.86
2265.70
1707.79
1332.45
1707.64
2344.90
2037.31
2170.71
2861.65
2809.59
748.5
2124.58
1432.14
1068.69
643.84
2841.68
2947.46
2027.8
2047.84
1680.9
1760.89
902.29
688.48
2158.61
2560.7
1646.79
1826.21
2708.74
2815.13
828.64
1562.86
1599.24
611.29
2521.74
872.61
1664.4
1145.24
2011.1
1297.42
2705.8
1024.76
1885.23
2854.60
1103.17
705.92
899.71
741.90
2702.70
791.95
1003.34
928.37
975.23
2439.71
1163.87
2041.49
2666.2
1245.72
1360.18
2400.2
2714.84
1194.68
2152.35
1613.66
728.13
2341.73
1069.9
2144.40
2890.26
862.85
773.56
940.34
1990.59
862.27
1222.80
2187.4
1488.51
2183.80
2745.52
2958.93
1938.33
2310.37
2739.34
1197.41
1147.89
553.65
864.92
1306.81
2626.10
2650.92
1755.86
1404.53
573.10
2600.42
978.89
1236.46
1143.64
534.43
2019.30
1980.74
2822.33
2206.63
1641.16
640.75
1298.99
1848.92
1854.94
1765.32
1628.1
2536.18
2149.21
2409.58
2292.48
585.25
2735.2
2080.98
1872.97
2673.31
2629.71
2538.14
1848.40
2507.35
2029.45
634.22
2816.2
1228.94
962.40
1423.20
2434.65
906.43
1659.35
1578.49
2520.23
1900.84
1729.38
1489.57
1457.61
1842.54
980.55
2919.21
1529.37
1061.66
2178.65
2738.90
1887.33
1329.64
746.5
2832.47
2233.84
1072.80
2981.50
1181.16
1782.77
2145.54
881.12
2540.76
1621.71
2376.48
2627.47
1748.40
694.8
1795.20
1268.82
2930.51
1005.74
2384.95
1835.38
2905.76
831.39
2308.74


附2:银行帐户信息(每行三部分分别代表帐号、密码、余额)

370018888884237.14
370028888885832.72
370208888882293.51
370398888882301.64
370548888883973.79
370768888883113.14
371368888881388.44
371458888886859.24
371468888884908.69
3716988888872.15
371868888883849.17
372108888886504.1
372348888888881.48
372458888881531.64
372488888889364.73
372848888881332.65
373008888888193.88
373328888889388.03
37367888888300.44
373888888889332.52
374058888881025.26
37415888888140.32
374288888885896.66
374368888883849.9
374548888883248.8
374708888881230.94
37477888888666.61
375388888887203.55
375648888889806.99
375778888881582.34
375928888881969.6
376088888887064.15
376438888888062.96
376498888882583.51
376718888887359.89
376728888888574.99
377378888886071.79
37742888888259.45
377878888888283.67
378448888888834.27
378488888888898.72
378608888889492.8
378728888884933.12
378888888883225.68
379048888881932.39
379048888885720.54
379318888886612.89
379678888888995.55
379938888889090.43
379958888882628.41

原创粉丝点击