2013级C++第15周项目——二维数组

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759

【项目1-折腾二维数组】创建一个长度为5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后通过键盘输入,使后两列的10个元素获得值,将所有元素值乘以3后保存在数组中。输出数组时,按行序优先输出,再按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”),再将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出),再输出数组中的所有偶数,以及行列下标之和为3的倍数的元素值。
     提示:编程时,可以做一点,调一点,全写好再改会自讨苦吃。

  同时也给出参考的运行界面:

  
     报告模板及部分代码

/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: array.cpp                           * 作    者:                            * 完成日期:  年  月   日* 版本号: v1.0      * 输入描述:无* 问题描述:定义二维数组,为数组赋初值、输入值、更改值、按各种方法输出*/#include <iostream>using namespace std;int main( )int i,j;    //创建5行4列的二维整型数组,为数组中的前两列的10个元素赋初值 int a[5][4]={{0,1},{4,5},{8,9},{12,13},{16,17}};  //键盘输入使后两列10个元素的值 cout<<"请输入10个整数:"<<endl//按行序优先输出 cout<<"数组中的值为:"<<endl;  //将所有元素值乘以3后保存在数组中 cout<<"现在将所有元素乘以3倍...";  //按行序优先输出 cout<<"行序优先输出:"<<endl;   //按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”) cout<<"列序优先输出:"<<endl;  //将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出) cout<<"倒着输出:"<<endl//输出数组中的所有偶数 cout<<"数组中的偶数:"<<endl;  //输出所有行列下标之和为3的倍数的元素值 cout<<"行列下标之和为3的倍数的元素:"<<endlreturn 0;}

补充:为了督促同学们学会与习惯使用单步调试工具,要求在报告中加一张图,图示在单步执行时,看到的数组a中各行各列的值。


【项目2-杨辉三角】编写程序,打印出以下形式的扬辉三角形。
1
1    1
1    2   1
1    3    3    1
1    4   6    4    1
1    5   10   10   5    1
1    6   15   20   15   6   1
  可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如果需打印7行杨辉三角形,应该定义等于或大于7X7的方形矩阵,只是矩阵的上半部和其余部分并不使用。杨辉三角形具有如下特点:(1)第0列和对角线上的元素都为1。(2)除第0列和对角线上的元素以外,其它元素的值均为前一行上的同列元素和前一列元素之和。
  函数setdata按以上规律给数组元素置数,函数outdata输出杨辉三角形。

#include <iostream>  using namespace stdint main()  {    int a[7][7]={0};    setdata(a); //给数组赋值    outdata(a); //输出数组    return 0;}  void setdata(int a[7][7])  {  }  void outdata(int a[7][7])  {   }  

【项目3-带姓名的成绩单】设score数组中存储同学们的C++成绩,增加一个数组string name[20]并赋初值,表示同学们的姓名。这两个数组中,同学的姓名与成绩的下标保持一致(例如name[1]和score[1]表示同一位同学的姓名和C++成绩)。请(1)输出按成绩排序后的同学的名单;(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。提示:排序中交换score中的元素时,只要同时也交换name中的相应元素,就可以实现姓名和成绩的同步(如果交换成绩而不交换姓名,两者的对应关系就被破坏了。)



【项目4-多科成绩单】用二维数组score[][4]保存同学们的高数、英语、C++成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号)。在此基础上,完成下面的操作:
(1)设计输入成绩的函数,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(2)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
(3)输出考得总分最高、最低同学的人数及对应的学号。
要求:学生人数num在main()函数中输入,score[][4]数组也是main()函数的局部变量,最好将其他功能也设计成函数,使main()函数尽可能地简单。
【项目4扩展(选做)-带姓名的多科成绩单】增加用数组string name[]表示同学们的姓名,使姓名与成绩的下标保持一致(例如name[1]和score[1][0]、score[1][1]、score[1][2]和score[1][3]表示同一位同学的数据)。据此,将项目4中的第(3)项任务改为输出总分最高的同学的姓名。


【项目5-电子词典】:做一个简单的电子词典。在文件dictionary.txt中(本文后附了一部分(b打头的词)作为调试,校内同学到我的BB教学平台中找,校外人士感兴趣的告知我Email),保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如下图:
      
  提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。


【项目6-体会棋盘游戏中的数据存储】
  定义一个8行8列的二维数组a[8][8]。
  

  (1)为二维数组中的数据赋50以内的随机数(程序模板中setdata()函数已经完成,利用产生随机数的系统函数实现),可能的取值如上图所示;
  (2)设计函数out()按行输出二维数组中的数据;
  (3)设计函数outDiagonal()输出从左上到右下对角线上的元素的值,如对图的数据而言,输出为48 34 12 31 40 42 34 45;再输出从右上到左下对角线上的值;
  (4)将此数组视为“扫雷”游戏的界面(实际上扫雷游戏的界面一般就用二维数组保存其界面),通过键盘输入一个位置,输出其周围八个格子中的数据,如输入2 2时,输出34 30 47 29 48 14 12 31(注意:一共八个,不包括该位置上的数)(参见图中的黄色部分),计算这些数的和并输出。另外,如果选择的位置在边缘或角上时,周围的格数不够八个,按实际个数输出。请用循环有规律地列举出来各个值,不要采用顺序结构逐个罗列。这项功能由函数mine()完成。
  (5)设计函数change()改变数组中的值。改变的规则是:从第2行(即a[1]行)开始到最后一行,每一元素是其正上方元素和右上方元素之和,例如a[1][0]取a[0][0]和a[0][1]之和,a[1][1]取a[0][1]和a[0][2]之和,……。对各行最后一列元素,其右上方无数据,取上一行中的第一个元素,如a[1][7]取a[0][7]和a[0][0]之和。对上图中的数据,a[1]行的  元素将依次为:50 27 41 30 33 63 60 64,a[2]行依次为77 68…114。
程序模板:

#include  <iostream>#include <time.h>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()%50+1;  return;}//按行序优先输出数组void out(int a[8][8]){}//输出对角线元素的值(从左上到右下、从右上到左下)void outDiagonal(int a[8][8]){}//按扫雷游戏规则,输出a[x][y]周围的8个数字void mine(int a[8][8],int x, int y){}//按题目中所言规则更改元素的值void change(int a[8][8]){}

【拓展-二维数组更多用处】这部分可以不去选择实践,看看、想想即可。
  中国象棋的棋盘也可以采用二维数组存储。
  (1)下棋程序需要体现相关的规则,例如,马走日。通过键盘输入一个位置,输出按“日”字型可以走到的所有位置,及其位置上的数值。例如,在项目6的图中,输入2 2时,输出(0,1,2)(0,3,16) (1,0,9) (1,4,12)……(项目6图中的背景有斜线的部分。可走到的位置一般为八个,位置在边缘或角上时,可能不够八个,按实际输出)。
  (2)马走日还有“别马腿”的规则。在任务4的图中,如果马腿位置上的数大于25,认为马腿被别了(实际游戏中,以该位置是否有棋子进行判断)。请在(1)的基础上考虑这一规则,只输出所有能走到的位置及数值。
  俄罗斯方块中的每一个小方块也用二维数组(一般4*4或8*8)表示,单色游戏数组元素用0、1即可,彩色的取值不限于0、1。对小方块的基本操作包括左旋、右旋、反转等操作。请针对上面的二维数组,实现左旋、右旋、反转等操作。
  JPEG是数字图像存储的国际标准。在JPEG编码规则中,其编码的基本单位是8*8的图像“块”,其中有一个环节叫“Z字型编码”,也即将一个8*8的“块”中数据按如图所示的方向取出,形成一个1*64的向量(可以保存在一个一维数组中)。请输出前面的8*8的数据块对应的向量。

  
  《线性代数》是工程数学的重要组成,在大二时开设,其中将涉及大量矩阵的运算,用于解决工程中的问题。在编程实现矩阵操作时,就是二维数组的操作。



==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======




附:部分词典,复制到词本中自建文件

b.c. (缩)公元前
b/l n.(缩)提单
baby n.婴儿,年龄最小的人
baby-sit v.(替人)看护小孩
baby-sitter n.看护小孩的人
bachelor n.单身汉,学士
back n.背;adj.背后的
backbone n.脊梁骨
backdate v.回溯
background n.背景,经历
backing n.倒退,支持物
backlog n.未交付的订货
backward adv.向后,逆
backwardness n.落后(状态)
bacon n.咸肉,熏肉
bacterium n.细菌
bad adj.坏的,低劣的
badge n.徽章
badly adv.坏,非常,严重地
badminton n.羽毛球
baffle v.困扰,难倒
bag n.袋子,提包
baggage n.行李
baggy adj.袋状的
bait n.饵,诱饵
bake v.烤,烘
baker n.面包师
bakery n.面包店
balance n.平衡,天平,余额
balcony n.阳台
bald adj.秃的
ball n.球,球状物,舞会
ballet n.芭蕾舞
balloon n.气球
ballooning n.热气球飞行运动
ball-point pen;n.圆珠笔
ballroom n.舞厅
bamboo n.竹
bamboo-shoot n.竹笋
banana n.香蕉
band n.乐队,带子;v.联合
bandage n.绷带
bandit n.盗匪,歹徒
bang n.,v.砰的一响
bank n.岸,银行
banker n.银行家
banking n.银行业务、金融业
bankrupt n.,v.,adj.破产
banner n.旗帜,横幅
banquet n.宴会
bar n.棒,杆,酒吧
barber n.理发师
bare adj.裸的,直率的
barely adv.赤裸裸地
bargain n.交易,便宜货
barge n.驳船
bark n.狗吠,树皮;v.吠
barn n.谷仓,牲口棚
barometer n.晴雨表,标记
baron n.男爵
baroness n.男爵夫人,女男爵
barrel n.桶,枪(炮)管
barren adj.不育的,贫瘠的
barrier n.障碍,壁垒
barter n.易货贸易
base n.基础,基地;v.基于
baseball n.棒球
basement n.地下室,地窖
basic adj.基本的,基础的
basically adv.基本上,主要地
basin n.盆,盆地
basis n.基础,根据
basket n.篮子,筐
basketball n.篮球
bat n.球拍,蝙蝠;v.击打
bath n.洗澡,浴室
bathe v.洗澡,冲洗
bathroom n.浴室,洗手间
batter v.打击
battery n.电池
battle n.战斗,战役
bay n.海湾,湾
bazaar n.集市
be v.是,存在
beach n.海滩,湖滨
bead n.有孔小珠
beak n.鸟嘴
beam n.梁,射线;v.发光
bean n.豆子
bear v.负担,忍受,生育
bearing n.举止,意义,轴承
bearish adj.熊市的
beast n.野兽,牲畜
beat v.打,击败;n.击打
beautiful adj.美丽的,绝妙的
beauty n.美,美女
because conj.因为,由于
become v.变成
bed n.床,河床,苗圃
bedroom n.卧室
bee n.蜜蜂
beef n.牛肉
beer n.啤酒
beetle n.甲虫
before prep.在...前面
beforehand adv.事先,预先
beg v.乞讨,恳求
beggar n.乞丐
begin v.开始,着手进行
beginner n.初学者
beginning n.开端,起点
behalf n.代表
behave v.行为,举动
behavior n.行为,举止
behind prep.在...后面
behindhand adj.落后,事后
being n.生物,存在
belief n.信仰,信心
believe v.相信,认为
bell n.钟,铃
belly n.肚子
belong v.属于
beloved adj.敬爱的;n.爱人
below adj.,prep.在...下面
belt n.带,腰带
bench n.长凳,工作台
bend v.弯曲,俯身;n.拐弯
beneath prep.在...之下
beneficial adj.有益的,有利的
beneficiary n.受益者
benefit n.益处,利益
benevolence n.慈悲,捐助
benevolent adj.乐善好施的
bent adj.弯曲的
berry n.浆果
beside prep.在...之旁
besides adj.而且;prep...之外
best adj.最好的
bestow v.赠给,授予
best-seller n.畅销书(货)
best-selling adj.畅销的
bet n.,v.打赌
betray v.背叛,泄露
betrayal n.背叛,暴露
better adj.更好的;adv.较好
better-off adj.经济情况较好的
between prep.在两者之间
beverage n.饮料
beware v.当心
bewilder v.迷惑,茫然
beyond prep.在...那边,超出
bias n.偏好
bible n.圣经
bicycle n.自行车
bid n.,v.报价,投标
bidding n.投标
big adj.大的,重大的
bike n.自行车
bill n.帐单,议案,钞票
billion n.十亿
bind v.捆绑,约束
binding n.装订
biographer n.传记记者
biography n.传记
biologist n.生物学家
biology n.生物学
bird n.鸟
birth n.出生,创始
birthday n.生日,诞辰
birthplace n.出生地
biscuit n.饼干
bishop n.主教
bit n.小片,一点
bite n.,v.咬,叮;n.一口
bitter adj.苦的,痛苦的
bitterly adv.惨痛地,辛酸地
bitterness n.苦味,苦难
black adj.黑的;n.黑色
blackboard n.黑板
blacksmith n.铁匠
blade n.刀刃,叶片
blame v.责备;n.过失
blank adj.空白的;n.空格
blanket n.毛毯
blast n.阵风;v.爆炸
blaze n.火光,光亮
bleach v.漂白,变白
bleed v.出血,流血
blend v.混合,掺混
bless v.保佑,祝福
blessing n.祝福
blind adj.瞎的;v.使失明
blink adj.眨眼,闪烁
block n.大块,街区,障碍物
blockage n.封锁
blond adj.金发的
blood n.血,血统
bloody adj.流血的,残忍的
bloom n.花;v.开花
blossom n.(果树的)花
blot n.污迹
blouse n.女衫
blow v.吹,吹掉,刮风
blue adj.蓝色的,忧郁的
blunder n.大错
blunt adj.钝的,生硬的
blush v.脸红,害臊
blushy adj.害羞的
board n.木板,伙食,董事会
boarding n.伙食
boast v.夸口,以...而自豪
boat n.小船,艇
body n.身体,尸体,团体
bodyguard n.保镖
boil v.沸腾,煮沸
boiler n.锅炉
boiling adj.沸腾的
bold adj.大胆的
boldness n.胆略
bolt n.螺检,插销;v.闩门
bomb n.炸弹;v.轰炸
bomber n.轰炸机
bonafide adj.真诚的,无欺的
bond n.束缚,联结,债券
bonded adj.保税的
bone n.骨,骨骼
bonus n.红利
bony adj.骨头的
book n.书;v.预订(票)
bookcase n.书橱
booking adj.定货
booklet n.小册子
bookshelf n.书架
bookstore n.书店
boom v.隆隆响,兴旺,繁荣
booming adj.兴旺的,繁荣的
boost v.抬高,促进
boot n.靴子
booth n.货摊,电话亭
border n.国界,边境
bore v.烦扰,使厌烦,钻孔
boring adj.讨厌的
born adj.出生的,天生的
borrow v.借,借用
borrowings n.借款
bosom n.胸,胸怀
boss n.上司,老板
bossy adj.好发号施令的
both pron.,adj.双方,两
bother v.打扰,麻烦;n.麻烦
bottle n.瓶子
bottle-neck n.影响...的环节
bottom n.底部,末尾
bottom-line n.末行数字,结果
bough n.大树枝
bounce v.跳起;n.跳跃
bound v.缚,以...为界
boundary n.界线,边界
bourgeois n.资产阶级分子
bow v.鞠躬,服从;n.弓
bowl n.碗,钵
bowling n.保龄球
box n.箱,盒;v.拳击
boxer n.拳击运动员
boxing n.拳击
boxing-day n.节礼日
boy n.男孩,小伙子
boycott v.,n.抵制
brace n.支撑;v.激励
bracket n.括号
brag v.吹嘘,夸口
brain n.脑子,头脑,智能
brake n.制动器;v.刹车
brake n.v.刹车
branch n.树枝,分支,分部
brand n.牌子,商标
brandy n.白兰地
brass n.黄铜
brave adj.勇敢的;v.冒着
bravely adv.勇敢地
bravery n.勇敢
brazil n.巴西
brazilian adj.,n.巴西的(人)
breach n.违反(契约)
bread n.面包,生计
bread-earner n.挣钱养家的人
breadth n.宽度,大量
break n.打破,破坏;n.裂口
breakage n.裂口
breakdown n.故障,衰竭
breakfast n.早饭
breakthrough n.突破
breast n.乳房,胸脯
breath n.呼吸,气息
breathe v.呼吸
breed v.繁殖,饲养;n.品种
breeze n.微风
bribe v.贿赂
bribery v.贿赂
brick n.砖
bride n.新娘
bridegroom n.新郎
bridge n.桥梁,桥牌
bridle n.约束;v.抑制
brief adj.简短的
briefing n.简要情况
briefly adv.简单地,简短地
bright adj.明亮的,鲜明的
brighten v.使发光
brightness n.光辉,明亮
brilliance n.辉煌,光彩
brilliant v.辉煌的,杰出的
brim n.边,边缘
bring v.拿来,带来
brink n.边缘
brisk adj.敏捷的,活跃的
bristle n.鬃毛
britain n.不列颠,英国
british adj.英国的,英属的
brittle adj.易碎的,脆的
broad adj.宽的,辽阔的
broadcast v.,n.广播
broadcasting n.广播节目
broaden v.加宽,扩大
brochure n.产品介绍手册
broken adj.破碎的,毁坏了的
broker n.经纪人
bronze n.青铜
brood n.一窝
brook n.小河,溪流
broom n.扫帚
brother n.兄弟,同胞
brotherhood n.兄弟情谊
brother-in-law n.姻兄(弟)
brow n.眉毛,额
brown n.,adj.褐色(的)
bruise n.青肿;v.打伤
brush n.刷子,画笔;v.刷
brutal adj.野蛮的
brute n.禽兽,畜生
bubble n.气泡
bucket n.水桶
bud n.芽,蓓蕾
buddhism n.佛教
buddhist n.佛教徒
budget n.预算
buffalo n.水牛,野牛
buffet n.冷餐
bug n.臭虫,虫子
bugle n.喇叭
build v.建造,建设
builder n.建筑工人,建设者
building n.建筑物,大楼
bulb n.球形物,灯泡
bulk n.体积,大半
bulky adj.庞大的,笨重的
bull n.公牛
bullet n.子弹
bulletin n.公报
bullion n.金块,金条
bullish adj.行情看涨的
bump v.碰,颠簸;n.碰撞
bumpy adj.颠簸不平的
bunch n.一束
bundle n.,v.捆,包
burden n.担子,负担
burdensome adj.沉重的
bureau n.局,司,办公室
bureaucracy n.官僚主义
bureaucratic adj.官僚主义的
burglar n.夜盗,窃贼
burglary n.盗窃
burial n.埋葬
burn v.烧,燃烧,烧伤
burner n.喷灯
burnt adj.烧焦的,烧坏的
burst v.,n.爆炸,破裂
bury v.掩埋,安葬
bus n.公共汽车
bush n.灌木
bushel n.蒲式耳(重量单位)
business n.行业,买卖,商号
businesslike adj.事务式的
busy adj.忙碌的,热闹的
but prep.但是,除了
butcher n.屠夫;v.屠宰
butchery n.肉食店
butt n.根端;v.顶撞
butter n.黄油
butterfly n.蝴蝶
button n.钮扣,按钮
buy v.买,购买
buyer n.购买者
buzz v.嗡嗡叫;n.嗡嗡声
by prep.在...旁边,按照
bygone n.已往的,过时的
bypass n.旁道,分路
by-product n.副产品

  


http://blog.csdn.net/sxhelijian/article/details/11890759


【项目1-折腾二维数组】创建一个长度为5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后通过键盘输入,使后两列的10个元素获得值,将所有元素值乘以3后保存在数组中。输出数组时,按行序优先输出,再按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”),再将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出),再输出数组中的所有偶数,以及行列下标之和为3的倍数的元素值。
     提示:编程时,可以做一点,调一点,全写好再改会自讨苦吃。

  同时也给出参考的运行界面:

  
     报告模板及部分代码

/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: array.cpp                           * 作    者:                            * 完成日期:  年  月   日* 版本号: v1.0      * 输入描述:无* 问题描述:定义二维数组,为数组赋初值、输入值、更改值、按各种方法输出*/#include <iostream>using namespace std;int main( )int i,j;    //创建5行4列的二维整型数组,为数组中的前两列的10个元素赋初值 int a[5][4]={{0,1},{4,5},{8,9},{12,13},{16,17}};  //键盘输入使后两列10个元素的值 cout<<"请输入10个整数:"<<endl//按行序优先输出 cout<<"数组中的值为:"<<endl;  //将所有元素值乘以3后保存在数组中 cout<<"现在将所有元素乘以3倍...";  //按行序优先输出 cout<<"行序优先输出:"<<endl;   //按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”) cout<<"列序优先输出:"<<endl;  //将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出) cout<<"倒着输出:"<<endl//输出数组中的所有偶数 cout<<"数组中的偶数:"<<endl;  //输出所有行列下标之和为3的倍数的元素值 cout<<"行列下标之和为3的倍数的元素:"<<endlreturn 0;}

补充:为了督促同学们学会与习惯使用单步调试工具,要求在报告中加一张图,图示在单步执行时,看到的数组a中各行各列的值。


【项目2-杨辉三角】编写程序,打印出以下形式的扬辉三角形。
1
1    1
1    2   1
1    3    3    1
1    4   6    4    1
1    5   10   10   5    1
1    6   15   20   15   6   1
  可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如果需打印7行杨辉三角形,应该定义等于或大于7X7的方形矩阵,只是矩阵的上半部和其余部分并不使用。杨辉三角形具有如下特点:(1)第0列和对角线上的元素都为1。(2)除第0列和对角线上的元素以外,其它元素的值均为前一行上的同列元素和前一列元素之和。
  函数setdata按以上规律给数组元素置数,函数outdata输出杨辉三角形。

#include <iostream>  using namespace stdint main()  {    int a[7][7]={0};    setdata(a); //给数组赋值    outdata(a); //输出数组    return 0;}  void setdata(int a[7][7])  {  }  void outdata(int a[7][7])  {   }  

【项目3-带姓名的成绩单】设score数组中存储同学们的C++成绩,增加一个数组string name[20]并赋初值,表示同学们的姓名。这两个数组中,同学的姓名与成绩的下标保持一致(例如name[1]和score[1]表示同一位同学的姓名和C++成绩)。请(1)输出按成绩排序后的同学的名单;(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。提示:排序中交换score中的元素时,只要同时也交换name中的相应元素,就可以实现姓名和成绩的同步(如果交换成绩而不交换姓名,两者的对应关系就被破坏了。)



【项目4-多科成绩单】用二维数组score[][4]保存同学们的高数、英语、C++成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号)。在此基础上,完成下面的操作:
(1)设计输入成绩的函数,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(2)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
(3)输出考得总分最高、最低同学的人数及对应的学号。
要求:学生人数num在main()函数中输入,score[][4]数组也是main()函数的局部变量,最好将其他功能也设计成函数,使main()函数尽可能地简单。
【项目4扩展(选做)-带姓名的多科成绩单】增加用数组string name[]表示同学们的姓名,使姓名与成绩的下标保持一致(例如name[1]和score[1][0]、score[1][1]、score[1][2]和score[1][3]表示同一位同学的数据)。据此,将项目4中的第(3)项任务改为输出总分最高的同学的姓名。


【项目5-电子词典】:做一个简单的电子词典。在文件dictionary.txt中(本文后附了一部分(b打头的词)作为调试,校内同学到我的BB教学平台中找,校外人士感兴趣的告知我Email),保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如下图:
      
  提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。


【项目6-体会棋盘游戏中的数据存储】
  定义一个8行8列的二维数组a[8][8]。
  

  (1)为二维数组中的数据赋50以内的随机数(程序模板中setdata()函数已经完成,利用产生随机数的系统函数实现),可能的取值如上图所示;
  (2)设计函数out()按行输出二维数组中的数据;
  (3)设计函数outDiagonal()输出从左上到右下对角线上的元素的值,如对图的数据而言,输出为48 34 12 31 40 42 34 45;再输出从右上到左下对角线上的值;
  (4)将此数组视为“扫雷”游戏的界面(实际上扫雷游戏的界面一般就用二维数组保存其界面),通过键盘输入一个位置,输出其周围八个格子中的数据,如输入2 2时,输出34 30 47 29 48 14 12 31(注意:一共八个,不包括该位置上的数)(参见图中的黄色部分),计算这些数的和并输出。另外,如果选择的位置在边缘或角上时,周围的格数不够八个,按实际个数输出。请用循环有规律地列举出来各个值,不要采用顺序结构逐个罗列。这项功能由函数mine()完成。
  (5)设计函数change()改变数组中的值。改变的规则是:从第2行(即a[1]行)开始到最后一行,每一元素是其正上方元素和右上方元素之和,例如a[1][0]取a[0][0]和a[0][1]之和,a[1][1]取a[0][1]和a[0][2]之和,……。对各行最后一列元素,其右上方无数据,取上一行中的第一个元素,如a[1][7]取a[0][7]和a[0][0]之和。对上图中的数据,a[1]行的  元素将依次为:50 27 41 30 33 63 60 64,a[2]行依次为77 68…114。
程序模板:

#include  <iostream>#include <time.h>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()%50+1;  return;}//按行序优先输出数组void out(int a[8][8]){}//输出对角线元素的值(从左上到右下、从右上到左下)void outDiagonal(int a[8][8]){}//按扫雷游戏规则,输出a[x][y]周围的8个数字void mine(int a[8][8],int x, int y){}//按题目中所言规则更改元素的值void change(int a[8][8]){}

【拓展-二维数组更多用处】这部分可以不去选择实践,看看、想想即可。
  中国象棋的棋盘也可以采用二维数组存储。
  (1)下棋程序需要体现相关的规则,例如,马走日。通过键盘输入一个位置,输出按“日”字型可以走到的所有位置,及其位置上的数值。例如,在项目6的图中,输入2 2时,输出(0,1,2)(0,3,16) (1,0,9) (1,4,12)……(项目6图中的背景有斜线的部分。可走到的位置一般为八个,位置在边缘或角上时,可能不够八个,按实际输出)。
  (2)马走日还有“别马腿”的规则。在任务4的图中,如果马腿位置上的数大于25,认为马腿被别了(实际游戏中,以该位置是否有棋子进行判断)。请在(1)的基础上考虑这一规则,只输出所有能走到的位置及数值。
  俄罗斯方块中的每一个小方块也用二维数组(一般4*4或8*8)表示,单色游戏数组元素用0、1即可,彩色的取值不限于0、1。对小方块的基本操作包括左旋、右旋、反转等操作。请针对上面的二维数组,实现左旋、右旋、反转等操作。
  JPEG是数字图像存储的国际标准。在JPEG编码规则中,其编码的基本单位是8*8的图像“块”,其中有一个环节叫“Z字型编码”,也即将一个8*8的“块”中数据按如图所示的方向取出,形成一个1*64的向量(可以保存在一个一维数组中)。请输出前面的8*8的数据块对应的向量。

  
  《线性代数》是工程数学的重要组成,在大二时开设,其中将涉及大量矩阵的运算,用于解决工程中的问题。在编程实现矩阵操作时,就是二维数组的操作。


附:部分词典,复制到词本中自建文件

b.c. (缩)公元前
b/l n.(缩)提单
baby n.婴儿,年龄最小的人
baby-sit v.(替人)看护小孩
baby-sitter n.看护小孩的人
bachelor n.单身汉,学士
back n.背;adj.背后的
backbone n.脊梁骨
backdate v.回溯
background n.背景,经历
backing n.倒退,支持物
backlog n.未交付的订货
backward adv.向后,逆
backwardness n.落后(状态)
bacon n.咸肉,熏肉
bacterium n.细菌
bad adj.坏的,低劣的
badge n.徽章
badly adv.坏,非常,严重地
badminton n.羽毛球
baffle v.困扰,难倒
bag n.袋子,提包
baggage n.行李
baggy adj.袋状的
bait n.饵,诱饵
bake v.烤,烘
baker n.面包师
bakery n.面包店
balance n.平衡,天平,余额
balcony n.阳台
bald adj.秃的
ball n.球,球状物,舞会
ballet n.芭蕾舞
balloon n.气球
ballooning n.热气球飞行运动
ball-point pen;n.圆珠笔
ballroom n.舞厅
bamboo n.竹
bamboo-shoot n.竹笋
banana n.香蕉
band n.乐队,带子;v.联合
bandage n.绷带
bandit n.盗匪,歹徒
bang n.,v.砰的一响
bank n.岸,银行
banker n.银行家
banking n.银行业务、金融业
bankrupt n.,v.,adj.破产
banner n.旗帜,横幅
banquet n.宴会
bar n.棒,杆,酒吧
barber n.理发师
bare adj.裸的,直率的
barely adv.赤裸裸地
bargain n.交易,便宜货
barge n.驳船
bark n.狗吠,树皮;v.吠
barn n.谷仓,牲口棚
barometer n.晴雨表,标记
baron n.男爵
baroness n.男爵夫人,女男爵
barrel n.桶,枪(炮)管
barren adj.不育的,贫瘠的
barrier n.障碍,壁垒
barter n.易货贸易
base n.基础,基地;v.基于
baseball n.棒球
basement n.地下室,地窖
basic adj.基本的,基础的
basically adv.基本上,主要地
basin n.盆,盆地
basis n.基础,根据
basket n.篮子,筐
basketball n.篮球
bat n.球拍,蝙蝠;v.击打
bath n.洗澡,浴室
bathe v.洗澡,冲洗
bathroom n.浴室,洗手间
batter v.打击
battery n.电池
battle n.战斗,战役
bay n.海湾,湾
bazaar n.集市
be v.是,存在
beach n.海滩,湖滨
bead n.有孔小珠
beak n.鸟嘴
beam n.梁,射线;v.发光
bean n.豆子
bear v.负担,忍受,生育
bearing n.举止,意义,轴承
bearish adj.熊市的
beast n.野兽,牲畜
beat v.打,击败;n.击打
beautiful adj.美丽的,绝妙的
beauty n.美,美女
because conj.因为,由于
become v.变成
bed n.床,河床,苗圃
bedroom n.卧室
bee n.蜜蜂
beef n.牛肉
beer n.啤酒
beetle n.甲虫
before prep.在...前面
beforehand adv.事先,预先
beg v.乞讨,恳求
beggar n.乞丐
begin v.开始,着手进行
beginner n.初学者
beginning n.开端,起点
behalf n.代表
behave v.行为,举动
behavior n.行为,举止
behind prep.在...后面
behindhand adj.落后,事后
being n.生物,存在
belief n.信仰,信心
believe v.相信,认为
bell n.钟,铃
belly n.肚子
belong v.属于
beloved adj.敬爱的;n.爱人
below adj.,prep.在...下面
belt n.带,腰带
bench n.长凳,工作台
bend v.弯曲,俯身;n.拐弯
beneath prep.在...之下
beneficial adj.有益的,有利的
beneficiary n.受益者
benefit n.益处,利益
benevolence n.慈悲,捐助
benevolent adj.乐善好施的
bent adj.弯曲的
berry n.浆果
beside prep.在...之旁
besides adj.而且;prep...之外
best adj.最好的
bestow v.赠给,授予
best-seller n.畅销书(货)
best-selling adj.畅销的
bet n.,v.打赌
betray v.背叛,泄露
betrayal n.背叛,暴露
better adj.更好的;adv.较好
better-off adj.经济情况较好的
between prep.在两者之间
beverage n.饮料
beware v.当心
bewilder v.迷惑,茫然
beyond prep.在...那边,超出
bias n.偏好
bible n.圣经
bicycle n.自行车
bid n.,v.报价,投标
bidding n.投标
big adj.大的,重大的
bike n.自行车
bill n.帐单,议案,钞票
billion n.十亿
bind v.捆绑,约束
binding n.装订
biographer n.传记记者
biography n.传记
biologist n.生物学家
biology n.生物学
bird n.鸟
birth n.出生,创始
birthday n.生日,诞辰
birthplace n.出生地
biscuit n.饼干
bishop n.主教
bit n.小片,一点
bite n.,v.咬,叮;n.一口
bitter adj.苦的,痛苦的
bitterly adv.惨痛地,辛酸地
bitterness n.苦味,苦难
black adj.黑的;n.黑色
blackboard n.黑板
blacksmith n.铁匠
blade n.刀刃,叶片
blame v.责备;n.过失
blank adj.空白的;n.空格
blanket n.毛毯
blast n.阵风;v.爆炸
blaze n.火光,光亮
bleach v.漂白,变白
bleed v.出血,流血
blend v.混合,掺混
bless v.保佑,祝福
blessing n.祝福
blind adj.瞎的;v.使失明
blink adj.眨眼,闪烁
block n.大块,街区,障碍物
blockage n.封锁
blond adj.金发的
blood n.血,血统
bloody adj.流血的,残忍的
bloom n.花;v.开花
blossom n.(果树的)花
blot n.污迹
blouse n.女衫
blow v.吹,吹掉,刮风
blue adj.蓝色的,忧郁的
blunder n.大错
blunt adj.钝的,生硬的
blush v.脸红,害臊
blushy adj.害羞的
board n.木板,伙食,董事会
boarding n.伙食
boast v.夸口,以...而自豪
boat n.小船,艇
body n.身体,尸体,团体
bodyguard n.保镖
boil v.沸腾,煮沸
boiler n.锅炉
boiling adj.沸腾的
bold adj.大胆的
boldness n.胆略
bolt n.螺检,插销;v.闩门
bomb n.炸弹;v.轰炸
bomber n.轰炸机
bonafide adj.真诚的,无欺的
bond n.束缚,联结,债券
bonded adj.保税的
bone n.骨,骨骼
bonus n.红利
bony adj.骨头的
book n.书;v.预订(票)
bookcase n.书橱
booking adj.定货
booklet n.小册子
bookshelf n.书架
bookstore n.书店
boom v.隆隆响,兴旺,繁荣
booming adj.兴旺的,繁荣的
boost v.抬高,促进
boot n.靴子
booth n.货摊,电话亭
border n.国界,边境
bore v.烦扰,使厌烦,钻孔
boring adj.讨厌的
born adj.出生的,天生的
borrow v.借,借用
borrowings n.借款
bosom n.胸,胸怀
boss n.上司,老板
bossy adj.好发号施令的
both pron.,adj.双方,两
bother v.打扰,麻烦;n.麻烦
bottle n.瓶子
bottle-neck n.影响...的环节
bottom n.底部,末尾
bottom-line n.末行数字,结果
bough n.大树枝
bounce v.跳起;n.跳跃
bound v.缚,以...为界
boundary n.界线,边界
bourgeois n.资产阶级分子
bow v.鞠躬,服从;n.弓
bowl n.碗,钵
bowling n.保龄球
box n.箱,盒;v.拳击
boxer n.拳击运动员
boxing n.拳击
boxing-day n.节礼日
boy n.男孩,小伙子
boycott v.,n.抵制
brace n.支撑;v.激励
bracket n.括号
brag v.吹嘘,夸口
brain n.脑子,头脑,智能
brake n.制动器;v.刹车
brake n.v.刹车
branch n.树枝,分支,分部
brand n.牌子,商标
brandy n.白兰地
brass n.黄铜
brave adj.勇敢的;v.冒着
bravely adv.勇敢地
bravery n.勇敢
brazil n.巴西
brazilian adj.,n.巴西的(人)
breach n.违反(契约)
bread n.面包,生计
bread-earner n.挣钱养家的人
breadth n.宽度,大量
break n.打破,破坏;n.裂口
breakage n.裂口
breakdown n.故障,衰竭
breakfast n.早饭
breakthrough n.突破
breast n.乳房,胸脯
breath n.呼吸,气息
breathe v.呼吸
breed v.繁殖,饲养;n.品种
breeze n.微风
bribe v.贿赂
bribery v.贿赂
brick n.砖
bride n.新娘
bridegroom n.新郎
bridge n.桥梁,桥牌
bridle n.约束;v.抑制
brief adj.简短的
briefing n.简要情况
briefly adv.简单地,简短地
bright adj.明亮的,鲜明的
brighten v.使发光
brightness n.光辉,明亮
brilliance n.辉煌,光彩
brilliant v.辉煌的,杰出的
brim n.边,边缘
bring v.拿来,带来
brink n.边缘
brisk adj.敏捷的,活跃的
bristle n.鬃毛
britain n.不列颠,英国
british adj.英国的,英属的
brittle adj.易碎的,脆的
broad adj.宽的,辽阔的
broadcast v.,n.广播
broadcasting n.广播节目
broaden v.加宽,扩大
brochure n.产品介绍手册
broken adj.破碎的,毁坏了的
broker n.经纪人
bronze n.青铜
brood n.一窝
brook n.小河,溪流
broom n.扫帚
brother n.兄弟,同胞
brotherhood n.兄弟情谊
brother-in-law n.姻兄(弟)
brow n.眉毛,额
brown n.,adj.褐色(的)
bruise n.青肿;v.打伤
brush n.刷子,画笔;v.刷
brutal adj.野蛮的
brute n.禽兽,畜生
bubble n.气泡
bucket n.水桶
bud n.芽,蓓蕾
buddhism n.佛教
buddhist n.佛教徒
budget n.预算
buffalo n.水牛,野牛
buffet n.冷餐
bug n.臭虫,虫子
bugle n.喇叭
build v.建造,建设
builder n.建筑工人,建设者
building n.建筑物,大楼
bulb n.球形物,灯泡
bulk n.体积,大半
bulky adj.庞大的,笨重的
bull n.公牛
bullet n.子弹
bulletin n.公报
bullion n.金块,金条
bullish adj.行情看涨的
bump v.碰,颠簸;n.碰撞
bumpy adj.颠簸不平的
bunch n.一束
bundle n.,v.捆,包
burden n.担子,负担
burdensome adj.沉重的
bureau n.局,司,办公室
bureaucracy n.官僚主义
bureaucratic adj.官僚主义的
burglar n.夜盗,窃贼
burglary n.盗窃
burial n.埋葬
burn v.烧,燃烧,烧伤
burner n.喷灯
burnt adj.烧焦的,烧坏的
burst v.,n.爆炸,破裂
bury v.掩埋,安葬
bus n.公共汽车
bush n.灌木
bushel n.蒲式耳(重量单位)
business n.行业,买卖,商号
businesslike adj.事务式的
busy adj.忙碌的,热闹的
but prep.但是,除了
butcher n.屠夫;v.屠宰
butchery n.肉食店
butt n.根端;v.顶撞
butter n.黄油
butterfly n.蝴蝶
button n.钮扣,按钮
buy v.买,购买
buyer n.购买者
buzz v.嗡嗡叫;n.嗡嗡声
by prep.在...旁边,按照
bygone n.已往的,过时的
bypass n.旁道,分路
by-product n.副产品

  


http://blog.csdn.net/sxhelijian/article/details/11890759



【项目1-折腾二维数组】创建一个长度为5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后通过键盘输入,使后两列的10个元素获得值,将所有元素值乘以3后保存在数组中。输出数组时,按行序优先输出,再按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”),再将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出),再输出数组中的所有偶数,以及行列下标之和为3的倍数的元素值。
     提示:编程时,可以做一点,调一点,全写好再改会自讨苦吃。

  同时也给出参考的运行界面:

  
     报告模板及部分代码

/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: array.cpp                           * 作    者:                            * 完成日期:  年  月   日* 版本号: v1.0      * 输入描述:无* 问题描述:定义二维数组,为数组赋初值、输入值、更改值、按各种方法输出*/#include <iostream>using namespace std;int main( )int i,j;    //创建5行4列的二维整型数组,为数组中的前两列的10个元素赋初值 int a[5][4]={{0,1},{4,5},{8,9},{12,13},{16,17}};  //键盘输入使后两列10个元素的值 cout<<"请输入10个整数:"<<endl//按行序优先输出 cout<<"数组中的值为:"<<endl;  //将所有元素值乘以3后保存在数组中 cout<<"现在将所有元素乘以3倍...";  //按行序优先输出 cout<<"行序优先输出:"<<endl;   //按列序优先输出(输出的第一行是数组中的第一列……,其实输出的就是“转置”) cout<<"列序优先输出:"<<endl;  //将数组“倒”着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出) cout<<"倒着输出:"<<endl//输出数组中的所有偶数 cout<<"数组中的偶数:"<<endl;  //输出所有行列下标之和为3的倍数的元素值 cout<<"行列下标之和为3的倍数的元素:"<<endlreturn 0;}

补充:为了督促同学们学会与习惯使用单步调试工具,要求在报告中加一张图,图示在单步执行时,看到的数组a中各行各列的值。


【项目2-杨辉三角】编写程序,打印出以下形式的扬辉三角形。
1
1    1
1    2   1
1    3    3    1
1    4   6    4    1
1    5   10   10   5    1
1    6   15   20   15   6   1
  可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如果需打印7行杨辉三角形,应该定义等于或大于7X7的方形矩阵,只是矩阵的上半部和其余部分并不使用。杨辉三角形具有如下特点:(1)第0列和对角线上的元素都为1。(2)除第0列和对角线上的元素以外,其它元素的值均为前一行上的同列元素和前一列元素之和。
  函数setdata按以上规律给数组元素置数,函数outdata输出杨辉三角形。

#include <iostream>  using namespace stdint main()  {    int a[7][7]={0};    setdata(a); //给数组赋值    outdata(a); //输出数组    return 0;}  void setdata(int a[7][7])  {  }  void outdata(int a[7][7])  {   }  

【项目3-带姓名的成绩单】设score数组中存储同学们的C++成绩,增加一个数组string name[20]并赋初值,表示同学们的姓名。这两个数组中,同学的姓名与成绩的下标保持一致(例如name[1]和score[1]表示同一位同学的姓名和C++成绩)。请(1)输出按成绩排序后的同学的名单;(2)输出按同学姓名排序后的成绩单(排序对象是字符串)。提示:排序中交换score中的元素时,只要同时也交换name中的相应元素,就可以实现姓名和成绩的同步(如果交换成绩而不交换姓名,两者的对应关系就被破坏了。)



【项目4-多科成绩单】用二维数组score[][4]保存同学们的高数、英语、C++成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号)。在此基础上,完成下面的操作:
(1)设计输入成绩的函数,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(2)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
(3)输出考得总分最高、最低同学的人数及对应的学号。
要求:学生人数num在main()函数中输入,score[][4]数组也是main()函数的局部变量,最好将其他功能也设计成函数,使main()函数尽可能地简单。
【项目4扩展(选做)-带姓名的多科成绩单】增加用数组string name[]表示同学们的姓名,使姓名与成绩的下标保持一致(例如name[1]和score[1][0]、score[1][1]、score[1][2]和score[1][3]表示同一位同学的数据)。据此,将项目4中的第(3)项任务改为输出总分最高的同学的姓名。


【项目5-电子词典】:做一个简单的电子词典。在文件dictionary.txt中(本文后附了一部分(b打头的词)作为调试,校内同学到我的BB教学平台中找,校外人士感兴趣的告知我Email),保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束,如下图:
      
  提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。


【项目6-体会棋盘游戏中的数据存储】
  定义一个8行8列的二维数组a[8][8]。
  

  (1)为二维数组中的数据赋50以内的随机数(程序模板中setdata()函数已经完成,利用产生随机数的系统函数实现),可能的取值如上图所示;
  (2)设计函数out()按行输出二维数组中的数据;
  (3)设计函数outDiagonal()输出从左上到右下对角线上的元素的值,如对图的数据而言,输出为48 34 12 31 40 42 34 45;再输出从右上到左下对角线上的值;
  (4)将此数组视为“扫雷”游戏的界面(实际上扫雷游戏的界面一般就用二维数组保存其界面),通过键盘输入一个位置,输出其周围八个格子中的数据,如输入2 2时,输出34 30 47 29 48 14 12 31(注意:一共八个,不包括该位置上的数)(参见图中的黄色部分),计算这些数的和并输出。另外,如果选择的位置在边缘或角上时,周围的格数不够八个,按实际个数输出。请用循环有规律地列举出来各个值,不要采用顺序结构逐个罗列。这项功能由函数mine()完成。
  (5)设计函数change()改变数组中的值。改变的规则是:从第2行(即a[1]行)开始到最后一行,每一元素是其正上方元素和右上方元素之和,例如a[1][0]取a[0][0]和a[0][1]之和,a[1][1]取a[0][1]和a[0][2]之和,……。对各行最后一列元素,其右上方无数据,取上一行中的第一个元素,如a[1][7]取a[0][7]和a[0][0]之和。对上图中的数据,a[1]行的  元素将依次为:50 27 41 30 33 63 60 64,a[2]行依次为77 68…114。
程序模板:

#include  <iostream>#include <time.h>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()%50+1;  return;}//按行序优先输出数组void out(int a[8][8]){}//输出对角线元素的值(从左上到右下、从右上到左下)void outDiagonal(int a[8][8]){}//按扫雷游戏规则,输出a[x][y]周围的8个数字void mine(int a[8][8],int x, int y){}//按题目中所言规则更改元素的值void change(int a[8][8]){}

【拓展-二维数组更多用处】这部分可以不去选择实践,看看、想想即可。
  中国象棋的棋盘也可以采用二维数组存储。
  (1)下棋程序需要体现相关的规则,例如,马走日。通过键盘输入一个位置,输出按“日”字型可以走到的所有位置,及其位置上的数值。例如,在项目6的图中,输入2 2时,输出(0,1,2)(0,3,16) (1,0,9) (1,4,12)……(项目6图中的背景有斜线的部分。可走到的位置一般为八个,位置在边缘或角上时,可能不够八个,按实际输出)。
  (2)马走日还有“别马腿”的规则。在任务4的图中,如果马腿位置上的数大于25,认为马腿被别了(实际游戏中,以该位置是否有棋子进行判断)。请在(1)的基础上考虑这一规则,只输出所有能走到的位置及数值。
  俄罗斯方块中的每一个小方块也用二维数组(一般4*4或8*8)表示,单色游戏数组元素用0、1即可,彩色的取值不限于0、1。对小方块的基本操作包括左旋、右旋、反转等操作。请针对上面的二维数组,实现左旋、右旋、反转等操作。
  JPEG是数字图像存储的国际标准。在JPEG编码规则中,其编码的基本单位是8*8的图像“块”,其中有一个环节叫“Z字型编码”,也即将一个8*8的“块”中数据按如图所示的方向取出,形成一个1*64的向量(可以保存在一个一维数组中)。请输出前面的8*8的数据块对应的向量。

  
  《线性代数》是工程数学的重要组成,在大二时开设,其中将涉及大量矩阵的运算,用于解决工程中的问题。在编程实现矩阵操作时,就是二维数组的操作。


附:部分词典,复制到词本中自建文件

b.c. (缩)公元前
b/l n.(缩)提单
baby n.婴儿,年龄最小的人
baby-sit v.(替人)看护小孩
baby-sitter n.看护小孩的人
bachelor n.单身汉,学士
back n.背;adj.背后的
backbone n.脊梁骨
backdate v.回溯
background n.背景,经历
backing n.倒退,支持物
backlog n.未交付的订货
backward adv.向后,逆
backwardness n.落后(状态)
bacon n.咸肉,熏肉
bacterium n.细菌
bad adj.坏的,低劣的
badge n.徽章
badly adv.坏,非常,严重地
badminton n.羽毛球
baffle v.困扰,难倒
bag n.袋子,提包
baggage n.行李
baggy adj.袋状的
bait n.饵,诱饵
bake v.烤,烘
baker n.面包师
bakery n.面包店
balance n.平衡,天平,余额
balcony n.阳台
bald adj.秃的
ball n.球,球状物,舞会
ballet n.芭蕾舞
balloon n.气球
ballooning n.热气球飞行运动
ball-point pen;n.圆珠笔
ballroom n.舞厅
bamboo n.竹
bamboo-shoot n.竹笋
banana n.香蕉
band n.乐队,带子;v.联合
bandage n.绷带
bandit n.盗匪,歹徒
bang n.,v.砰的一响
bank n.岸,银行
banker n.银行家
banking n.银行业务、金融业
bankrupt n.,v.,adj.破产
banner n.旗帜,横幅
banquet n.宴会
bar n.棒,杆,酒吧
barber n.理发师
bare adj.裸的,直率的
barely adv.赤裸裸地
bargain n.交易,便宜货
barge n.驳船
bark n.狗吠,树皮;v.吠
barn n.谷仓,牲口棚
barometer n.晴雨表,标记
baron n.男爵
baroness n.男爵夫人,女男爵
barrel n.桶,枪(炮)管
barren adj.不育的,贫瘠的
barrier n.障碍,壁垒
barter n.易货贸易
base n.基础,基地;v.基于
baseball n.棒球
basement n.地下室,地窖
basic adj.基本的,基础的
basically adv.基本上,主要地
basin n.盆,盆地
basis n.基础,根据
basket n.篮子,筐
basketball n.篮球
bat n.球拍,蝙蝠;v.击打
bath n.洗澡,浴室
bathe v.洗澡,冲洗
bathroom n.浴室,洗手间
batter v.打击
battery n.电池
battle n.战斗,战役
bay n.海湾,湾
bazaar n.集市
be v.是,存在
beach n.海滩,湖滨
bead n.有孔小珠
beak n.鸟嘴
beam n.梁,射线;v.发光
bean n.豆子
bear v.负担,忍受,生育
bearing n.举止,意义,轴承
bearish adj.熊市的
beast n.野兽,牲畜
beat v.打,击败;n.击打
beautiful adj.美丽的,绝妙的
beauty n.美,美女
because conj.因为,由于
become v.变成
bed n.床,河床,苗圃
bedroom n.卧室
bee n.蜜蜂
beef n.牛肉
beer n.啤酒
beetle n.甲虫
before prep.在...前面
beforehand adv.事先,预先
beg v.乞讨,恳求
beggar n.乞丐
begin v.开始,着手进行
beginner n.初学者
beginning n.开端,起点
behalf n.代表
behave v.行为,举动
behavior n.行为,举止
behind prep.在...后面
behindhand adj.落后,事后
being n.生物,存在
belief n.信仰,信心
believe v.相信,认为
bell n.钟,铃
belly n.肚子
belong v.属于
beloved adj.敬爱的;n.爱人
below adj.,prep.在...下面
belt n.带,腰带
bench n.长凳,工作台
bend v.弯曲,俯身;n.拐弯
beneath prep.在...之下
beneficial adj.有益的,有利的
beneficiary n.受益者
benefit n.益处,利益
benevolence n.慈悲,捐助
benevolent adj.乐善好施的
bent adj.弯曲的
berry n.浆果
beside prep.在...之旁
besides adj.而且;prep...之外
best adj.最好的
bestow v.赠给,授予
best-seller n.畅销书(货)
best-selling adj.畅销的
bet n.,v.打赌
betray v.背叛,泄露
betrayal n.背叛,暴露
better adj.更好的;adv.较好
better-off adj.经济情况较好的
between prep.在两者之间
beverage n.饮料
beware v.当心
bewilder v.迷惑,茫然
beyond prep.在...那边,超出
bias n.偏好
bible n.圣经
bicycle n.自行车
bid n.,v.报价,投标
bidding n.投标
big adj.大的,重大的
bike n.自行车
bill n.帐单,议案,钞票
billion n.十亿
bind v.捆绑,约束
binding n.装订
biographer n.传记记者
biography n.传记
biologist n.生物学家
biology n.生物学
bird n.鸟
birth n.出生,创始
birthday n.生日,诞辰
birthplace n.出生地
biscuit n.饼干
bishop n.主教
bit n.小片,一点
bite n.,v.咬,叮;n.一口
bitter adj.苦的,痛苦的
bitterly adv.惨痛地,辛酸地
bitterness n.苦味,苦难
black adj.黑的;n.黑色
blackboard n.黑板
blacksmith n.铁匠
blade n.刀刃,叶片
blame v.责备;n.过失
blank adj.空白的;n.空格
blanket n.毛毯
blast n.阵风;v.爆炸
blaze n.火光,光亮
bleach v.漂白,变白
bleed v.出血,流血
blend v.混合,掺混
bless v.保佑,祝福
blessing n.祝福
blind adj.瞎的;v.使失明
blink adj.眨眼,闪烁
block n.大块,街区,障碍物
blockage n.封锁
blond adj.金发的
blood n.血,血统
bloody adj.流血的,残忍的
bloom n.花;v.开花
blossom n.(果树的)花
blot n.污迹
blouse n.女衫
blow v.吹,吹掉,刮风
blue adj.蓝色的,忧郁的
blunder n.大错
blunt adj.钝的,生硬的
blush v.脸红,害臊
blushy adj.害羞的
board n.木板,伙食,董事会
boarding n.伙食
boast v.夸口,以...而自豪
boat n.小船,艇
body n.身体,尸体,团体
bodyguard n.保镖
boil v.沸腾,煮沸
boiler n.锅炉
boiling adj.沸腾的
bold adj.大胆的
boldness n.胆略
bolt n.螺检,插销;v.闩门
bomb n.炸弹;v.轰炸
bomber n.轰炸机
bonafide adj.真诚的,无欺的
bond n.束缚,联结,债券
bonded adj.保税的
bone n.骨,骨骼
bonus n.红利
bony adj.骨头的
book n.书;v.预订(票)
bookcase n.书橱
booking adj.定货
booklet n.小册子
bookshelf n.书架
bookstore n.书店
boom v.隆隆响,兴旺,繁荣
booming adj.兴旺的,繁荣的
boost v.抬高,促进
boot n.靴子
booth

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block var foo = 'bar'; 

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n 1 ) ! n N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

Γ ( z ) = 0 t z 1 e t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

gantt
        dateFormat  YYYY-MM-DD
        title Adding GANTT diagram functionality to mermaid
        section 现有任务
        已完成               :done,    des1, 2014-01-06,2014-01-08
        进行中               :active,  des2, 2014-01-09, 3d
        计划一               :         des3, after des2, 5d
        计划二               :         des4, after des3, 5d
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

猜你喜欢

转载自blog.csdn.net/hgdfguj/article/details/84191620