扫雷

来源:互联网 发布:linux samba 添加用户 编辑:程序博客网 时间:2024/05/02 02:09
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:曹昕卓*完成日期:2013年 12月12日*版本号: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);//按“扫雷”游戏的规则输出相邻格子void change(int a[8][8]); //按要求改变数值int main(){    int a[8][8],x,y;    setdata(a);    out(a);    outDiagonal(a);    cout<<"输入一个位置:";    cin>>x>>y;    mine(a,x,y);    change(a);    out(a);    return 0;}void setdata(int a[8][8]){    int i,j;    srand(time(0));//需要用当前时间作“种子”,以便每次运行取得的序列不同    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]){    cout<<"按行序优先输出数组:\n";    int i,n;    for(i=0; i<8; i++)    {        for(n=0; n<8; n++)        {            cout<<a[i][n]<<'\t';        }        cout<<endl;    }    return;}//输出对角线元素的值(从左上到右下、从右上到左下)void outDiagonal(int a[8][8]){    int i,n;    cout<<"从左上到右下:";    for(i=0; i<8; i++)    {        cout<<a[i][i]<<'\t';    }    cout<<endl;    cout<<"从右上到左下:";    for(n=7; n>=0; n--)    {        cout<<a[7-n][n]<<'\t';    }    cout<<endl;    return;}//按扫雷游戏规则,输出a[x][y]周围的8个数字void mine(int a[8][8],int x, int y){    int i,n;    cout<<"输出a["<<x<<"]["<<y<<"]周围的8个数字:";    for(i=x-1; i<=x+1; i++)    {        for(n=y-1; n<=y+1; n++)            if(i>=0&&i<=7&&n>=0&&n<=7)            {                if(i!=x&&n!=y)                {                    cout<<a[i][n]<<'\t';                }            }    }    cout<<endl;    return;}//按题目中所言规则更改元素的值void change(int a[8][8]){    int i,n;    for(i=1; i<8; i++)    {        for(n=0; n<8; n++)        {            if(n==7)            {                a[i][n]=a[i-1][n]+a[i-1][0];            }            else            {                a[i][n]=a[i-1][n]+a[i-1][n+1];            }        }    }    return;}


 

成果展示:

0 0