设计性实验
1.求4*4二维数组中主对角线以下(包括主对角线)的元素之和
分析:主对角线以下(包括主对角线)的元素之和 a[i][j] i>=j
#include <stdio.h>
int main()
{
int i,j,sum=0,a[4][4];
printf("Input a 4*4 martix:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i>=j)
sum=sum+a[i][j];
}
}
printf("sum=%d\n",sum);
return 0;
}
2.输入一个3*4的矩阵,计算并输出该矩阵的转置矩阵
分析:①定义一个3×4的二维数组表示原始矩阵a,一个4×3的二维数组 表示转置矩阵b。
②用双重循环语句输入原始二维数组中的数据。
③通过转置矩阵与原始矩阵的关系((b[i][j]=a[j][i])对转置矩阵进行 赋值。
④ 输出得到的转置矩阵。
#include <stdio.h>
int main()
{
int i,j,a[3][4],b[4][3];
printf("Input a 3*4 matrix:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
printf("The reversed matrix is:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
b[j][i]=a[i][j];
}
for(j=0;j<4;j++)
{
for(i=0;i<3;i++)
printf("%d\t",b[j][i]);
printf("\n");
}
return 0;
}
提高性实验
1.输入3个学生5门课的成绩,计算并输出每门课的最高分及取得最高分的学生编号
#include<stdio.h>
int main()
{
int a[3][5],i,j,max=0;
printf("Input 3*5 scores:\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
}
printf("The max scores are:\n");
for(j=0;j<5;j++)
{
for(i=0;i<3;i++)
{
if(a[i][j]>max)
max=a[i][j];
}
printf("course %d: stu %d get the max score %d\n",j,j,max);
max=0;
}
return 0;
}
2.任意输入两个4*4的矩阵A和B,计算并输出A与B的乘积矩阵
分析:cij=ai0b0j+ai1bij+ai2b2j+ai3b3j
#include<stdio.h>
int main()
{
int a[4][4],b[4][4],c[4][4],i,j,k,sum;
printf("Input first 4*4 matrix:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}//for 输入矩阵A
printf("Input second 4*4 matrix:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&b[i][j]);
}//for 输入矩阵B
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
sum=0;
for(k=0;k<4;k++)
{
sum=sum+a[i][k]*b[k][j];
c[i][j]=sum;
}
}
}
printf("The multiple matrix is:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
return 0;
}