第14周上机实践项目5——体会棋盘游戏中的数据存储(2)

来源:互联网 发布:cf卡数据恢复软件 mac 编辑:程序博客网 时间:2024/05/18 01:42

问题及代码

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:辛彬 * 完成日期:2014年 12 月 1 日 * 版 本 号:v1.0 * * 问题描述: 按行输出随机二位数组的数据,并求出对角线的数据,按“扫雷”游戏的规则输出相邻格子。 * 输入描述:没有输入。 * 程序输出:随机二位数组的数据,对角线的数据; */#include  <iostream>#include <ctime>#include <cstdlib>using namespace std;void setdata(int a[8][8]);  //设置随机数void out(int a[8][8]);//输出数组void outDiagonal(int a[8][8]);  //输出对角线元素的值void mine(int a[8][8],int x, int y);//按“扫雷”游戏的规则输出相邻格子int main(){    int a[8][8],x,y;    setdata(a);    out(a);    outDiagonal(a);    cout<<"输入一个位置:";    cin>>x>>y;    mine(a,x,y);    return 0;}void setdata(int a[8][8]){    int i,j;    srand(time(NULL));//需要用当前时间作“种子”,以便每次运行取得的序列不同    for(i=0; i<8; i++)        for(j=0; j<8; j++)            a[i][j]=rand()%50+1;    return;}//按行序优先输出数组void out(int a[8][8]){    int x,y;    for(x=0; x<8; x++)    {        for(y=0; y<8; y++)        {            cout<<a[x][y]<<" ";            if(a[x][y]<10)                cout<<" ";        }        cout<<endl;    }}//输出对角线元素的值(从左上到右下、从右上到左下)void outDiagonal(int a[8][8]){    int x,y;    cout<<"对角线元素的值分别为:"<<endl;    for(x=0,y=0; x<8; x++,y++)        cout<<a[x][y]<<" ";    cout<<endl;    for(x=0,y=7; x<8; x++,y--)        cout<<a[x][y]<<" ";}//按扫雷游戏规则,输出a[x][y]周围的8个数字void mine(int a[8][8],int x, int y){    int i,j,sum=0;    cout<<"点"<<x<<","<<y<<"周围的数是:";    for(i=x-1;i<=x+1;i++)        for(j=y-1;j<=y+1;j++)        if(i>=0&&j>=0&&i<=7&&j<=7&&!(i==x&&j==y))    {cout<<a[i][j]<<" ";    sum+=a[i][j];}    cout<<endl;    cout<<"它们的和为:"<<sum;}

运行结果:

学习感悟:一开始想用大量if语句排除超出范围的数据,但觉得很麻烦,参考了贺老师的代码后才发现可以只用一个if语句屏蔽,我还是经验不够。

0 0
原创粉丝点击