18.2

来源:互联网 发布:万游传奇数据库编辑器 编辑:程序博客网 时间:2024/06/17 02:11
 

18周任务2

(2011-12-22 15:42:06)[编辑][删除]
转载
标签:

杂谈

 

实验目的:学会二维数组的操作
实验内容:二维数组的操作

* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:                            
* 作    者:                  
* 完成日期:  2011 年 12 月 22 日
* 版本号:        

* 对任务及求解方法的描述部分
* 输入描述:由程序产生随机数作为初始值
* 问题描述:……
* 程序输出:……
* 程序头部的注释结束
18周任务2

#include  <iostream>
#include <time.h>
#include <iomanip>
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(NULL));//需要用当前时间作"种子",以便每次运行取得的序列不同
 for(i=0;i<8;i++)
  for(j=0;j<8;j++)
   a[i][j]=rand()P+1;
  return;
}

void out(int a[8][8])
{
 
 for(int i=0;i<8;i++)
 {
 
  for(int j=0;j<8;j++)
  {
   cout<<setiosflags(ios::left)<<setw(8)<<a[i][j]<<" ";
  }
  cout<<endl;
 }
 
 

}

void outDiagonal(int a[8][8])
{
  for(int i=0;i<8;i++)
  {
   cout<<a[i][i]<<" ";
  }
  cout<<endl;
  for(i=0;i<8;i++)
  {
   cout<<a[i][7-i]<<" ";
  }
  cout<<endl;
  return ;

}

void mine(int a[8][8],int x, int y)
{
 int sum=0,i,j;
 if((x>=0&&x<8)&&(y>=0&&x<8))//不能用while,否则陷入循环。//注意if,while的区别
 {
  for(i=x-1,j=y-1;j<y+2;j++)
  {
   cout<<a[i][j]<<" ";
   sum=sum+a[i][j];
  }
  for(i=i+1,j=y-1;j<y+2;j=j+2)
  {
   cout<<a[i][j]<<" ";
   sum=sum+a[i][j];
  }
  
  for(i=i+1,j=y-1;j<y+2;j++)
  {
   cout<<a[i][j]<<" ";
   sum=sum+a[i][j];
  }
  cout<<endl;
     cout <<"各数之和:"<<sum<<endl;
 }
 
 else if(x==0&&y==0)
 {
  cout<<a[0][1]<<a[1][1]<<a[1][0];
 }
    else if (x==0&&0<y<7)
 {
  cout<<a[0][y-1]<<a[0][y+1]<<a[1][y+1]<<a[1][y]<<a[1][y-1];
 }
 else if (x==0&&y==7)
 {
 
 cout<<a[0][6]<<a[1][6]<<a[1][7];
 }
 else if(0<x<7&&y==7)
 {
  cout<<a[x-1][7]<<a[x-1][6]<<a[x][y-1]<<a[x+1][y-1]<<a[x+1][7];
 }
 else if (x==7&&y==7)
 {
 cout<<a[6][7]<<a[6][6]<<a[7][6];
 }
 else if(x==7&&0<y<7)
 {
  cout<<a[7][y-1]<<a[6][y-1]<<a[6][y]<<a[6][y+1]<<a[7][y+1];
 }
 else if(x==7&&y==0)
 {
  cout<<a[6][0]<<a[6][1]<<a[7][1];
 }
 else if (0<x<7&&y==0)
 {
  cout<<a[x-1][0]<<a[x-1][1]<<a[x][1]<<a[x-1][1]<<a[x+1][0];
 }
 

}

void change(int a[8][8])
{
   

 
 for( int j=0;j<8;j++)
 {
  cout<<a[0][j];
 }


 for( int i=1;i<8;i++)
 {
  for(int j=0;j<7;j++)
  {
   a[i][j]=a[i-1][j]+a[i-1][j+1];
    //cout<<a[i][j]<<" ";
  }
  if(j=7)//可以用for,但必须加break'
  {
   a[i][j]=a[i-1][j]+a[i-1][0];
   cout<<a[i][j]<<" ";
  }
 }
 return ;
}
感言:1:对于图中出现的不规则的数,不知哪来的。上次就出现过,在别的电脑上就行, 在这台上就不行。

2:还是不熟啊,还得看课本。

3:学过的知识要会用,如break。

4:"//"hou mian yi jing gei chu .