内容简介

1、课程大纲

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

3、第三部分第一课预告:  安装SDL


课程大纲

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

C语言编程基础知识

  • 什么是编程?

  • 工欲善其事,必先利其器

  • 你的第一个程序

  • 变量的世界

  • 运算那点事

  • 条件表达式

  • 循环语句

  • 实战:第一个C语言小游戏

  • 函数

  • 练习题

  • 习作:完善第一个C语言小游戏

C语言高级技术

  • 模块化编程

  • 进击的指针,C语言王牌

  • 数组

  • 字符串

  • 预处理

  • 创建你自己的变量类型

  • 文件读写

  • 动态分配

  • 实战:“悬挂小人”游戏

  • 安全的文本输入

  • 练习题

  • 习作:用自己的语言解释指针

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

  • 安装SDL

  • 创建窗口和画布

  • 显示图像

  • 事件处理

  • 实战:“超级玛丽推箱子”游戏

  • 掌握时间的使用

  • 用SDL_ttf编辑文字

  • 用FMOD控制声音

  • 实战:可视化的声音谱线

  • 练习题

数据结构

  • 链表

  • 堆,栈和队列

  • 哈希表

  • 练习题


第二部分第十一课:练习题和习作

这些练习题是帮助大家巩固知识的,其实不难,特别对于有编程经验的人来说,但是我们的教程主要面向的是初学者。

不看答案来完成这15道题目吧,都是单选题。

练习题

  1. 什么是全局变量?

    A. 可以在随处被访问的变量

    B. 变量类型任意的变量

    C. 声明在main函数里的变量

  2. 当我们引入标准库的头文件,使用类似如下的哪一种方式?

    A. #include <time.h>

    B.  #include "time.h"

    C. #include {time.h}

    D. #include [time.h]

  3. C语言的编译按如下那种顺序进行?(这里其实还省略了一步:汇编(用到汇编器,就不赘述了))

    A. 预处理 -> 编译 -> 链接

    B.  编译 -> 链接 -> 预处理

    C. 链接 -> 预处理 -> 编译

    D. 预处理 -> 链接 -> 编译

  4. 如果我写 &toto,我得到的是什么?

    A. toto的地址

    B.  toto的值

    C. toto指向的变量的值

  5. 我们用什么值来初始化指针?

    A. NOTHING

    B. 1

    C. NULL

    D. MAIN

    E. 0_ADDRESS

  6. 有代码如下:

    int number = 8;

    int *pointer = &number;

    假设number位于内存地址5000处,而pointer这个指针位于内存地址2500处,那么如果在接下来的程序中打印 *pointer 的值,是什么呢?

    A. 5000

    B. 2500

    C. 8

    D. 无可预知

  7. 数组的下标从几开始?

    A. 0

    B. 1

    C. -1

  8. 下面哪行代码是用于创建有10个double变量的数组?

    A. double *array[10];

    B. double array{10};

    C. double array[10];

    D. double array[9];

  9. 以下程序有一个错误,是哪一个?

    int main(int argc, char *argv[])

    {

    char city[100];

    printf("请问您住在哪个城市 ? ");

    scanf("%s", &city);

    printf("您住在 %s, 这个城市我很熟悉 !", city);

    return 0;

    }

    A. 第二个printf中的city前少了&号

    B. 在city数组的定义中,city前少了*号

    C. 在scanf的city前多了&号

  10. 哪一个预处理命令表明 #if的结束?

    A. #elif

    B. #endif

    C. #ifdef

    D. #ifndef

  11. 结构体里面可以包含数组吗?

    A. 可以

    B.  不可以

    C. 可以,但仅当数组都是同一种类型时

  12. 为什么通常我们更喜欢用一个函数来初始化结构体?

    A. 一旦结构体做了修改,我们不需要在程序中重做此结构体的所有初始化

    B. 对电脑来说,这样速度更快

    C. 这可以把我的代码变成C++形式的

  13. 在打开一个文件后总是应该做什么事情?

    A. 关闭文件

    B. 测试文件指针的有效性

    C. 清空文件内容

    D. 把光标放在文件首位置

  14. 如下代码有什么作用?

    malloc(sizeof(int) * 25);

    A. 在内存中申请一个25字节的int型变量

    B. 在内存中申请一个int型数组,数组包含25个元素

    C. 在内存中申请一个25字节的float型变量

    D. 在内存中申请一个float型数组,数组包含25个元素

  15. 什么是缓冲区溢出?

    A. 存储的字符串超出了缓冲区的最大容量

    B. 在读缓冲区时进入了死循环

    C. 当我们丢失一个指向字符串的指针时造成的内存泄露


练习题答案

  1. A

  2. A

  3. A

  4. A

  5. C

  6. C

  7. A

  8. C

  9. C

  10. B

  11. A

  12. A

  13. B

  14. B

  15. A


习作

《用自己的语言解释指针》

总是小编说,可能有点唠叨。这回换听官们说说呗。

指针是C语言的精华,也是C语言之所以很灵活强大且具有陷阱的原因。如果学习C语言,不理解指针,那就没掌握精髓。

所以在本次的“习作”中,我们要求大家用自己的语言(当然是中文啊,你不要给我用英语或其他语言... 哈哈)来解释指针,看看大家理解得如何。

如果记不太清楚了,请大家复习我们之前关于指针的那一课:《指针,C语言的王牌》。

将您的解释存放在WORD文档,或TXT文件,或PDF文件里,发送到小编的邮箱(见下方)。

不要一上来就长篇大论,先捋一捋一些指针的基本概念会更好。

我会回复的。

即使你不发送给我,也请自己多看看指针的知识点,可以阅读《C和指针》,《C专家编程》,《C语言深度解剖》等书。


第三部分第一课预告:

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

下一次我们学习: 安装SDL

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

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

    内容简介 1.课程大纲 2.第一部分第九课:函数 3.第一部分第十课预告: 练习题+习作 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

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

    内容简介 1.课程大纲 2.第一部分第一课:什么是编程? 3.第一部分第二课预告:工欲善其事,必先利其器 ​ 课程大纲 不知道为什么,一直对C语言有一种很深厚的“情怀”(类似老罗对锤子手机的那种),说 ...

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

    内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...

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

    内容简介 1.课程大纲 2.第二部分第二课: 进击的指针,C语言的王牌 3.第二部分第三课预告: 数组 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言 ...

  5. 【C语言探索之旅】 第二部分第九课: 实战"悬挂小人"游戏 答案

    内容简介 1.课程大纲 2.第二部分第九课: 实战"悬挂小人"游戏 答案 3.第二部分第十课预告: 安全的文本输入 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题, ...

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

    内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

  7. 【C语言探索之旅】 第二部分第八课:动态分配

    内容简介 1.课程大纲 2.第二部分第八课: 动态分配 3.第二部分第九课预告: 实战“悬挂小人”游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言 ...

  8. 【C语言探索之旅】 第二部分第七课:文件读写

    内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...

  9. 【C语言探索之旅】 第二部分第六课:创建你自己的变量类型

    内容简介 1.课程大纲 2.第二部分第六课: 创建你自己的变量类型 3.第二部分第七课预告:   文件读写 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

随机推荐

  1. Android自己定义组件系列【2】——Scroller类

    在上一篇中介绍了View类的scrollTo和scrollBy两个方法,对这两个方法不太了解的朋友能够先看<自己定义View及ViewGroup> scrollTo和scrollBy尽管实 ...

  2. tolua 有些功能可以用(经过测试)

    tolua 提供几个 C++ 与 Lua 进行数据交换的工具函数. ~~ tolua.type 返回一个 C++ 对象的类型描写叙述字符串. local node = display.newNode( ...

  3. 【Python】Coding the Matrix:Week 5 Perspective Lab

    这个Lab的内容光是说明就有7页之巨,我反复看了很久才看懂一点点,Lab主要完成的是从不同坐标系表示之间变换的方法. 原始的图片,从Camera basis的表示转换成WhiteBoard basis ...

  4. Codeforces Round #253 DIV1 C 馋

    http://codeforces.com/contest/442/problem/C 题意非常easy,基本上肯定有坑坑洼洼的样子.看题目案例,从第三个跟第二个没有凹的案例来看的话,多写几个以及多画 ...

  5. Java垃圾回收机制以及内存泄露

    1.Java的内存泄露介绍 首先明白一下内存泄露的概念:内存泄露是指程序执行过程动态分配了内存,可是在程序结束的时候这块内存没有被释放,从而导致这块内存不可用,这就是内存 泄露,重新启动计算机能够解决 ...

  6. [Sqlite] 移动嵌入式数据库Sqlite日报SQL操作语句汇总

    ,EXPLAIN分析 没有建立索引之前.分析都是表扫描: sqlite> EXPLAIN SELECT *  FROM COMPANY  WHERE Salary < 20000; add ...

  7. 用Javascript评估用户输入密码的强度(Knockout版)

    原文:用Javascript评估用户输入密码的强度(Knockout版) 早上看到博友6点多发的一篇关于密码强度的文章(连接),甚是感动(周末大早上还来发文). 我们来看看如果使用Knockout更简 ...

  8. 数据库关于group by 两个或以上条件的分析

    首先group by 的简单说明:    group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:    (1) 出现在select后面的 ...

  9. ThreadPoolExecutor的应用和实现分析(中)—— 任务处理相关源码分析 线程利用(转)

    前面一篇文章从Executors中的工厂方法入手,已经对ThreadPoolExecutor的构造和使用做了一些整理.而这篇文章,我们将接着前面的介绍,从源码实现上对ThreadPoolExecuto ...

  10. Ubuntu 14.4 使用中遇到的问题汇总

    1.java程序字体问题. 基本的原因是openjdk的缘故 下载最新的jdk安装,地址:http://www.oracle.com/technetwork/java/javase/downloads ...