• 第十次作业


    1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。

    #include <stdio.h>
    #define M 5
    #define N 3
    void readScore(int score[M][M]);//输入函数 
    void aveforStud(int score[M][M],double ave1[]);//计算每个学生的平均值 
    void aveforCourse(int score[M][M],double ave2[]);//计算每门课程的平均分 
    int main()
    {
    	int i,j,score[M][M];
    	double ave1[M],ave2[M];
    	readScore(score);
        aveforStud(score,ave1);
        aveforCourse(score,ave2);
        printf("       语文      数学      英语      总分      平均分"); 
        for(i=0;i<5;i++)
        { 
        
        	printf("
    ");
        	for(j=0;j<4;j++)
        	{
        		printf("%10d",score[i][j]);
    		}
    		printf("%12.2f",ave1[i]);
    	}
    	printf("
    ");
          printf("平均分"); 
          	for(j=0;j<N;j++)
    	{
    		printf("%4.2f      ",ave2[j]);
    	}
       
    	return 0;
    }
    void readScore(int score[M][M])
    {
    	int i,j,sum=0;
    	printf("输入成绩
    "); 
    	for(i=0;i<M;i++)
    	{
    		sum=0;
    		printf("输入第%d个学生的成绩:
    ",i+1);
    		for(j=0;j<N;j++)
    		{
    			scanf("%d",&score[i][j]);
                sum+=score[i][j];
    		}
    			score[i][3]=sum;
    	}
    	
    }
    void aveforStud(int score[M][M],double ave1[])
    {
    	int i,j,sum;
    	for(i=0;i<M;i++)
    	{
    		sum=0;
    		for(j=0;j<N;j++)
    		{
    			sum+=score[i][j];
    		}
    	   ave1[i]=(double)sum/N;
    
        }
    }
    void aveforCourse(int score[M][M],double ave2[])
    {
    	int i,j,sum;
    	for(j=0;j<N;j++)
    	{
    		sum=0;
    		for(i=0;i<M;i++)
    		{
    			sum+=score[i][j];
    		}
    		ave2[j]=(double)sum/M; 
    	}
    }
    

      

     2.求任意方阵每行、每列、两对角线上元素之和。

    #include <stdio.h>
    #define N 100
    int main()
    {
    	int a[N][N],i,j,m,n=0,sum=0;
    	printf("输入行数
    ");
    	scanf("%d",&m);
    	for(i=0;i<m;i++)
    	{
    		printf("
    ");
    		for(j=0;j<m;j++)
    		{
    		 n++;
    		 a[i][j]=n;
    		 printf("%4d",n);
    		}
    	}
    	printf("
    ");
    	for(i=0;i<m;i++)
    	{
    		sum=0;
    		for(j=0;j<m;j++)
    		{
    			sum+=a[i][j];
    			
    		}
    		printf("第%d行的和为%d
    ",i+1,sum);
    	}
    	for(j=0;j<m;j++)
    	{
    		sum=0;
    		for(i=0;i<m;i++)
    		{
    			sum+=a[i][j];
    			
    		}
    		printf("第%d列的和为%d
    ",j+1,sum);
    	}
    	sum=0;
    		for(i=0;i<m;i++)
    	{
    		for(j=0;j<m;j++)
    		{
    			if(i==j)
    			{
    			  sum+=a[i][j];
    			}	
    		}
    	}
    	printf("从左上到右下的对角线的和为%d
    ",sum);
    	sum=0;
    	for(i=0;i<m;i++)
    	{
    		for(j=m;j>=0;j--)
    		{
    			if(i==j)
    			{
    			  sum+=a[i][j];
    			}	
    		}
    	}
    	printf("从右上到左下的对角线的和为%d
    ",sum);
    	return 0;
    }
    

      

    实验总结:1.注意使用一维或二维数组时,避免越界现象,造成输出错误结果。

                  2.在输出表格形式的数据时使用二维数组。

                  3.编写程序前一定要先思考大体程序结构,在进行编写。

                  4.调用函数时,必须是已有函数,认真,细心。

  • 相关阅读:
    我败在了盲目和没有计划
    跟我一起学.NetCore目录
    跟我一起学.NetCore之依赖注入作用域和对象释放
    跟我一起学.NetCore之Asp.NetCore启动流程浅析
    std::unordered_map
    Android apps for “armeabi-v7a” and “x86” architecture: SoC vs. Processor vs. ABI
    android studio 配置相关问题
    shell script
    vscode配置
    linux常用命令笔记
  • 原文地址:https://www.cnblogs.com/a378/p/6141550.html
Copyright © 2020-2023  润新知