【C语言探索之旅】 第一部分第十课:练习题+习作

内容简介

1、课程大纲

2、第一部分第十课: 练习题+习作

3、第二部分第一课预告: 模块化编程

课程大纲

我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案。还会带大家用C语言编写三个游戏。

C语言编程基础知识

  • 什么是编程?
  • 工欲善其事,必先利其器
  • 你的第一个程序
  • 变量的世界
  • 运算那点事
  • 条件表达式
  • 循环语句
  • 实战:第一个C语言小游戏
  • 函数
  • 练习题
  • 习作:完善第一个C语言小游戏

C语言高级技术

  • 模块化编程
  • 进击的指针,C语言王牌
  • 数组
  • 字符串
  • 预处理
  • 创建你自己的变量类型
  • 文件读写
  • 动态分配
  • 实战:“悬挂小人”游戏
  • 安全的文本输入
  • 练习题
  • 习作:用自己的语言解释指针

用基于C语言的SDL库开发2D游戏

  • 安装SDL
  • 创建窗口和画布
  • 显示图像
  • 事件处理
  • 实战:“超级玛丽推箱子”游戏
  • 掌握时间的使用
  • 用SDL_ttf编辑文字
  • 用FMOD控制声音
  • 实战:可视化的声音谱线
  • 练习题

数据结构

  • 链表
  • 堆,栈和队列
  • 哈希表
  • 练习题

第一部分第十课:练习题+习作

第一部分课程已经全部结束,在开始第二部分的探索之旅之前,我们必须巩固好第一部分学到的知识

所以为大家准备了一些练习题: 15道选择题+一个小小的习作

15道题目(单选)在本课最后有附答案,但是希望大家先做完再对答案。

练习题

  1. 负责将源代码转换成二进制码的程序叫什么?

    A. 扬声器

    B. 编译器

    C. 转码器

  2. 下面哪一个不是IDE(集成开发环境)?

    A. NotePad++

    B. Visual Studio

    C. Code::Blocks

    D. Xcode

  3. C语言将哪一个值视为布尔值的false(假)?

    A. 1

    B. 0

    C. -1

    D. -2

  4. 下面这段代码中的 return 0; 意味着什么?

    #include <stdio.h>

    int main()

    {

    printf("Hello world!\n");

    return 0;

    }

    A. 程序没有执行操作

    B. 程序没有正常运行

    C. 程序正常运行

  5. 以下哪一个是C语言中的换行符?

    A. \t

    B. \n

    C. 按一下键盘上的回车键就够了

  6. 如果我有一个变量bankAccount(银行账户),类型是long,其值为6500000(土豪啊),那下面的代码会输出什么?

    printf("您的银行账户上有 %ld 元\n", bankAccount);

    A. 您的银行账户上有 %ld 元

    B. 您的银行账户上有 6500000 元

    C. 您的银行账户上有 ld 元, bankAccount

  7. 以下哪一种存储器是在电脑关闭之后不会被清空的?

    A. 寄存器

    B. 高速缓存

    C. 内存

    D. 硬盘

  8. 经过这个操作,result变量的值是多少?

    result = (8 / 3) - 2;

    A. -2

    B. 0

    C. 1

    D. 2

  9. 以下switch语句的问题是什么?

    switch (variable)

    {

    case 5:

    printf("Hello");

    case 12:

    printf("你好");

    default:

    printf("再见");

    }

    A. 少了break语句

    B. 在switch的最后的大括号后面少了一个分号

    C. 对每一个case下面的指令需要用一个大括号括起来

    D. default应该写成case default

  10. 用哪一个for循环可以在屏幕上显示以下信息?

    Line n°1

    Line n°3

    Line n°5

    Line n°7

    A. for (count = 1 ; count < 9 ; count += 2)

    B. for (count = 1 ; count <= 7 ; count++)

    C. for (count = 0 ; count < 9 ; count += 2)

    D. for (count = 1 ; count < 8 ; count++)

  11. 以下代码会显示多少次“Hello”?

    int count = 14;

    while (count < 15)

    {

    printf("Hello\n");

    }

    A. 0

    B. 1

    C. 14

    D. 15

    E. 这是一个无限循环

  12. 在哪种情况下return语句不是必须的?

    A. 函数没有参数

    B. 函数的类型是void

    C. 函数需要返回0值

  13. 什么是函数的参数?

    A. 标明函数的名字

    B. 标明函数的返回值

    C. 我们传给函数使它用来工作的变量

  14. 以下函数存在什么问题?

    int square(int number)

    {

    int result = 0;

    result = number * number;

    }

    A. 函数没有返回任何值

    B. 函数运行不了,因为我们在某处忘了一个分号

    C. 完全没有问题

  15. 在一个程序中可以包含多少个函数?

    A. 只有一个,就是main函数

    B. 最多100个

    C. 最多1024个

    D. 没有限制

练习题答案

  1. B. 编译器
  2. A. NotePad++
  3. B. 0
  4. C. 程序正常运行
  5. B. \n
  6. B. 您的银行账户上有 6500000 元
  7. D. 硬盘
  8. B. 0
  9. A. 少了break语句
  10. A. for (count = 1 ; count < 9 ; count += 2)
  11. E. 这是一个无限循环
  12. B. 函数的类型是void
  13. C. 我们传给函数使它用来工作的变量
  14. A. 函数没有返回任何值
  15. D. 没有限制

题目都不难,认真复习一下肯定能得高分,你都答对了吗?

有什么疑问可以在公众号里直接留言提问,或者联系小编,谢谢!

习作: 完善“或多或少”这个小游戏

前面一个我们编写了第一个C语言小游戏,虽然很简单,没有好看的图形界面(之后会有的,牛奶和面包都会有的),但是也可以小小自豪一下!

现在我们重新给出它的源代码:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main (int argc, char** argv)

{

int mysteryNumber = 0, guessNumber = 0;

const int MAX = 100, MIN = 1;

// 生成随机数

srand(time(NULL));

mysteryNumber = (rand() % (MAX - MIN + 1)) + MIN;

/* 程序的循环部分, 如果用户没猜中数字,就一直进行循环 */

do

{

// 请求用户输入所猜数字

printf("这个数字是什么 ? ");

scanf("%d", &guessNumber);

// 比较用户输入的数字和神秘数字

if (mysteryNumber > guessNumber)

printf("猜小了 !\n\n");

else if (mysteryNumber < guessNumber)

printf("猜大了 !\n\n");

else

printf ("太棒了,你猜到了这个神秘数字 !!\n\n");

} while (guessNumber != mysteryNumber);

return 0;

}

程序的解释(从上到下的顺序):

  1. 预处理指令:就是开头的那三行,以#开始,include是英语“包含,引入”的意思。所以表示引入什么库。之前我已经给大家这部分的代码了,所以如果你的程序运行起来出错是在这部分的话,那你也是够够的了 :P
  2. 变 量:这个游戏中,不需要太多变量,只有一个用于记录用户输入的数字的变量guessNumber,和一个电脑随机抽取的数字mysteryNumber。 同时也定义了两个常量(const变量,其实叫只读变量比较准确)MAX和MIN,值分别是100和1。这样定义的好处是,如果你后面要改这两个数值,会 很方便,直接改这一行的两个值就好了。如果没有用MAX和MIN而是在程序里每一个地方写100和1的话,那如果以后要改数值,工作量就大了。
  3. 随机数:srand和rand那两行,产生在1和100之间的一个随机数,值赋给mysteryNumber。
  4. 循 环:我选择了用do...while循环。理论上一个while循环也可以做到,但我觉得这里用do...while可能更合逻辑。为什么呢?还记得 do...while循环的特点吗?就是循环体里的指令至少会执行一次,不像while循环可能一次也不执行。这里我们至少要让用户输入一次数字,不可能 用户一次也不输入就猜到了数字。
  5. 在每一次进入循环体里运行时,我们都请求用户输入一个数字,并且把这个数字的值赋给guessNumber变量,接下来就比较guessNumber和mysteryNumber(需要猜的数字)的大小:

    mysteryNumber大于guessNumber,那么输出“猜小了”,继续循环

    mysteryNumber小于guessNumber,那么输出“猜大了”,继续循环

    mysteryNumber等于guessNumber,也就是else语句的情况,即是说我们猜对了,输出“太棒了,你猜到了这个神秘数字!”,结束循环

循环也需要一个条件,我们给出的条件是:只要猜的数字和神秘数字不一样,循环就继续。

现在这个游戏还是很基础很简单的,但是可以有以下的改进方案:

  1. 增加一个记录步数的计数器,在你猜对的时候输出:“太棒了,你用**步猜到了这个神秘数字!”
  2. 目 前的程序只进行一轮就结束了,如果玩家不过瘾,还想继续下一轮怎么办呢?可以加入一个问题:“你还想继续玩吗?”,等待用户输入数字来回答。定义一个布尔 值continue来存储用户输入的回答,比如continue的默认值是1,就是用户默认是继续玩下一轮的,但如果用户输入0,那么程序停止,游戏结束
  3. 增加一个模式:两人模式。可以你出题我来猜。但是我希望你能够在程序一开始就让用户选择是玩哪一种模式,是经典的人机对战,还是人人对战。如果是两人模式的人人对战,那么就不是用srand和rand来产生神秘数字了,而是让玩家一通过scanf来输入这个数字
  4. 设 置几个难度级别,让玩家选择:初级(1-100中的一个数),中级(1-1000中的一个数),高级(1-10000中的一个数)。如果你这样设计,就需 要改写MAX值了,而此时MAX就不能再是一个const变量了,必须要把MAX前面的const去掉,MIN的还能保留。

大家可以自己改进和扩充这个小游戏,使之更具可玩性和难度

完善好的源代码可以用公众号直接发给小编,或者发到小编的联系方式中,欢迎交流,谢谢!

第二部分第一课预告:

今天的课就到这里,一起加油咯。

第一部分结束了,该开启第二部分的旅程了!

下一次我们学习第二部分第一课,来认识一下模块化编程吧!

程序员联盟
微信公众号*您若觉得本文不错,请点击画面右上角《···》按钮“分享到朋友圈”或“发送给朋友”

*新朋友请关注「程序员联盟」微信搜公众号
 ProgrammerLeague

小编微信号:

frogoscar

小编QQ号:  379641629

小编邮箱:    [email protected]

(微信和邮箱最常用)

PS: 有朋友反映看手机端的文章太累,其实是可以用浏览器网页来看的

方法1. 点击画面右上角的《···》按钮,然后选择“复制链接”,再把链接黏贴到你的浏览器里面或用邮件发送给自己,就可以在电脑的浏览器里打开了

方法2. 头条网www.toutiao.com,搜索我的自媒体“程序员联盟”,里面有所有文章,也可以直接进这个链接:http://www.toutiao.com/m3750422747/

新朋友如何查看所有文章:

点击“查看公众号”,再点击“查看历史消息”

“程序员联盟”公众号专为程序员,App设计师,各位喜爱编程和热爱分享的小伙伴们推送各样编程相关知识,优秀软件推荐,业界动态等。搜索

ProgrammerLeague 加关注~

持续关注 程序员联盟 微信公众号,更多有趣,有料,有亮点的内容等着你哦!

点击下方“阅读原文”查看 Dennis
Ritchie编著的《C程序设计语言》第二版中文版PDF 百度云盘下载 (可以在手机上点开文件直接看)

↓↓↓

时间: 2024-08-01 10:42:20

【C语言探索之旅】 第一部分第十课:练习题+习作的相关文章

【C语言探索之旅】 第二部分第二课:进击的指针,C语言的王牌!

内容简介 1.课程大纲 2.第二部分第二课: 进击的指针,C语言的王牌 3.第二部分第三课预告: 数组 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型

【C语言探索之旅】 第二部分第九课: 实战&quot;悬挂小人&quot;游戏

内容简介 1.课程大纲 2.第二部分第九课: 实战"悬挂小人"游戏 3.第二部分第十课预告: 安全的文本输入 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建

【C语言探索之旅】 第二部分第九课: 实战[悬挂小人]游戏

内容简介 1.课程大纲 2.第二部分第九课: 实战"悬挂小人"游戏 3.第二部分第十课预告: 安全的文本输入 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建

【C语言探索之旅】 第一部分第九课:函数

内容简介 1.课程大纲 2.第一部分第九课:函数 3.第一部分第十课预告: 练习题+习作 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能

【C++探索之旅】第一部分第十课:文件读写,海阔凭鱼跃

内容简介 1.第一部分第十课:文件读写,海阔凭鱼跃 2.第一部分第十一课预告:小练习,猜单词 文件读写,海阔凭鱼跃 上一课<[C++探索之旅]第一部分第九课:数组威武,动静合一>中,我们学习了动态数组和静态数组,也看到其实字符串很类似字符数组(到了之后的第二部分,学习面向对象,我们会知道其实string是一个类). 到目前为止,我们写的程序还比较简单,当然了,因为我们刚开始学习C++嘛.但只要加以训练,我们就慢慢地能够写一些真正的应用了.我们也开始逐渐了解C++的基础知识了,不过缺了很重要的一

Linux探索之旅 | 第五部分第二课:一入Shell深似海,酷炫外壳惹人爱

-- 简书作者 谢恩铭 转载请注明出处 内容简介 前言 Shell是什么? 我们的第一个Shell脚本 运行Shell脚本 总结 第五部分第三课预告:变量在手,Shell不愁 1. 前言 上一课是 Linux探索之旅 | 第五部分第一课:Vim岂是池中物,宝剑锋从磨砺出 . 现在,我们已经学习了 Vim 这样强大的文本编辑器.相信我,Vim 对我们之后的课程会非常有用. 这一课我们可以进入第五部分的重心了:Shell 编程. 什么是Shell呢? 首先,shell 是英语"壳,外壳"的

【C语言探索之旅】 第二部分第一课:模块化编程

内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

【C语言探索之旅】 开宗明义及第一课:什么是编程?

内容简介 1.课程大纲 2.第一部分第一课:什么是编程? 3.第一部分第二课预告:工欲善其事,必先利其器 ? 课程大纲 不知道为什么,一直对C语言有一种很深厚的"情怀"(类似老罗对锤子手机的那种),说不出来. 也许因为C语言是很多前辈谆谆教诲说一定要学一下的一门编程语言:也许因为C语言是自己学习的专业"嵌入式系统"的首要语言:也许因为C语言自1972年诞生以来历经43年依然独领风骚,位列编程语言排行榜首位:也许因为"C语言之难,难于上青天",自己