您的位置:首页 > 编程语言 > C语言/C++

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

2015-07-31 01:54 405 查看


内容简介

1、课程大纲


2、第二部分第十一课: [b][b][b][b][b][b][b][b][b][b][b]练习题和习作[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

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


课程大纲

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

C语言编程基础知识

什么是编程?

工欲善其事,必先利其器

你的第一个程序

变量的世界

运算那点事

条件表达式

循环语句

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

函数

练习题

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

C语言高级技术

模块化编程

进击的指针,C语言王牌

数组

字符串

预处理

创建你自己的变量类型

文件读写

动态分配

实战:“悬挂小人”游戏

安全的文本输入

练习题

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

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

安装SDL

创建窗口和画布

显示图像

事件处理

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

掌握时间的使用

用SDL_ttf编辑文字

用FMOD控制声音

实战:可视化的声音谱线

练习题

数据结构

链表

堆,栈和队列

哈希表

练习题

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

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

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

练习题

什么是全局变量?

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

B. 变量类型任意的变量

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

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

A. #include <time.h>

B. #include "time.h"

C. #include {time.h}

D. #include [time.h]

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

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

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

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

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

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

A. toto的地址

B. toto的值

C. toto指向的变量的值

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

A. NOTHING

B. 1

C. NULL

D. MAIN

E. 0_ADDRESS

有代码如下:

int number = 8;

int *pointer = &number;

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

A. 5000

B. 2500

C. 8

D. 无可预知

数组的下标从几开始?

A. 0

B. 1

C. -1

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

A. double *array[10];

B. double array{10};

C. double array[10];

D. double array[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前多了&号

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

A. #elif

B. #endif

C. #ifdef

D. #ifndef

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

A. 可以

B. 不可以

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

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

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

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

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

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

A. 关闭文件

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

C. 清空文件内容

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

如下代码有什么作用?

malloc(sizeof(int) * 25);

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

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

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

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

什么是缓冲区溢出?

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

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

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

练习题答案

A

A

A

A

C

C

A

C

C

B

A

A

B

B

A

习作

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

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

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

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

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

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

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

我会回复的。

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

第三部分第一课预告:

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

下一次我们学习: 安装SDL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: