ccccc只有一个名字 2022-10-17 23:54 采纳率: 87.5%
浏览 123
已结题

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

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

img

【样例说明】
输入提示符中冒号为英文符号,后面无空格,需换行。
输出矩阵时整数按照%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;

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-10-18 09:22
    关注

    第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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分