二维数组矩阵/数组判断自守数

4. (程序题)【问题描述】4.2 将一个3X2的矩阵(3行2列)的矩阵存入一个3X2的二维数组中,并输出矩阵。同时,找出矩阵中的最大值以及最大值所在的行下标和列下标,输出最大值所在的行下标和列下标及最大值。
【输入输出样例】

img

【样例说明】
输入提示符中冒号为英文符号,后面无空格,需换行。
输出矩阵时整数按照%4d格式输出。
最后输出结束不换行
/将一个32的矩阵的矩列存入二维数组*/
#include
#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
scanf("%d",&b[k]);
printf("\n");//输入六个数字
max=b[0];
for(k=1;k
if(b[k]>max)max=b[k];//取最大值
k=0;//k恢复从头开始
for(i=0;i
for(j=0;j
a[i][j]=b[k];
printf("%4d",a[i][j]);
k++;}
}//存入矩阵
for(i=0;i
for(j=0;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
#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;

第1题修改如下,供参考:

#include <stdio.h>
#define N 3
#define M 2
#define K 6
int main()
{
    int a[N][M];
    //int b[K];
    int max, max_i, max_j, i, j;
    printf("Enter 6 integers:\n");
    for (i = 0; i < N; i++)
        for (j = 0; j < M; j++)
            scanf("%d", &a[i][j]); //输入矩阵

    //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恢复从头开始

    max = a[0][0]; max_i = 0; max_j = 0; 
    for (i = 0; i < N; i++) {    //输出矩阵 并找到最大值
        for (j = 0; j < M; j++) {
            printf("%4d", a[i][j]);
            if (max < a[i][j]) {
                max = a[i][j];
                max_i = i;    //记录行号
                max_j = j;    //记录列号
            }
        }
        printf("\n");
    }
    //for (i = 0; i < N; i++) {
    //    for (j = 0; j < M; j++)
    //        if (a[i][j] == max)
    printf("max=a[%d][%d]=%d", max_i, max_j, a[max_i][max_j]); //break;//矩阵中等于最大值时输出
    //}
    return 0;
}

第2题改动处见注释,供参考:

#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 {   //第5列换行
                printf("\n");  //修改 输出换行
                l = 0; 
                h++; 
            }
        }
    }
    return 0;
}