作业,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("\t数学\t语文\t英语\t总分\t平均分\n");
for(i=0;i<5;i++)
{
printf("学生%d\t",i+1);
for(j=0;j<3;j++)
{
printf("%d\t",fs[i][j]);
}
Sum=sum(fs,i);
average=(double)Sum/3;
printf("%d\t%.2f\n",Sum,average);
}
printf("平均分\t");
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\t",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("\n");
}
for(i=0,sum1=0;i<7;i++)
{
sum1=Sum1(fz,i);
printf("第%d行的和为%d\n",i+1,sum1);
}
for(j=0,sum2=0;j<7;j++)
{
sum2=Sum2(fz,j);
printf("第%d列的和为%d\n",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("\n"); } }
实验总结
1:数组要定义长度并且不能越界。
2:实现数组换位,要有多余的位置。
3:合理运用制表符\t。
4.可以用二维数组输出多个数据。