发布
2009年7月26日(最后更新:2009年7月26日)

初学者练习

评分:4.3/5 (276票)
*****
原帖来自 Blitz Coder ( http://www.cplusplus.com/member/Blitz_Coder/ ) 在 http://www.cplusplus.com/forum/beginner/12969/ 他让我重新格式化,所以这是它的样子

_________________________________________________________________________________

来自朋友在我开始学习编程时发给我的旧电子邮件

建议学习顺序
• 变量、数据类型和数值运算符
• 基本输入/输出
• 逻辑(if 语句、switch 语句)
• 循环(for、while、do-while)
• 数组
• 伪随机数生成
• 字符串和字符串函数
• 函数
• 结构/类
• 枚举数据
• 文件输入/输出
• 指针
• 排序
• 链表
• 高级类
• 递归


_________________________________________________________________________________
评分程序
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)

编写一个程序,允许用户输入编程课的成绩(0-100)。
如果用户成绩为 100,则通知用户他们获得了满分。

★ 修改程序,如果用户成绩为 90-100,则通知用户他们得了 A

★★ 修改程序,使其通知用户他们的字母等级
0-59 F 60-69 D 70-79 C 80-89 B 90-100 A


_________________________________________________________________________________
汽水机
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)

编写一个程序,向用户展示您最喜欢的 5 种饮料(可乐、水、雪碧、……、随便)。
然后允许用户通过输入数字 1-5 来选择饮料。
输出用户选择的饮料。

★ 如果您的程序使用 if 语句而不是 switch 语句,请修改它以使用 switch 语句。
如果您的程序使用 switch 语句,请修改它以使用 if/else-if 语句。

★★ 修改程序,如果用户输入的选择不是 1-5,则输出“错误。选择无效,退还您的钱。”


_________________________________________________________________________________
while(user == gullible)
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)

编写一个程序,不断要求用户输入除 5 以外的任何数字,直到用户输入数字 5。
然后告诉用户“嘿!你不应该输入 5!”并退出程序。

★ 修改程序,如果在 10 次迭代后用户仍未输入 5,则告诉用户“哇,你比我更有耐心,你赢了。”并退出。

★★ 修改程序,要求用户输入除他们被要求输入的次数之外的任何数字。(即第一次迭代时“请输入除 0 以外的任何数字”,第二次迭代时“请输入除 1 以外的任何数字”,依此类推。程序必须相应地运行,在用户输入被要求不要输入的数字时退出。)


_________________________________________________________________________________
煎饼狂人
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
数组

编写一个程序,要求用户输入 10 个不同的人(第 1 个人、第 2 个人……第 10 个人)早餐吃的煎饼数量。
输入数据后,程序必须分析数据并输出哪个人早餐吃了最多的煎饼。

★ 修改程序,使其还输出早餐吃的煎饼数量最少的人。

★★★★ 修改程序,使其按照吃煎饼的数量顺序输出所有 10 个人的列表。
例如:
第 4 个人:吃了 10 个煎饼
第 3 个人:吃了 7 个煎饼
第 8 个人:吃了 4 个煎饼
...
第 5 个人:吃了 0 个煎饼


_________________________________________________________________________________
区间查找
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
伪随机数

编写一个程序,计算一个 1 到 100 之间的随机数。然后程序要求用户猜测该数字。
如果用户猜得太高或太低,程序应分别输出“太高”或“太低”。
程序必须让用户继续猜测,直到用户正确猜出该数字。

★ 修改程序,输出用户猜对正确数字所需的猜测次数。

★★ 修改程序,使其不是用户猜测计算机想出的数字,而是计算机猜测用户秘密确定的数字。用户必须告诉计算机它猜得太高还是太低。

★★★★ 修改程序,使其无论用户想什么数字(1-100),计算机都可以在 7 次或更少的猜测中猜出。


_________________________________________________________________________________
井字棋
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
数组

制作一个两人井字棋游戏。

★ 修改程序,使其在有玩家获胜时宣布(以及是哪个玩家获胜,x 或 o)。

★★ 修改程序,使其成为单人游戏,与计算机对战(计算机随机走棋)。

★★★★ 修改程序,使其在玩家即将获胜时(即,他们在一行中有 2 个 x 棋子,计算机就会用 o 棋子阻挡)。


_________________________________________________________________________________
地下城探险
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
数组

编写一个程序,将一个简单的基于网格的游戏板输出到屏幕上,使用数字或字符。
例如:

. . . . . . . . . .
. G . . . . . . . .
. . . . . . T . . .
. . . . . . . . . .
. . . . T . . . . .
. . . . . . T . . .
. . . . . . . . . X



0 0 0 0 0 0 0 0 0 0
0 5 0 0 6 0 0 0 0 0
0 0 0 0 0 0 7 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 7 0 0 0 0 0 0
0 0 0 0 0 0 7 0 0 0
0 0 0 0 0 0 0 0 0 4

允许用户(在示例中用 G 标记)在每个回合向上、向下、向左或向右移动。如果玩家踩到陷阱则失败。如果他们到达宝藏“X”则获胜。

★★ 添加敌人,敌人每个回合会随机向任何方向移动一次。(敌人就像陷阱一样,碰到会使玩家失败)

提示:不要让玩家移出游戏板!如果他们移出顶部或底部,您的程序就会崩溃!
(敌人也一样)
_________________________________________________________________________________
函数趣味
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
函数

编写一个名为 say_hello() 的函数,它会在屏幕上输出“Hello”。

★ 修改函数,使其接受一个整数参数,并按照传递给它的值打印“hello”的次数。

★★ 再编写一个函数,它接受两个整数参数,然后返回一个整数,该整数是这两个整数的乘积。
(例如,整数 1:4,整数 2:5 返回:20)

★★★ 编写一个名为 half() 的函数,它接受一个整数参数。该函数必须将它接收到的数字打印到屏幕上,然后程序将其除以二得到一个新数字。如果新数字大于零,该函数则调用 half() 函数,并将新数字作为参数传递给它。如果数字为零或更小,则函数退出。

使用参数 100 调用 half() 函数,屏幕输出应为:
100
50
25
...
...
1.


_________________________________________________________________________________
字符串是你的朋友,直到它们背叛你。
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
函数
字符串和字符串函数


编写一个程序,分别要求用户输入名字和姓氏。
程序必须然后将用户的全名存储在一个字符串中并输出到屏幕上。
例如:
输入
John
Smith
输出
John Smith

★ 修改程序,将其中的所有 a、e、i、o、u 替换为字母 z。
例如:
John Smith -> Jzhn Smzth

★★ 修改程序,使其反转用户的姓名。
例如:
John Smith -> htimS nhoJ


_________________________________________________________________________________
毕业
需要: 变量、数据类型和数值运算符
基本输入/输出
逻辑(if 语句、switch 语句)
循环(for、while、do-while)
数组
伪随机数生成
字符串和字符串函数
函数
结构/类
枚举数据
文件输入/输出
指针
排序
链表
高级类

编写一个程序,创建一个兔子对象的链表。
每个兔子对象必须具有
性别:雄性、雌性(创建时随机 50/50)
颜色:白色、棕色、黑色、斑点
年龄:0-10(岁)
名字:创建时从兔子名字列表中随机选择。
放射性突变吸血鬼兔子:true/false(在兔子创建时决定,2% 概率为 true)

在程序初始化时,必须创建 5 只兔子并赋予随机颜色。
此后的每个回合,兔子都会长一岁。
只要列表中至少有一只年龄在 2 岁或以上的雄性兔子,对于列表中每只年龄在 2 岁或以上的雌性兔子;
每个回合都会创建一个新的兔子。(例如,如果有 1 只成年雄兔和 3 只成年雌兔,每个回合就会出生三只新兔子)
新出生的兔子应与它们的母亲颜色相同。
如果兔子的年龄超过 10 岁,它就会死亡。
如果出生了放射性突变吸血鬼兔子,那么每个回合它会将一个非放射性兔子变成放射性吸血鬼兔子。
(如果有两只放射性突变吸血鬼兔子,则每回合会转化两只兔子,以此类推……)
放射性吸血鬼兔子不参与正常繁殖,也不算作成年兔子。
放射性吸血鬼兔子要到 50 岁才会死亡。
程序应在每个回合打印出所有兔子的列表以及所有兔子的详细信息,并按年龄排序。
程序还应输出每个回合的事件,例如:
“兔子 Thumper 诞生了!”
“兔子 Fufu 诞生了!”
“放射性突变吸血鬼兔子 Darth Maul 诞生了!”
“兔子 Julius Caesar 死亡了!”
程序应将所有屏幕输出写入文件。
当所有兔子都死亡时,程序终止。
如果兔子数量超过 1000,则会发生食物短缺,导致一半的兔子(随机选择)死亡。

★ 修改程序以实时运行,每个回合持续 2 秒,每次公告之间暂停一秒。

★★ 允许用户按“k”键发起一次大规模兔子清理!导致一半的兔子(随机选择)被杀死。

★★★★ 修改程序,将兔子放置在 80x80 的网格中。让兔子每个回合随机移动一个空格。
用 m 标记幼年雄性,用 M 标记成年雄性,
用 f 标记幼年雌性,用 F 标记成年雌性,
用 X 标记放射性突变吸血鬼兔子。

修改程序,使放射性突变吸血鬼兔子只能转化回合结束时位于相邻方格中的兔子。
修改程序,使新生的兔子在母亲兔子旁边的空随机方格中出生。(如果没有空方格,则婴儿兔子不会出生)

★★★★★ 修改程序,使其将每个回合保存到文件中,并能以加速播放所有后续回合。