欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【华软C语言实验报告】实验7_数组

程序员文章站 2022-07-15 23:09:04
...

实验7_数组

一、实验目的:
1、理解数组的作用、特点;
2、掌握一维数组、二维的定义、引用、初始化,能够与循环结合实现批量数据处理(如输入、输出,比较大小,交换等);
3、熟悉打擂台等典型算法。

二、实验内容
1、(基础题)有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。如下图所示:

程序代码:

#include <stdio.h>
int main()
{
    int i;
    int f[20]={1,1};
    for(i=2;i<20;i++)
        f[i]=f[i-1]+f[i-2];//计算数列的值
    for(i=0;i<20;i++)
    {
        if(i%5==0) printf("\n");
        printf("%-5d",f[i]);

    }
    return 0;
}

2、(基础题)青年歌手大奖赛,有7名评委进行打分,分数取值范围:0.0~10.0,试编程实现如下功能:从键盘输入7位评委给某一选手的评分,之后计算、输出该选手的平均得分(计算规则:去掉一个最高分和一个最低分,求出剩余5个得分的平均值)。如下图所示:

(提示:使用一维数组来保存7位评委的给分,先计算所有评委给分总和,并找到最高分、最低分,然后用给分总和-最高分-最低分,再除5得到选手的平均得分,最后输出。)
程序代码:

#include <stdio.h>
//const int N=7;//定义评委数
#define N 7
int main()
{
	double score[N];
	double max,min,sum,aver;
	int i;
	printf("请输入%d位评委的给分:\n",N);
	for(i=0;i<N;i++)
		scanf("%lf",&score[i]);
	
	max=min=sum=score[0];
	for(i=1;i<N;i++)
	{
		if(max<score[i])
			max=score[i];
		if(min>score[i])
			min=score[i];
		sum=sum+score[i];
	}
	sum=sum-max-min;
	aver=sum/(N-2);
	printf("\n去掉一个最高分: %.4f,去掉一个最低分:%.4f\n\n",max,min);
	printf("该选手的最后得分是: %.4f\n\n",aver);
	return 0;
}

3、(基础题)计算矩阵之和:
先输出这两个矩阵,再输出求和后矩阵。
(提示:矩阵之和是对应元素相加,可用二维数组实现)
程序代码:

#include <stdio.h>
int main()
{
	int a[3][4]={{3,0,4,5},{6,2,1,7},{4,1,5,8}};
	int b[3][4]={{1,4,0,3},{2,5,1,6},{9,3,6,0}};
	int c[3][4];
	int i,j;
	printf("array a:\n");
	

for (i=0;i<3;i++)
	{
		for (j=0;j<4;j++)
			printf("%5d",a[i][j]);//12
		printf("\n");//3
	}

	printf("\narray b:\n");
	for (i=0;i<3;i++)
	{
		for (j=0;j<4;j++)
			printf("%5d",b[i][j]);
		printf("\n");
	}
//c矩阵各元素的值
	
	for (i=0;i<3;i++)
	 for (j=0;j<4;j++)
	  c[i][j]=a[i][j]+b[i][j];

	printf("\narray a+b:\n");
	for (i=0;i<3;i++)
	{
		for (j=0;j<4;j++)
			printf("%5d",c[i][j]);
			printf("\n");
	}
 	return 0;
}

4、(提高题)已知学生成绩如下表,要求用二维数组保存学生成绩,并计算每个学生的平均成绩以及各门课程的平均成绩。

程序运行效果如下图所示:

#include <stdio.h>
#define M 4
#define N 3
int main()
{
    int i,j;//定义行,列两个控制变量
    float average_stu[M]={0.0};//存放每个学生的平均成绩
    float average_sc[N]={0.0};//存放每门课程的平均成绩
     //二维数组赋初值
    float sc[M][N]={{85,73,92},{76,89,75},{93,95,91},{60,55,48}};
    //输出二维数组中的元素
    printf("学生成绩表为:\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
            printf("%.0f\t",sc[i][j]);
        printf("\n");
    }
     printf("\n");
    //计算每个学生的平均成绩
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
          average_stu[i]+=sc[i][j];
        average_stu[i]/=N;
    }
    //计算每门课程的平均成绩
    for(j=0;j<N;j++)
    {
        for(i=0;i<M;i++)
          average_sc[j]+=sc[i][j];
        average_sc[j]/=M;
    }

    // 输出每个学生的平均成绩
    for(i=0;i<M;i++)
        printf("第%d个学生的平均成绩为:%.1f\n",i+1,average_stu[i]);
    printf("\n");
    // 输出每门课程的平均成绩
    for(j=0;j<N;j++)
        printf("第%d门课程的平均成绩为:%.1f\n",j+1,average_sc[j]);

    return 0;
}
相关标签: 学习笔记 笔记