zoukankan      html  css  js  c++  java
  • 【华软C语言实验报告】实验7_数组

    实验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("
    ");
            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);
    	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("
    去掉一个最高分: %.4f,去掉一个最低分:%.4f
    
    ",max,min);
    	printf("该选手的最后得分是: %.4f
    
    ",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:
    ");
    	
    
    for (i=0;i<3;i++)
    	{
    		for (j=0;j<4;j++)
    			printf("%5d",a[i][j]);//12
    		printf("
    ");//3
    	}
    
    	printf("
    array b:
    ");
    	for (i=0;i<3;i++)
    	{
    		for (j=0;j<4;j++)
    			printf("%5d",b[i][j]);
    		printf("
    ");
    	}
    //c矩阵各元素的值
    	
    	for (i=0;i<3;i++)
    	 for (j=0;j<4;j++)
    	  c[i][j]=a[i][j]+b[i][j];
    
    	printf("
    array a+b:
    ");
    	for (i=0;i<3;i++)
    	{
    		for (j=0;j<4;j++)
    			printf("%5d",c[i][j]);
    			printf("
    ");
    	}
     	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("学生成绩表为:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
                printf("%.0f	",sc[i][j]);
            printf("
    ");
        }
         printf("
    ");
        //计算每个学生的平均成绩
        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
    ",i+1,average_stu[i]);
        printf("
    ");
        // 输出每门课程的平均成绩
        for(j=0;j<N;j++)
            printf("第%d门课程的平均成绩为:%.1f
    ",j+1,average_sc[j]);
    
        return 0;
    }
    
    一键三连呀!
  • 相关阅读:
    RAID卡 BBU Learn Cycle周期的影响
    Linux下查看Raid磁盘阵列信息的方法
    ROS导航包的介绍
    ROS源码解读(二)--全局路径规划
    ROS源码解读(一)--局部路径规划
    VS运行release版本正常,直接执行exe文件会出现问题
    IFM设备 Linux方面资料
    Map-making Robots: A Review of the Occupancy Grid Map Algorithm
    Eigen 介绍及简单使用
    绘制二维障碍栅格地图
  • 原文地址:https://www.cnblogs.com/jee-cai/p/14095202.html
Copyright © 2011-2022 走看看