作业十
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.可以用二维数组输出多个数据。