作业十

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

#include<stdio.h>
int sum(double a[5][5],int m);
double average(double a[5][5],int m);
double average1(double a[5][5],int m);
int main()
{
double a[5][5]={{60,61,62},{63,64,65},{66,67,68},{69,70,71},{72,73,74}};
int i,x,n;
    for(i=0;i<5;i++)
    {
        a[i][3]=sum(a,i);
        a[i][4]=average(a,i);
    }
    printf("\t语文\t数学\t英语\t总分\t平均分\n"); 
    for(i=0;i<5;i++)
    {    
        for(x=0;x<5;x++)
        {
            printf("\t%.2lf",a[i][x]);
        }
        printf("\n");
    }
    printf("平均值"); 
    for(i=0;i<3;i++)
    {
        printf("\t%.2lf",average1(a,i));
    }
        
     
     return 0; 
}
int sum(double a[5][5],int m)
{
    int i;
    int sum=0;
    for(i=0;i<3;i++)
    {
        sum+=a[m][i];
    }
    return sum;
}
double average(double a[5][5],int m)
{
    return (double)sum(a,m)/3;
}
double average1(double a[5][5],int m)
{
    int sum=0,n;
    for(n=0;n<5;n++)
    {
            sum=sum+a[n][m];
    } 
    return (double)sum /5;
        
}

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

#include<stdio.h>
int main()
{    
    int m;
    printf("输入矩形的长宽:\n");
    scanf("%d",&m);int a[m][m],i,j,x=1,b[m],c[m],n=0,y=0;
    for(i=0;i<m;i++)
    {
        b[i]=0;
        c[i]=0;
     } 
    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
        {
            a[i][j]=x++;
            printf("%4d",a[i][j]);
            if((x-1)%m==0)
            {
             printf("\n");
            }
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
        {
            b[i]+=a[i][j];
            c[j]+=a[i][j];
            if(i==j) 
            {
                n+=a[i][j];
            }
            if(i+1==m-j)
            {
                y+=a[i][j];
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("第%d行和为%d,第%d列和为%d\n",i+1,b[i],i+1,c[i]);
    }
    printf("对角线和为%d与%d。",n,y);
    return 0;
} 

附加题

1.按照以下形式打印杨辉三角(要求输出10行)

    杨辉三角形具有如下特点:(1)第一列和对角线上的元素都为1 (2)除第一列和对角线上的元素之外,其他元素的值均为前一行上的同列元素和前一列元素之和。    

我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我是真不会了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#include<stdio.h>
int main()
{
    int a[100][100],i,j,n,x;
    printf("输入一个整数\n");
    scanf("%d",&n); 
    if(n==1)
    {
        printf("1\n");
    }
    else if(n==2)
    {
        printf(" 1\n1 1\n");
    }
    else if(n>2&&n<=100)
    {
        for(i=1;i<=n;i++)
        {
            a[i][1]=1;
            a[i][i]=1;
        }
        for(i=1;i<=n;i++)
        {
            for(j=2;j<i;j++)
            {
                a[i][j]=a[i-1][j-1]+a[i-1][j];
            }
                for(j=1;j<=i;j++)
                {
                    printf("%4d",a[i][j]);
                }
                printf("\n");    
        }
    }
    else
    {
        printf("错误\n");    
    }
    return 0;
}

 

 

实验总结:

1:数组要定义长度,不能越界。

2:实现数组换位,要有多余的位置。

3:合理运用制表符\t。

4.可以用二维数组输出多个数据。  

posted on 2016-12-11 20:02  Mty灬  阅读(227)  评论(0编辑  收藏  举报

导航