第四讲 数组与指针习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
位置被占领的概率为 p。在扫雷游戏中,被占领的格子表示有雷,空格子表示安全。请首先打印这个数 组,用星号表示雷,点号表示安全格子。然后,用安全格子周围的雷数(上下左右和对角格子)替换 格子中的句号,并将瓦雷后的结果输出。下面是一个示例,要求按示例格式输出。 **... ..... .*... **100 33200 1*100
(提示:可仿照上题动态生成二维数组,需考虑 N 为奇数时,中间元素的输出) 8、 请编写一个 C++程序,根据用户输入的奇数 N,首先生成一个 N×N 的矩阵,在该矩阵中填入 1~N2 的数,使得每行、每列,以及两个对角线上的数之和都相等,要求,必须判断 N 为奇数。 (提示:可用 第 4 题方法动态生成二维数组,填数的方法请参考九宫格方法) 9、 利用本讲洗牌的程序,编写一个 C++程序,由用户指定玩牌的人数,洗牌后给每个玩家发 5 张牌(可 以是连续发 5 张,也可以是每人轮流发一张) ,要求输出每位玩家手中的牌。 10、请编写一个 C++程序,模拟人们不断地进入某个房间,直到进入的人有两人生日在同一天为止,要求 统计到停止进人时,有多少人进入了房间。 (提示:可将人的生日看作是分布在 0~364 上的数,并且这 种分布是均匀的、独立的。可参考本讲 Coupon Collector 示例) 11、在上题的基础上,请编写一个 C++程序,计算到停止进人为止,平均需要多少人进房间。 (提示:即进 行多次模拟,求平均值) 12、编写一个 C++程序,该程序有 3 个输入:M、N 和 p。程序将创建一个 M× N 布尔数组,数组中每一个
级别 Fly Weight Super Fly Weight Bantam Weight Super Bantam Weight Feather Weight Super Feather Weight Light Weight Super Light Weight Welter Weight Super Welter Weight Middle Weight Super Middle Weight Light Heavy Weight Super Light Heavy Weight Cruiser Weight 下限 0 112 115 118 122 126 130 135 140 147 154 160 167 174 183 上限 112 115 118 122 126 130 135 140 147 154 160 167 174 183 189
请编写一个 C++程序,将 N 作为输入,按上例格式输出 H(N)(假设 N 为 2 的幂) 。 (提示:需要动态创建 2 维数组,可参考的代码(注意:动态创建的布尔数组元素缺省值为 true) :
bool **H = new bool* [N]; for ( int i = 0; i < N; i++ ) H[i] = new bool[N];
) 7、 请编写一个 C++程序,根据用户输入的整数 N,首先生成一个 N×N 的二维数组,按行优先的方式在 该二维数组中填入 1~N2 的数,然后按螺旋方式输出数组。下面是一个示例(输入为 16) :
1 5 2 6 3 7 4 8
9 10 11 12 13 14 15 16 输出:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
(提示: 输入的概率 p 为[0, 1)之间的数, 所谓位置被占领的概率为 p, 指的是为每个位置产生一个[0, 1)之间的随机数,当产生的随机数小于 p 时,表示该位置有雷,否则无雷) 。
第四讲 数组与指针习题
1、 编写一个程序,利用字符数组实现: a) b) c) d) 在输入的字符串中寻找某个字符(自己指定)的第一次出现,并输出第一次出现的下标值。 统计输入的字符串中某个字符的出现次数。 将输入的字符串逆向保存到另一个字符数组; 将输入的字符串中所有的数字字符全部删除。
2、 利用数组重新编写一个 C++程序,计算小于等于某个整数 N 的素数的个数。 3、 利用随机数生成方法,编写一个 C++程序,根据用户指定的人数 N,动态创建一个长度为 N 的整型数 组,为每个人生成一个[60, 100]的整数成绩,然后统计每个成绩区间的人数:60~69 为及格、70~79 为 中等、80~89 为良好、90~100 为优秀,同时输出每个区间人数占全部学生人数的比例。输出格式不限, 必须输出所要求的内容。 4、 编写一个 C++程序,由用户指定数字序列的长度 N,然后读入由 0~(N-1)这些数构成的一个长度为 N 的序列。程序中要判断输入的序列是否合法,所谓序列合法指的是序列中只能出现 0~(N-1)这些数,并 且不能重复出现。对合法序列,请输出其反序列,若读入的序列保存于数组 a 中,反序列保存在数组 b 中,则有 a[b[i]]=b[a[i]]=i 成立。 5、 有氧搏击操(kickboxing)是一种新兴的体育运动,该运动按照体重进行分级,下表是体重与级别对照 表,请编写一个 C++程序,根据用户输入的体重 w,输出对应的级别。要求,必须用数组实现。
Super Cruiser Weight Heavy Weight Super Heavy Weight
189 198 209
198 209
来自百度文库
6、 N× N 的 Hadamard 矩阵是一个布尔矩阵,任何两行元素有 N/2 个位置不同(这种属性可以用它进行纠 错) 。H(1)是 1× 1 的矩阵,它有唯一元素 true。当 N>1 时,H(2N)由 4 个 H(N)拼接组成,即将 H(N)放 于 H(2N)的左上角、右上角、左下角、右下角,然后将右下角 H(N)元素取反。下面是几个一个例子(T 表示 true,F 表示 false) H(1) T H(2) TT TF H(4) TTTT TFTF TTFF TFFT