《从问题到程序》第三章学习笔记

知识总结

pan_area(3.24)是函数调用表达式,表示用实参3.24去调用函数pan_area。double pan_area(double r)表示本函数的名字是pan_area,其返回值类型是double。这个函数只有一个参数,所以参数表里只有一对类型描述和参数名,说明参数的类型是double,名字是r。

int main() {
    ......
   return 0;
}

以main为名字的函数的地位特殊,它表示这个程序的执行起点和整个过程。在一个C程序启动时,其执行就从它的main函数的体开始,一条条地执行其中的语句。到这个函数结束(语句都执行完了或遇到return语句退出),这个程序的执行就完成了。因此人们也常把main函数称为主函数。C语言规定main的返回值类型是int,通常用返回0表示程序正常结束,如果main函数没有执行return语言就结束了,系统将自动产生一个表示程序正常结束的值(通常就是0)。

条件表达式

条件表达式的形式是:

表达式1 ? 表达式2 : 表达式3

计算时先算表达式1;如果其值非0(条件成立)就计算表达式2,用它的值作为整个条件表达式的值;如果表达式1值是0就计算表达式3,用它的值作为整个条件表达式的值。

逻辑表达式

C语言的逻辑运算符是 !、&& 和 || ,它们分别表示否定、并且和或者三种逻辑运算。

人们提出了程序执行的三种基本流程模式,即顺序执行、选择执行和重复执行。

语句

1.条件语句:if 语句

条件语句有两种形式:

if (条件)语句

if(条件)语句1 else 语句2

第一种形式:首先求出条件的值,其值非0时就执行语句,该语句的完成也是整个条件语句的完成;否则(条件为0)就不执行语句,整个条件语句直接完成。

第二种形式:首先求出条件的值,其值非0时就执行语句1,否则(值是0)执行关键字else后的语句2。这两个语句之一执行完成时条件语句完成。

2.循环语句: while 语句

其形式是:

while(条件)语句

这里的语句称为循环体,同样可以是复合语句或其他控制结构,包括循环结构(这种情况称为多重循环)。也就是:(1)首先求出条件的值;(2)如果条件的值为0则整个while语句结束;否则(3)执行循环体,而后回到(1)继续。

3.循环语句: for 语句

其形式是:

for (表达式1;表达式2;表达式3)语句

其中表达式1完成变量的初始设置(用赋值表达式),表达式2是确定循环是否继续的条件,表达式3常用于循环变量更新,语句部分是循环体。其执行方式是:

(1)求表达式1的值,这件事只做一次,这里通常写给循环变量设初值的赋值表达式;

(2)求表达式2的值,如果得到0则循环结束,否则继续;

(3)执行作为循环体的语句;

(4)求表达式3的值,这里通常写更新循环变量的赋值表达式;

(5)转到(2)继续执行。

格式输出函数scanf

scanf是最常用的输入函数。scanf(格式描述串,&变量名,....)

问题与解决

1.while和for循环的的区别?

共同点:C/C++中的for循环代码和while循环代码分别在GCC中生成的汇编代码是相同的。即两者在表达能力上是等价的。

不同点:

1.循环条件

for循环的循环条件一般是循环变量(i、j、k)。

while循环的循环条件可以是循环变量(i、j、k),也可以是表达式。

2.循环条件的设定位置

for循环的循环变量可以在for循环的内部设定,在for循环结束之后就释放掉了;同样,也可以在for循环的前面设定,在for循环结束之后并没有释放掉。

while循环的循环变量或者表达式必须在while循环的前面设定,在while循环结束之后并没有释放掉。

3.适用场合

for循环适用于循环的开始和结束已知,循环次数确定的场合。

while循环适用于循环次数不确定的场合。

2.语句“X++;”和“X=X+1;”的区别?

如果X是简单变量,语句“X++;”和“X=X+1;”的意义相同。差别在于:在语句“X++;”执行中只计算X一次,而在语句“X=X+1;”执行中要计算X两次。

3.if(x > 0){ if(y >1) z =1; } else z= 2;这个 else 部分属于哪个 if ?

C语言的规定是,每个else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。

时间: 2024-10-10 18:24:18

《从问题到程序》第三章学习笔记的相关文章

《Linux命令行与shell脚本编程大全》 第三章 学习笔记

第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r 启动限制性shell,限制用户在默认目录下活动 -i 启动交互性shell,允许用户输入 -s 从标准输入读取命令 环境变量PS1.PS2 PS1:控制默认命令行提示符格式 PS2:控制后续命令行提示符格式   bash shell提示符字符串中使用的特殊字符 字符 描述 \a 报警字符 \d “日 月 年”格式显示的日期 \e

linux第三章学习笔记

第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种. 进程管理是所有操作系统的心脏所在. 一.进程 1. 进程是处于执行期的程序.除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部数据.一个或者多个执行线程等多种资源 线程是在进程活动中的对象:内核调度的对象是线程而不是进程 在Linux系统中,并不区分线程和进程 可能存在两个或者多个进程执行的是同一个程序:甚至N个进程共享打开的文件.地址空间之类的资源 2. 线程:是进程中活动的对象.每个线程都有一个独立的程序计数器,进程栈

《Linux内核设计与实现》第三章学习笔记

第三章  进程管理 姓名:王玮怡  学号:20135116 一.进程 1.进程的含义 进程是处于执行期的程序以及相关资源的总称,程序本身并不是进程,实际上就是正在执行的代码的实时结果.Linux内核通常把进程也叫“任务”. 2.线程的含义 执行线程简称线程,是在进程中互动的对象.内核调度的对象是线程而不是进程.Linux系统不区分线程和进程,线程只是一种特殊的进程. 3.进程的执行过程 (1)clone()调用fork(),通过复制一个现有进程来创建一个全新的进程,进程开始存活.其中调用fork

《Java从入门到精通》第三章学习笔记

第3章 Java语言基础 一.标识符和关键字 1.Java中的标识符用于标识类名.变量名.方法名.数组名.文件名. 2.标识符的命名规则:由字母.数字.下划线和美元符号组成,但第一个字符不能是数字.同时标识符不能选用Java的关键字和保留字. 3.一般的约定命名规则: (1)类和接口名:每个词首字母大写,如MyClass,HelloWorld: (2)方法名:第一个词的首字母小写,其余词首字母大写,尽量少用下划线,如myMethod,myGetData: (3)常量名:基本数据类型的常量名全部用

《程序员的自我修养》第三章学习笔记

1,  编译器编译源代码生成的文件叫做目标文件. 从结构上说,是编译后的可执行文件,只不过还没有经过链接 3.1 目标文件的格式 1,可执行文件的格式: Windows下的PE  和   Linux下的ELF 2,从广义上说,目标文件与可执行文件的格式几乎是一样的,所以广义上可以将目标文件与可执行文件看成是一种类型的文件. 3,可执行文件,动态链接库,静态链接库都按照可执行文件格式存储(Windows下是 PE-COFF格式,Linux下是ELF格式). 4,Linux下命令: $: file 

第三章学习笔记

一.进程 1.进程就是出于执行期的程序 2.执行线程,简称线程,是在进程中活动的对象 3.进程提供两种虚拟机制:虚拟处理器和虚拟内存 二.进程描述符和任务结构 1.内核把进程的列表存放在焦作任务队列的双向循环链表中,其中每一项都是类型为task_struct.称为进程描述符的结构 2.进程描述符的分配和存放: (1)目的:Linux通过slab分配task_struct结构,以达到对象复用以及和缓存着色的目的(避免资源动态分配和释放带来的资源消耗) (2)分配:每个任务的堆栈尾端(比如,对于向上

Scala第三章学习笔记

换行后的左大括号造成的问题: class FooHolder { def foo() { println("foo was called") } } Scala认为def foo()这行代码定义了一个抽象方法.这是因为它没有捕捉到后面的大括号,认定def foo()是完整的一行语句.当编译时,它认为这是一个洗呢匿名代码块,应该在类构建过程中执行. 解决办法:加一条新的编码规定,要求所有的方法定义使用"="语法. trait FooHolder2{ def foo()

《Linux内核设计与实现》第一、二章学习笔记

<Linux内核设计与实现>第一.二章学习笔记 姓名:王玮怡  学号:20135116 第一章 Linux内核简介 一.关于Unix ——一个支持抢占式多任务.多线程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统 1.主要发展过程   1969年,贝尔实验室的程序员们设计了一个文件系统原型,最终发展演化成了Unix 1971年,Unix被移植到PDP-11型机中 1973年,整个Unix系统使用C语言进行重写,为后来Unix系统的广泛移植铺平了道路 Unix第六版(V6)被贝尔实

Android深度探索——第三章读书笔记及心得

了解Git ——第三章读书笔记及心得 对于Android的理解是从这学期才开始,所以不可谓说是了解的太少太少.对于Linux虽然经过了一学期的学习.经过一次紧张的实训,但是了解的也不是很多.不过我终究是知道Android和Linux是开源的,这是很多老师都曾经告诉我们的.虽然Git并不是学习Android和Linux开发必须掌握的技术,但是对于想要认真学习好这门技术的我们来说应该要努力掌握好这门技术.就像书上说的学习新技术的方式不是一味的读书,只会纸上谈兵.更应该深入的理解自己感兴趣的源代码,通