第18周报告2:二维数组

来源:互联网 发布:天池大数据竞赛 肺癌 编辑:程序博客网 时间:2024/05/22 15:26
实验目的:学会二维数组的操作实验内容:二维数组的操作* 程序头部注释开始* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生* Copyright (c) 2011, 烟台大学计算机学院学生* All rights reserved.* 文件名称:学会二维数组的操作                            * 作    者:薛广晨                         * 完成日期:2011 年 12 月 22 日* 版 本号:x1.0        * 对任务及求解方法的描述部分* 输入描述:由程序产生随机数作为初始值* 问题描述:……* 程序输出:……* 程序头部的注释结束#include  <iostream>#include"iomanip"#include <time.h>using namespace std;void setdata(int a[8][8]);  //设置随机数void out(int a[8][8],int num);  //输出数组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,0);  outDiagonal(a);    cout<<"输入一个位置:"; cin>>x>>y; mine(a,x,y); change(a); out(a,1); 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],int num){ int i, j; if(num=0) {  cout<<"┌─┬─┬─┬─┬─┬─┬─┬─┐"<<endl;     for(i=0; i<8; i++)  {   for(j=0; j<8; j++)   {    cout<<"│"<<setiosflags(ios::left)<<setw(2)<<a[i][j];                cout<<"│";   }      cout<<endl;            if(i==7)    cout<<"└─┴─┴─┴─┴─┴─┴─┴─┘"<<endl;            else                cout<<"├─┼─┼─┼─┼─┼─┼─┼─┤"<<endl;  } } else {  cout<<"┌──┬──┬──┬──┬──┬──┬──┬──┐"<<endl;        for(i=0;i<8;i++)  {   for(j=0;j<8;j++)            cout<<"│"<<setiosflags(ios::left)<<setw(4)<<a[i][j];            cout<<"│";            cout<<endl;            if(i==7)    cout<<"└──┴──┴──┴──┴──┴──┴──┴──┘"<<endl;            else            cout<<"├──┼──┼──┼──┼──┼──┼──┼──┤"<<endl;  } }} void outDiagonal(int a[8][8]){ int i; cout<<"输出从左上到右下对角线上的元素的值:"<<endl; for( i=0; i<8; i++) {  cout<<setw(4)<<a[i][i]; }    cout<<endl;    cout<<"输出从右上到左下对角线上的元素的值:"<<endl;    for( i=0;i<8;i++) {  cout<<setw(4)<<a[i][7-i]; }        cout<<endl;}void mine(int a[8][8],int x, int y){ int add=0;    for(int i=-1;i<=1;i++)  for(int j=-1;j<=1;j++)  {   if(x!=x+i||y!=y+j)    if((x+i>=0)&&(y+j>=0))                   if((x+i<=7)&&(y+j<=7))       {             cout<<setw(4)<<a[x+i][y+j];                       add+=a[x+i][y+j];       }  }        cout<<endl;        cout<<"它们的和为:"<<add<<"。"<<endl;}void change(int a[8][8]){ for(int i=1;i<8;i++)  for(int j=0;j<8;j++)   a[i][j]=a[i-1][j]+a[i-1][(j+1)%8]; }
运行结果:(贴图)

经验积累:好好的敲,以免出错,认真一些就可以避免很多错误。


上机感言:借用了一下王兴峰的mine函数,太高明啦,佩服啊。


原创粉丝点击