第十次实验

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

#include <stdio.h>
int main()
{
    int sum,grade[3][5]={78,89,45,65,68,69,67,71,73,75,78,65,82,85,86},i,j,sum1=0;
    double average,ave;
    printf("\t语文\t数学\t英语\n");    
            for(j=0;j<5;j++)
            {
                printf("学生%d\t",j+1);
                    for(i=0;i<3;i++)
                {
                    printf("%d\t",grade[i][j]);
                }
                printf("\t\n");
            }
            
            for(i=0;i<5;i++)
            {
                sum=0;
                for(j=0;j<3;j++)
                {
                    sum=sum+grade[j][i];
                }
                printf("总分%d\n",sum);
                average=(double)sum/3;
                printf("平均%.3f\n",average);
            }                            
                //各科平均分
            printf("平均分");
        for(i=0;i<3;i++)
        {
            sum1=0;
            for(j=0;j<5;j++)
            {
                sum1=sum1+grade[i][j];
            }
            ave=(double)sum1/5;
            printf("%.2f\t",ave);
        }

    return 0;
}

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

                        

#include <stdio.h>
#define N 100
int main()
{
    int i,j,sum,a,b=0,d;          //i代表行,j代表列 
    int group[N][N];
    printf("请输入行数");
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        for(j=0;j<a;j++)
        {
           b++;
           group[i][j]=b;
           printf("%3d",b);
        }
        printf("\n");
    }
   //各行之和
     for(i=0;i<a;i++)
    {
         sum=0;
         for(j=0;j<a;j++)
         {
             sum=sum+group[i][j];
        }
        printf("第%d行的和为%d\n",i+1,sum);
    }
    //各列之和    
    for(j=0;j<a;j++)
    {
        sum=0;
        for(i=0;i<a;i++)
        {
            sum=sum+group[i][j];
        }
        printf("第%d列的和是%d\n",j+1,sum);
    }
    //对角线之和 
    sum=0;
    for(i=0;i<a;i++)
    {
        for(j=0;j<a;j++)
        {      
            if(i==j)
             {
                 sum=sum+group[i][j];
             }
           }
   }
        printf("对角线之和为%d\n",sum);
       sum=0;
       for(i=0;i<a;i++)
       {
           for(j=4;j>=0;j--)
           {
               if(i+j==4)
               {
                   sum=sum+group[i][j];
               }
        }
    }
       printf("对角线2之和为%d",sum);
        return 0;
}

知识点

1、group[a][b]代表坐标(a,b)点处的值

2、注意输出语句和赋值语句摆放位置,错误可能会影响程序数值错误

3、适当使用if语句可以减少for循环量

posted @ 2016-12-11 11:39  丁啸宇  阅读(211)  评论(1编辑  收藏  举报