作业,10

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

复制代码

#include<stdio.h>
void ave(int a[][3]);
int sum(int a[][3],int i);
int main()
{
int fs[5][3]={76,46,87,67,59,74,36,85,67,46,86,78,64,58,57},i,j,Sum;
double average;
printf(" 数学 语文 英语 总分 平均分 ");
for(i=0;i<5;i++)
{
printf("学生%d ",i+1);
for(j=0;j<3;j++)
{
printf("%d ",fs[i][j]);
}
Sum=sum(fs,i);
average=(double)Sum/3;
printf("%d %.2f ",Sum,average);
}
printf("平均分 ");
ave(fs);
}
void ave(int a[][3])
{
int i,j,sum;
double ave;
for(j=0;j<3;j++)
{
for(i=0,sum=0;i<5;i++)
{
sum+=a[i][j];
}
ave=(double)sum/5;
printf("%.2f ",ave);
}
}
int sum(int a[][3],int i)
{
int j,Sum;
for(j=0,Sum=0;j<3;j++)
{
Sum+=a[i][j];
}
return Sum;
}

复制代码

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

复制代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int Sum1(int a[7][7],int i);
int Sum2(int a[7][7],int j);
int main()
{
int fz[7][7],i,j,a,sum1,sum2,sum3,sum4;
srand(time(NULL));
for(i=0;i<7;i++)
for(j=0;j<7;j++)
{
a=rand()%100;
fz[i][j]=a;
}
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
printf("%02d ",fz[i][j]);
}
printf(" ");
}
for(i=0,sum1=0;i<7;i++)
{
sum1=Sum1(fz,i);
printf("第%d行的和为%d ",i+1,sum1);
}
for(j=0,sum2=0;j<7;j++)
{
sum2=Sum2(fz,j);
printf("第%d列的和为%d ",j+1,sum2);
}
for(i=0,sum3=0;i<7;i++)
for(j=0;j<7;j++)
{
if(i==j)
{
sum3+=fz[i][j];
}
}
for(i=0,sum4=0;i<7;i++)
for(j=0;j<7;j++)
{
if(6-i==j)
{
sum4+=fz[i][j];
}
}
printf("对角线的和为%d与%d",sum3,sum4);
}
int Sum1(int a[7][7],int i)
{
int j,sum;
for(j=0,sum=0;j<7;j++)
{
sum+=a[i][j];
}
return sum;
}
int Sum2(int a[7][7],int j)
{
int i,sum;
for(i=0,sum=0;i<7;i++)
{
sum+=a[i][j];
}
return sum;
}

复制代码

附加题

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

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

#include<stdio.h>
int main()
{
    int a[10][10]={0},i,j;
//    printf("1");
    for(j=0;j<10;j++)
    {
        a[j][0]=1;
    }
//    printf("1");
    for(i=0;i<10;i++)
    for(j=0;j<=i;j++)
    {
        if(i==j)
        {
            a[i][j]=1;
        }
    }
    for(i=2;i<10;i++)
    for(j=1;j<i;j++)
    {
        a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
    for(i=0;i<10;i++)
    {
        for(j=10-i;j>1;j--)
        {
            printf("  ");
        }
        for(j=0;j<=i;j++)
        {
            printf("%3d ",a[i][j]);
        }
        printf("
");
    }
}

实验总结

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

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

3:合理运用制表符 。

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

原文地址:https://www.cnblogs.com/szy-65517610/p/6160476.html