阿彻! 2020-01-17 09:03 采纳率: 100%
浏览 593
已采纳

++i和i++和i=i+1在比较中的区别,代码题

在练习的时候遇到了这样一个问题,求教!

蛇形填数问题,

其中while循环中的最后一条while语句,**while(y+1<n && !a[x][y+1])**
如果改成while(**y++**<n && !a[x][y+1])或者while(**++y**<n && !a[x][y+1]);
就不会得到正确的蛇形填数结果,
错误结果如下
图片说明

正确结果如下

图片说明

#include <iostream>
#include <string.h>
int main(int argc, char** argv) {
    int n;n=7;int a[n][n];memset(a,0,sizeof(a));
    int step=1;
    int x=0;int y=n-1;
    a[0][y]=1;
    while(step<n*n){
        while(x+1<n  && !a[x+1][y]) a[++x][y]=++step;
        while(y-1>=0 && !a[x][y-1]) a[x][--y]=++step;
        while(x-1>=0 && !a[x-1][y]) a[--x][y]=++step;
        while(y+1<n  && !a[x][y+1]) a[x][++y]=++step;
    }
    for(x=0;x<n;x++){
        for(y=0;y<n;y++){
            printf("%4d",a[x][y]);
        }
        printf("\n");
    }
    return 0;
}

求解!

  • 写回答

1条回答

  • 邱知 2020-01-17 09:29
    关注

    while(y+1<n && !a[x][y+1]),该语句中y的值没有改变;
    如果改成while(**y++** 则表示y++ while(**++y** 则表示++y while(x+1 while(y-1>=0 && !a[x][y-1]) a[x][--y]=++step;
    while(x-1>=0 && !a[x-1][y]) a[--x][y]=++step;
    while(y+1 可改为
    while(++x while(--y>=0 && !a[x][y]) a[x][y]=++step;
    while(--x>=0 && !a[x][y]) a[x][y]=++step;
    while(++y<n && !a[x][y]) a[x][y]=++step;

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

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料