一、实验内容
1、实现矩阵转置,要求如下。
(1)初始化二维数组a[3][4],并且输出矩阵转置前的二维数组。转置后,将转置后的二维数组b[4][3]输出。
(2)二维数组的行用i变量表示,二维数组的列j变量表示。
(3)运行结果示例图:
2、找出下列矩阵中最大的数,并输出其行号和列号,要求如下。
(1)其中二维数组为a[3][4],数组按照表格中的值进行初始化,按二维数组的行用i变量表示,二维数组的列j变量表示;
(2)最大值用变量max表示,最大值行号用变量row表示,最大值列号用变量col表示。
3.编写程序,输出所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身
二.源代码
1.
#include <stdio.h>
int main()
{
int a[3][4];
int i,j;
int b[4][3];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
printf("\n");
}
printf("输出转置前数组;\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
b[j][i]=a[i][j];
}
}
printf("输出转置后数组;\n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
2.
#include <stdio.h>
int main()
{
int a[3][4];
int i,j;
int row,col;
int max=0;
printf("录入矩阵为:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
row=i;
col=j;
}
}
}
printf("最大数%d\n",max);
printf("行号%d;列号%d\n",row,col);
return 0;
}
3.
#include<stdio.h>
int main()
{
int i, x, y, z;
for (i = 100; i < 1000; i++)
{
x = i % 10;
y = i / 10 % 10;
z = i / 100 % 10;
if (i == (x * x * x + y * y * y + z * z * z))
printf("%d\n", i);
}
return 0;
}