str_painkiller 2021-11-24 20:25 采纳率: 100%
浏览 25
已结题

学校的C++数组实验题,为什么达不到要求呢?

问题:【要求】(1)定义一个函数int PutWall(int a[ ] [4], int b[ ], int m, int n),将二维数组a的第0行、第m-1行、第0列和第n-1列元素(好像一圈围墙)中的每个元素用b数组中的元素依次替换,从a[0][0]开始按顺时针顺序复制。同时对替换的元素值求和,将计算结果返回。函数中要求使用尽可能少的循环语句和赋值语句。
(2)主函数建立整型的二维数组dm[4][4]和一维数组pa。将二维数组dm的全部元素置1。在一维数组pa中存入12个整数:
1,3,5,7,10,20,2,4,6,8, 30,40 并输出至屏幕。
(3)调用函数PutWall ( )进行元素复制和计算,输出返回结果。
(4)返回后将数组dm中的数据以方阵形式输出至屏幕。
我的代码:

#include<iostream>
using namespace std;
void PutWall(int a[] [4], int b[], int m )
{
    int i=0,j;
    for(j=0;j<4;j++)
    {
        
      a[0][j]=b[i];i++;
    }
    
    for(j=0;j<m-1;j++)
        
        
            {a[j][3]=b[i+3];i++;
    }
    for(j=3;j>=0;j--)
        
    
        {a[m-1][j]=b[i+m+3];i++;

        }
        for(j=m-1;j>0;j--)
        {
        a[0][j]=b[i+m+6];
        i++;}
}
int main()
{
    int a[4][4]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},b[12]={1,3,5,7,10,20,2,4,6,8,30,40};
    int i,j;
    PutWall(a,b,4);
        for(i=0;i< 4;i++)
            {for(j=0;j<4;j++)
            cout<< a[i][j]<<'\t';
        cout<<endl;}
        getchar();
        getchar();
        }


  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-24 20:27
    关注

    for(j=0;j<m-1;j++)
    {a[j][3]=b[i+3];i++;
    这个循环中,第一个a[0][3]已经在上一个for循环中赋过值了,你重复赋值了。
    另外应该继续是b[i],而不是b[i+3],因为i一直在自增

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 Fluent udf 编写问题
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突