今天看视频做了一个扫雷游戏,但是打印出来的数组信息有些问题如下图:
但是调试出的类容没问题但是打印的内容却完全不符
调试二维数组的图:
最终效果如下图:
完整代码如下(出错地方已用注释标识出来):
但是调试出的类容没问题但是打印的内容却完全不符
调试二维数组的图:
最终效果如下图:
完整代码如下(出错地方已用注释标识出来):
// HelloWorld.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char* argv[]) { //定义雷的个数 int numBomb=-1; //创建随机种子,根据时间的不同随机数字也不同 srand(time(0)); //最多5颗地雷 numBomb=rand()%5+1; //产生5颗雷的位置 //每组有x,y两个元素值 int arrayPos[5][2]={0}; //随机产生雷的位置 for(int i=0;i<numBomb;i++) { int xPos=rand()%5+1; int yPos=rand()%5+1; //假如有雷的位置重合,放弃此次操作,重新产生一颗 for(int j=0;j<5;j++) { if(xPos==arrayPos[j][0]&& yPos==arrayPos[j][1]) { i--; continue; } } arrayPos[i][0]=xPos; arrayPos[i][1]=yPos; } //地图数组 int arrayMap[7][7]={0}; //雷的布局数组 int arrayBomb[7][7]={0}; for(i=0;i<numBomb;i++){ int xPos=arrayPos[i][0]; int yPos=arrayPos[i][1]; arrayBomb[xPos][yPos]=1; arrayMap[xPos][yPos]=-1; } i=1; for( ;i<6;i++) { for(int j=1;j<6;j++) { if(arrayMap[i][j]==-1) { continue; } arrayMap[i][j]= arrayBomb[i][j-1]+ arrayBomb[i+1][j+1]+ arrayBomb[i+1][j]+ arrayBomb[i+1][j-1]+ arrayBomb[i][j+1]+ arrayBomb[i-1][j-1]+ arrayBomb[i-1][j]+ arrayBomb[i-1][j+1]; } } int isExit=0; int arrayMask[7][7]={0}; while(isExit==0) { /************************************** *************有问题的地方************* ***************************************/ for(int i=1;i<6;i++) { int j=1; for(;j<6;j++) { //if(arrayMask[i][j]==1) // { printf("%d\t",&arrayMap[i][j]); // }else // { // printf("*"); // } } printf("\n"); } /************************************** *************有问题的地方************* ***************************************/ int choise=-1; printf("数组数字:1:雷,2:空地,3:退出游戏\n"); scanf("%d",&choise); if(choise==3){ isExit=1; continue; } int xPos=-1; int yPos=-1; printf("请输入坐标:x,y\n"); scanf("%d%d",&xPos,&yPos); if(arrayMap[xPos][yPos]==-1&&choise==2){ // printf("你中雷了,游戏结束\n"); for(int i=0;i<7;i++) { for(int j=0;j<7;j++) { printf("%3d",arrayMap[i][j]); } printf("\n"); } isExit=1; } arrayMask[xPos][yPos]=1; } return 0; }
解决方案
80
printf(“%d\t”, &arrayMap[i][j]);你这句,多加了&吧?
对数组元素取地址,然后%d打印,打印出来的是地址
对数组元素取地址,然后%d打印,打印出来的是地址