实验3 数组-批量数据组织
一、实验目的
1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。
2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。
3.掌握与数组相关的算法,包括排序算法和查算法等。
   
二、实验环境
PC微机
Windows 操作系统
    VS 2019 程序集成环境
三、实验内容与步骤
1.编程实现:对任意一个一维数组,从中出数组元素的最大值和最小值。
要求:
1)数组为整型数组(10个元素)。
2)使用scanf函数或cin实现数组元素的输入。在输入前给出必要的提示。
3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。
代码:
#include <stdio.h>
const int maxn = 10;
#define inf 0x3f3f3f3f;
int main()
{
    int num[maxn];
    printf("please input 10 numbers");
    for (int i = 0; i < maxn; i++) scanf("%d", &num[i]);
    printf("these are initial array");
    for (int i = 0; i < maxn; i++) printf("%d ", num[i]);
    printf("\n");
    int max, min,location1,location2;
    max = - inf;
    min = inf;
    for (int i = 0; i < maxn; i++) {
        if (num[i] > max) {
            max = num[i];
            location1 = i + 1;
        }
        if (num[i] < min) {
            min = num[i];
            location2 = i + 1;
        }
    }
    printf("max = %d location of max is %d,min = %d location of min is %d", max, location1, min, location2);
    return 0;
}
实验结果:
4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?
答:若改为20个元素的数组,则只需将maxn改为20即可。当数组元素不断改变时,使用define声明。
一维数组的定义和初始化2.编程实现:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分。输入/输出格式举例如下:
Input(输入成绩):
              65  87  68  56  78
              83  94  67  85  91
              71  75  69  84  89
Output(输出结果) :
              65      87      68      56      78    70.5
              83      94      67      85      91    84.0
              71      75      69      84      89    77.5
            219.0    256.0    204.0    258.0    232.0    0
average
              73.0  85.3  68.0  86.0  77.3   
要求:
(1)数组类型为实型,输入成绩由scanf函数或cin实现。
(2)输出已输入的原始成绩数据(3×5)。
(3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。
(4)计算单科平均成绩后输出。
代码:
#include <stdio.h>
int main()
{
    double score[4][6] = { 0 }, sum = 0;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            scanf("%lf", &score[i][j]);
            sum += score[i][j];
        }
        score[i][5] = sum / 5;
        sum = 0;
    }
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 3; j++) {
            sum += score[j][i];
        }
        score[3][i] = sum;
        sum = 0;
    }
    printf("Output:\n");
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 6; j++) {
            printf("%.1lf ", score[i][j]);
        }
        printf("\n");
    }
    printf("average:\n");
    for (int i = 0; i < 5; i++) {
        printf("%.1lf ", score[3][i] / 3);
    }
    return 0;
}
实验结果:
实验分析:起初数据溢出,输出很小的负数,检查后发现数组没有初始化,初始化后得到预期结果。
四、实验总结:
1.掌握了数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。
2.掌握了字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。
3.掌握了与数组相关的算法,包括排序算法和查算法等。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。