Saton. 2022-11-01 23:58 采纳率: 75%
浏览 35
已结题

插班生求位置,怎么到最后错了…

#include<stdio.h>
int main()
{
int n,i,j,t,k=0,h;
int a1[5][4];
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
printf("输入原有小朋友身高:");
scanf("%d",&a1[i][j]);
}
}
int a2[20];
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
a2[k]=a1[i][j];
k++;
}
}
//二维换一维数组
for(i=0;i<20-1;i++)
{
for(j=0;j<20-i-1;j++)
{
if(a2[j]>a2[j+1])
{
t=a2[j];
a2[j]=a2[j+1];
a2[j+1]=t;
}
}
}
int a3[6][4];
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
a3[i][j]=a2[i*4+j];
}
}
//一位换二维
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a3[i][j]);
}
printf("\n");
}
//输入插班生
printf("输入插班生:");
scanf("%d",&h);
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(a3[i][j]>=h)
break;
}
}
if(i==5)
printf("6行1列");
else if(i<5)
printf("%d行%d列",i+1,j+1);

}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-11-02 11:16
    关注

    改动处见注释,供参考:

    #include<stdio.h>
    int main()
    {
        int n, i, j, t, k = 0, h;
        int a1[5][4];
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 4; j++)
            {
                printf("输入原有小朋友身高:");
                scanf("%d", &a1[i][j]);
            }
        }
        int a2[20];
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 4; j++)
            {
                a2[k] = a1[i][j];
                k++;
            }
        }
        //二维换一维数组
        for (i = 0; i < 20 - 1; i++)
        {
            for (j = 0; j < 20 - i - 1; j++)
            {
                if (a2[j] > a2[j + 1])
                {
                    t = a2[j];
                    a2[j] = a2[j + 1];
                    a2[j + 1] = t;
                }
            }
        }
        int a3[6][4];
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 4; j++)
            {
                a3[i][j] = a2[i * 4 + j];
            }
        }
        //一维换二维
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 4; j++)
            {
                printf("%d ", a3[i][j]);
            }
            printf("\n");
        }
        //输入插班生
        printf("输入插班生:");
        scanf("%d", &h);
        k = 0;        //修改
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 4; j++)
            {
                if (a3[i][j] >= h) 
                {           //修改
                    k = 1;  //修改
                    break;  
                }           //修改
            }
            if (k) break;   //修改
        }
        if (i == 5)
            printf("6行1列");
        else if (i < 5)
            printf("%d行%d列", i + 1, j + 1);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 数据库原理及应用(相关搜索:数据类型)
  • ¥100 解决数据不连续出现问题
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误