4. (程序题)【问题描述】4.2 将一个3X2的矩阵(3行2列)的矩阵存入一个3X2的二维数组中,并输出矩阵。同时,找出矩阵中的最大值以及最大值所在的行下标和列下标,输出最大值所在的行下标和列下标及最大值。
【输入输出样例】
【样例说明】
输入提示符中冒号为英文符号,后面无空格,需换行。
输出矩阵时整数按照%4d格式输出。
最后输出结束不换行
/将一个32的矩阵的矩列存入二维数组*/
#include<stdio.h>
#define N 3
#define M 2
#define K 6
int main()
{
int a[N][M];
int b[K];
int max,k,i,j;
printf("Enter 6 integers:\n");
for(k=0;k<K;k++)
scanf("%d",&b[k]);
printf("\n");//输入六个数字
max=b[0];
for(k=1;k<K;k++)
if(b[k]>max)max=b[k];//取最大值
k=0;//k恢复从头开始
for(i=0;i<N;i++){
for(j=0;j<M;j++){
a[i][j]=b[k];
printf("%4d",a[i][j]);
k++;}
}//存入矩阵
for(i=0;i<N;i++){
for(j=0;j<M;j++)
if(a[i][j]==max)
printf("max=a[%d][%d]=%d",i,j,max);break;//矩阵中等于最大值时输出
}
return 0;
}
2. (程序题, 20分) 【问题描述】3.2.18 自守数。自守数是其平方后尾数等于该数自身的自然数。
例如:55=25, 2525=625
求1~1000之间的所有自守数,每行输出5个数,每个数占6位。
【样例输出】
1 5 6 25 76
376 625
/自守数/
#include<stdio.h>
#define H 20
#define L 5
int main()
{
int a[H][L];//5列每行
int i,h=0,l=0,j=1;
for(i=1;i<=1000;i++){//1到1000的数
while(j<=i) j*=10;
if(i*i%j==i){//判断是否是自守数
a[h][l]=i;//赋值
printf("%6d",a[h][l]);//输出
if(l<4)l++;
else {l=0;h++;}//第5列换行
}
}
return 0;