• 第十次


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

    #include<stdio.h>
    #define M 5
    #define N 3
    void score(int num[M][N]);
    void aveforstudent(int num[M][N],double average1[]);
    void aveforsubject(int num[M][N],double average2[]);
    int main()
    {
    	int num[M][N],i,j,sum1;
    	double average1[M],average2[N];
    	score(num);
    	aveforstudent(num,average1);
    	aveforsubject(num,average2);
    	printf("	语文	数学	英语	总分	平均分
    ");
    	for(i=0;i<M;i++)
    	{
    	    printf("学生%d	",i+1);
    		sum1=0;
    	    for(j=0;j<N;j++)
    		{
                printf("%d	",num[i][j]);
    			sum1=sum1+num[i][j];
    		}
    		printf("%d	",sum1);
    		printf("%.2f",average1[i]);
    		printf("
    ");
    	}
    	printf("平均分	");
    	for(j=0;j<N;j++)
    	{
    		printf("%.2f	",average2[j]);
    	}
    	return 0;
    }
    void score(int num[M][N])
    {
    	int i,j;
    	for(i=0;i<M;i++)
    	{
    		printf("请分别输入第%d个学生的语文,数学,英语成绩:
    ",i+1);
    		for(j=0;j<N;j++)
    		{
    			scanf("%d",&num[i][j]);
    		}
    	} 
    }
    void aveforstudent(int num[M][N],double average1[])
    {
    	int i,j,sum;
    	for(i=0;i<M;i++)
    	{
    		sum=0;
    		for(j=0;j<N;j++)
    		{
    			sum=sum+num[i][j];
    		}
    		average1[i]=(double)sum/N;
    	}
    }
    void aveforsubject(int num[M][N],double average2[])
    {
    	int i,j,sum;
    	for(j=0;j<N;j++)
    	{
    		sum=0;
    		for(i=0;i<M;i++)
    		{
    			sum=sum+num[i][j];
    		}
    		average2[j]=(double)sum/M;
    	}
    }
     
    

      

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

    #include<stdio.h>
    #define M 3
    #define N 3
    int main()
    {
    	int num[M][N],i,j,a,b,sum1,sum2,sum3,sum4;
    	printf("请输入任意九个数,组成方阵
    ");
    	for(i=0;i<M;i++)
    	{
    		for(j=0;j<N;j++)
    		{
    			scanf("%d",&num[i][j]);
    		}
    	}
    	printf("方阵为:
    ");
    	for(i=0;i<M;i++)
    	{
    		for(j=0;j<N;j++)
    		{
    			if(j%3==0)
    		    {
    			    printf("
    ");
    		    }
    		    printf("%3d",num[i][j]);
    		}
    	}
    	printf("
    ");
    	for(a=0;a<M;a++)
    	{
    		sum1=0;
    		sum2=0;
    	    for(b=0;b<N;b++)
    		{
    		    sum1=sum1+num[a][b];
    			sum2=sum2+num[b][a];
    		}
    		printf("第%d行的元素之和为%d
    ",a+1,sum1);	
    		printf("第%d列的元素之和为%d
    ",a+1,sum2);
    	}
    	sum3=num[0][0]+num[1][1]+num[2][2];
    	sum4=num[0][2]+num[1][1]+num[2][0];
    	printf("从左上到右下的对角线元素之和为%d
    从左下到右上的对角线元素之和为%d",sum3,sum4);
    	return 0;
    }
    

      

    实验总结

    1.表格的输出使用 ,表示水平制表位,它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始,就是两个数间隔8个空格位置

    2.计算学生的平均分时先遍历每个学生,计算课程的平均分先遍历每门课程

    3.求方阵中每行每列元素之和时,存入二维数组要注意区分行和列

  • 相关阅读:
    java实现网络监听
    程序员必须知道FTP命令
    Java进化的尽头
    Oracle逻辑备份与恢复(Data Pump)
    JQuery日期选择器插件date-input
    大型高并发高负载网站的系统架构剖析
    万言万当,不如一默为官之道
    angular.js高级程序设计书本开头配置环境出错,谁能给解答一下
    安装meteor运行基本demo发生错误。
    nodejs 通过 get获取数据修改redis数据
  • 原文地址:https://www.cnblogs.com/jg666666/p/6140834.html
Copyright © 2020-2023  润新知