vc++第7章
C语言习题答案1-7章

程序设计基础(C语言版)习题第01章绪论一.选择题1.以下叙述中正确的是________。
A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整参考答案:D【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。
所以选项A)、B)、C)说法都不完整。
2.以下关于简单程序设计的步骤和顺序的说法中正确的是。
A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构参考答案:B【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。
②算法设计:给出解决问题的步骤,即算法。
③算法表达:选择一种表达算法的工具,对算法进行清晰的表达。
④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。
⑤程序调试:对编写好的程序进行调试,修改程序中的错误。
⑥程序文档编写与程序维护。
综上所述,B)选项是符合上述描述的,其他选项不恰当。
3.以下叙述中正确的是________。
A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完参考答案:C【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。
故本题答案为C)。
4.以下叙述中正确的是。
A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中参考答案:C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。
第七章维生素和矿物质思考及练习题

第七章维生素和矿物质思考及练习题一、名词解释1、维生素(vitamin):是指人和动物为维持正常的生理功能而必须从食物中获得的一类微量有机物质,或者说维生素是细胞为维持正常的生理功能所必须而需量极微的天然有机物质。
简言之,维生素是指生物生长和代谢所必需的一类微量有机物。
2、维生素原(provitamin;previtamin):能在人及动物体内转化为维生素的物质称为维生素原或维生素前提。
换言之,天然存在的维生素前体,在动物体内可转变成有生理活性维生素的物质。
3、同效维生素:化学性质与维生素相似,并有维生素生命活性的物质称为同效维生素。
4、维生素的生物利用率:是指摄入的维生素经肠部吸收和在体内起的代谢功能或利用的程度。
5、矿物质:食品中除去C、H、O、N等四种构成水和有机物质元素外,其他元素统称为矿物质,又称灰分、无机质。
6、生物有效性:食品中营养素被生物体利用的实际可能性。
7、碱性食品:带阳离子金属元素较多的食品,生理上称之为碱性食品,如钠、钾、钙、镁等。
8、酸性食品:带阴离子非金属元素较多的食品,生理上称之为酸性食品,如磷、硫、氯等。
二、填空题1、维生素的生物利用率包括摄入维生素的(吸收)和(利用)两个方面,但与在摄入之前维生素的损失(无关)。
5、饮食由高度地加工食品所组成的人,特别是当(精制米饭)是唯一的食物时容易缺乏【硫胺素(VB1】。
6、所有维生素中最稳定的维生素是【烟酸(VB5)】。
7、维生素B6又名吡哆素,包括(吡哆醇)、(吡哆醛)和(吡哆胺)三种。
8、叶酸最初由(肝脏)分离出来,但后来发现绿色植物(叶子)中含量十分丰富,故名叶酸。
9、VB12为一种红色的晶体物质,它的分子结构比其它维生素的任何一种都要(复杂),而且是唯一含金属元素(钴)的维生素。
10、富含VB12的食品主要是(动物)性食品,(植物)中几乎不存在;所以(素食者)易缺乏。
11、脂溶性维生素包括(维生素A)、(维生素D)、(维生素E)和(维生素K)。
高频电子线路第四版第7章正弦波振荡器

Av
Av 0 1
1
jQL
0
0
arc
tanQ
0
0
图 7.5.4 并联谐振回路的 相频特性
7.6.1 互感耦合振荡器 7.6.2 电感反馈式三端振荡器
(哈特莱振荡器)
7.6.3 电容反馈式三端振荡器 (考毕兹振荡器)
7.6.4 LC三端式振荡器相位平衡条件 的判断准则
放大器与振荡器本质上都是将直流电能转化为交 流电能,不同之处在于:放大器需要外加控制信号而 振荡器不需要。因此,如果将放大器的输出正反回输 入端,以提供控制能量转换的信号,就可能形成振荡 器。
被保留,成为等幅振荡输出信号。(从无到有)
然而,一般初始信号很微弱,很容易被干扰信号淹没,不 能形成一定幅度的输出信号。因此,起振阶段要求
起振条件 A(0 ) F (0 ) 1 (由弱到强)
A (0 ) F (0 ) 2nπ
当输出信号幅值增加到一定程度时,就要限制它继续增加。 稳幅的作用就是,当输出信号幅值增加到一定程度时,
如果由LC谐振回路通过互感耦合将输出信号送
回输入回路,所形成的是互感耦合振荡器。
由互感耦合同名端定义可判知,反馈网络形成 正反馈,满足相位平衡条件。如果再满足起振条件, 就符合基本原理。射基(集)同名
三极管,LC谐振回路
变压器
如果正反馈网络由LC谐振回路中的电感分压电路将输出信号
送回输入回路,所形成的是电感反馈式三端振荡器。
而对于基频和3次泛音频率来 说,回路呈感性,振荡器不满足相 位平衡条件,不能产生振荡。而对 于7次及其以上的泛音频率,回路 呈容性,但其电容量过大,负载阻 抗过小,以致电压增益下降太多, 不能起振。
图 7.8.5 泛音晶体振荡器 交流等效电路
C基础理论题目及考点(课堂讲解)1_7章

第一章部分 C 程序设计的初步知识一、C 语言的构成(1)源程序由函数构成,每个函数完成相对独立的功能。
(2)每个源程序中必须有且只能有一个主函数,可以放在任何位置,但程序总是从主函数开始执行。
(3)函数体:在函数后面用一对花括号括起来的部分。
(4)每个语句以分号结束,但预处理命令、函数头之后不能加分号。
(5)注释:括在“/* ”与“ */”之间,没有空格,允许出现在程序的任何位置。
(6)预处理命令:以“#”开头的语句。
二、C程序的生成过程(1)C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。
(2)源程序的扩展名为.c,目标程序的扩展名为.obj ,可执行程序的扩展名为.exe 。
试题程序#include <stdlib.h> #include <stdio.h>/* ***found*** */ int fun(int n);{/* ***found*** */ int i/* ***found*** */ sum=0;for(i=1;i<=n;i++) {sum=sum+i; }return sum; }一、标识符在C语言中,变量名、函数名、数组名等按照一定规则命名的符号称为标识符。
1. 标识符的命名规则2.标识符的分类C语言的标识符可以分为3类。
(1)关键字:C语言规定的专用的标识符,它们有着固定的含义,不能更改(见课本附录)。
例如int表示变量类型,不能另作它用。
(2)预定义标识符:和“关键字”一样也有特定的含义。
包括: 库函数的名字,如printf 预处理命令,如define这类标识符与关键字的区别是:C 语言语法允许用户更改预定义标识符的作用,但将失去系统规定的含义。
建议用户不要更改。
(3)用户标识符:由用户根据需要定义的标识符。
一般给变量、函数、数组和文件命名。
【例1】以下选项中不合法的标识符是( )。
A) &aB) FORC) printD) 00注意FOR (大小写不同,for 为关键字)二、常量定义:在程序运行中,其值不能被改变的量。
C语言第7章_指针

退出
指针运算
算术运算 int *p, a[10]; p = a; p++; /*p的值增加多少?*/ 的值增加多少? 的值增加多少 指针的加减运算是以其指向的 指针的加减运算是以其指向的 类型的字节长度为单位的 类型的字节长度为单位的
6000 6001 6002 6003 6004 6005 6006
swap函数的几种错误形式(3/3) 函数的几种错误形式 3/3)
指针p没有确切地址 指针 没有确切地址 void Swap(int *p1, int *p2) { int *p; /*指针 未初始化*/ /*指针p未初始化*/ 指针p未初始化 *p = *p1; *p1 = *p2; *p2 = *p; }
退出
寻址方式
如何读写内存中的数据? 如何读写内存中的数据? 两种寻址方式 直接(寻址)访问 直接(寻址)
通过变量地址直接存取变量内容
0 ┇ 3 6 9 ┇ 3010 2000 变量 i_pointer 变量 i 变量 j 变量 k 内存用户数据区
通过变量的地址访问变量所在的 2000 存储单元
2002 2004
退出
指针运算
赋值运算 指针在使用前一定要赋值 为指针变量赋的值必须是一个地址 main() { int *p; scanf("%d",p); … }
错! 但TC下不报错 下不报错 VC下报错 下报错
main() { int a,*p=&a; scanf("%d",p); … }
退出
指针与函数
指针既然是数据类型,自然可以做函数参数和返回值 指针既然是数据类型, 的类型 指针做函数参数的经典例子: 指针做函数参数的经典例子:
C语言程序设计基础 第7章

模块化程序设计的基本要点是贯彻“自顶向下,逐步细 化”的思想方法,即将一个复杂功能的编程问题,划分成若 干个功能相对简单的子问题。这种划分可以逐层进行,直到 便于编程为止。在C语言中,一个模块的功能由一个函数来 实现。顶层函数是主函数main( )。功能模块与C语言函数的 关系如图7.1所示。
图7.1 模块与函数
第7章 函数——模块化程序设计方法的实现
7.1 模块化程序设计方法与函数 7.2 函数的定义 7.3 函数的调用 7.4 函数调用的条件与函数声明 7.5 函数的嵌套调用和递归调用 7.6 变量的作用域与函数间的数据传递 7.7 用函数实现模块化程序设计 实训任务十三 熟悉函数的功能及其使用方法 实训任务十四 学习模块化程序设计的方法
② 函数功能实现部分,是一个程序段,要依据实现某 种功能的算法进行设计。
③ 函数体最后使用一个“return(返回值);”语句,括 号中的返回值是一个需传带给主调函数的数据对象。如果没 有返回值,可以不要这个语句。VC++ 6.0系统中提倡在 main( )函数体后使用一个“return 0;”语句,表示正常返 回系统,否则会出现警告。如果函数体仅是一对花括号,没 有任何语句,就是空函数。空函数一般是无参函数。
7.2 函 数 的 定 义
怎样定义函数?定义函数要考虑哪些问题?
定义函数要解决两个方面的问题:一是函数间的接口问 题,二是功能实现问题。接口问题包括如何被上层函数调用 ,调用时需传递什么数据,调用返回时需传带什么数据。功 能实现问题就是如何实现模块的过程算法。
函数定义的一般形式为
基类型符 函数名(类型符形式参数 1,类型符形式参数 2,…) {
函数体内数据对象定义或声明部分; 函数功能实现部分; return(返 回值); }
第7章振幅调制

第7章振幅调制
(3) 振幅调制:由调制信号去控制载波振幅,使已调信号的振 幅 随调制信号线性变化。
(4) 频率调制:调制信号控制载波频率,使已调波的频率随调 制信号线性变化。
(5) 相位调制:调制信号控制载波相位,使已调波的相位随 调
制信号线变化振。幅 检 波 振 幅 调 制 的 逆 过 程 (6) 解调方式: 鉴 频 调 频 的 逆 过 程
第7章 振幅调制
➢7.1 概述 ➢7.2 振幅调制原理及特性 ➢7.3 振幅调制电路 ➢7.4 振幅调制的解调
第7章振幅调制
重点: 振幅调制波的基本特性(数学表达式,波形
图,频谱图,带宽,功率)。 解调原理
难点: 峰值包络检波器的工作原理
第7章振幅调制
概述
振幅调制
解调(检波) 属于 频谱线性搬移电路
混频(变频)
语言
调制信号:需要传输的信号(原始信号) 图像 vVco st
密码
信号 载波信号:(等幅)高频振荡信号
正弦波 方波
三角波 vcVccoc st ()
锯齿波
已调信号(已调波):经过调制后的高频信号(射频信号)
(1) 调制:用调制信号去控制载波信号的某一个参量的过程 (2) 解调:调制的逆过程,即从已调波中恢复原调制信号的过程
ma
1UmaxUmin 2 Uc
VmaxVc(1ma)
Vc
m VminVc(1ma)
a
ma
0时 1时
ma
1时
未调幅 最大调幅(百分之百) 过调幅,包络失真,
实际电路中必须避免
波形特点:1)调幅波的振幅(包络)变化
规律
与调制信号波形一致
弱程度
2) 调幅度ma反映了调幅的强 一般可m以a值看越出大:调幅越深第7章振幅调制
第7章 维生素与矿物质

水溶性维生素的功能、缺乏症状和食物来源
维生素
B1(硫胺素) 羧
生理功能
参与α-酮酸和2-酮糖氧化脱
缺乏症状
脚气病,肌肉无力,厌食,心悸,心脏变大,水肿
良好食物来源
酵母,猪肉 豆类,葵花籽油
B2(核黄素)
电子(氢)传递
唇干裂,口角炎,畏光,舌炎,口咽部粘膜充血水 动物肝脏,香肠,瘦肉,蘑菇 肿 奶酪,奶油,无脂牛奶,牡蛎 金枪鱼、动物肝脏、牛肉、蘑菇
第一节 食品中的维生素
1.1 Introduction of Vitamins
这类物质在人和动物体内不能合成,或
合成的量不能满足机体的需要,必须从
食物中摄取。
维生素不是机体的主要结构材料,也不 是体内能源物质,但它们在物质的代谢 中起着非常重要的作用。
维生素生理功能的概括
作为辅酶或辅酶前体:如硫胺素、核黄素、叶酸等 作为抗氧化剂保护体系组分:如VC、VE 遗传调节因子:VA,VD、叶酸等
H HCOH HOH2C O
O
O O
D-脱氢抗坏血酸
1、抗坏血酸(VC Ascorbic Acid)
(2)性质
① 抗坏血酸没有羧基,其酸性来自烯二醇的羟基 电离; ② 四种异构体中,L-抗坏血酸的生物活性最高; 其余几种异构体均不具有生物活性,但与L-抗
坏血酸有着相似的化学性质;
1、抗坏血酸(VC Ascorbic Acid)
B3(尼克酸)
电子(氢)传递
癞皮病:腹泻,皮炎,痴呆或精神压抑
B6( 吡哆醇吡哆醛 , 氨基转移反应 吡哆胺) 反应
脱羧
皮炎,舌炎,抽搐
牛排,豆类,土豆,鲑鱼,香蕉
叶酸
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
7.1 文档视图结构
7.1.1 概述 有两种情况不宜采用文档视图结构: 不是面向数据的应用或数据量很少的应用程序,不 宜采用文档视图结构。如一些工具程序包括磁盘扫 描程序、时钟程序,还有一些过程控制程序等; 不使用标准的窗口用户界面的程序,像一些游戏等。
3
7.1 文档视图结构
7.1.2 文档模板 文档模板负责创建文档、视图和框架窗口。 MFC提供了一个文档模板类CDocTemplate支持文档 模板。文档模板类是一个抽象的基类,它定义了文档模 板的基本处理函数接口。由于它是一个抽象基类,因此 不能直接用它来定义对象而必需用它的派生类。对一个 单文档界面程序,使用CSingleDocTemplate(单文档 模板类),而对于一个多文档界面程序,使用 CMultipleDocTemplate。
18
7.2 文档串行化和文件操作
7.2.3 简易文本编辑器 else{ while(1){ try{ ar>>item; lines.AddTail(item); nCount++; } catch(CArchiveException *e){ if(e->m_cause!=CArchiveException::endOfFile){ TRACE0("Unknown exception loading file!\n"); throw; } else{ TRACE0("End of file reached...\n"); e->Delete(); } break; }} nLineNum=nCount; }}
6
7.1 文档视图结构
7.1.4 视图类 视图本质在Windows中就是一个窗口,也就是一个可 视化的矩形区域。视图必需依附于一个框架(SDI中是 MainFrame,MDI是ChildFrame)。视图规定了用户 查看文档数据以及同数据交互的方式。 视图是从CView派生出来的类,提供了 OnInitialUpdate成员函数来初始化视图类的数据成员。 视图类包含一个OnDraw方法,当需要重画视图时,该 函数就会被调用。当窗口或窗口的一部分变成无效的话, 操作系统就会向窗口发送一条WM_PAINT消息。窗口 接收到该消息之后,调用OnPaint完成窗口绘制工作。 图作为一个子窗口,可以处理消息。但是应用程序运行 时,除了视图,还有应用程序对象、主框架窗口、文档 等,它们都是可以处理消息的。
16
7.2 文档串行化和文件操作
7.2.3 简易文本编辑器 【例7-2】编写一个简单文本编辑器,能处理文字输入、可以 选择字体、打开和保存文件功能。 (1)创建项目 (2)添加数据成员,并初始化,修改 OnNewDocument 函数 (3)清理文档类的数据成员,修改DeleteContents (4)修改串行化过程
7
7.1 文档视图结构
7.1.5 文档视图框架互访 文档视图结构的核心就在于文档、视图、框架之间的关联, 形成了一个有机的可运作的整体。在实际项目开发中用的 最多就是各个类之间的互访问
8
7.1 文档视图结构
7.1.5 文档视图框架互访 1.文档和视图间的关联 在实际的开发时候仅仅依靠MFC 向导生成的文档和视 图、框架是不够的。因此,需要掌握手工进行这种关联。 模仿单文档程序向导实现,使用CDocTemplate的构造 函数。 2.框架和视图的关联 框架和视图其实都是窗口,不过框架提供了菜单、标题 栏、状态栏等资源,视图则只是一个矩形区域。MFC 程序中视图决定大多数时候要依附于一个框架,可以这 样理解,框架相当于一个窗口容器,而视图则正好是放 置在框架内客户区域的内容。框架和视图的关联可以通 过模仿MFC应用程序向导实现,使用CDocTemplate 的构造函数实现,和文档和视图间的关联方式相同
13
7.2 文档串行化和文件操作
7.2.1 文档串行化 让用户定义的类支持串行化功能需按下列步骤: 从CObject或其派生类派生出用户的类; 重载Serialize成员函数,加入必要的代码,用以保 存对象的数据成员到CArchive对象以及从 CArchive对象载入对象的数据成员状态; 在类声明文件中,加入DECLARE_SERIAL宏。编 译时,编译器将扩充该宏,这是串行化对象所必需 的; 定义一个不带参数的构造函数; 在实现文件中加入IMPLEMENT_SERIAL宏。
5
7.1 文档视图结构
7.1.3 文档类 定义了文档数据成员后,还要对文档数据成员进行初始 化。一般,类的数据成员的初始化都是在构造函数中完 成的,在构造函数调用结束时对象才真正存在。但对于 文档来说却不同,文档类的数据成员初始化工作是在 OnNewDocument成员函数中完成的,此时文档对象 已经存在。 应用程序对象的OnFileNew消息处理流程 在关闭应用程序删除文档对象时,或用“文件”→“打 开”菜单打开一个文档时,需要清理文档中的数据。同 文档的初始化一样,文档的清理也不是在文档的析构函 数中完成,而是在文档的 CDocument::DeleteContents成员函数中完成的。
4
7.1 文档视图结构
7.1.2 文档模板 一般在应用程序的InitInstance成员函数实现中创建一 个或多个文档模板: CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CEditorDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CEditorView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate);
9
7.2 文档串行化和文件操作
7.2.1 文档串行化 文档串行化(Serialization)是指对象的持续性,即对 象可以将其当前状态,由其成员变量的值表示,写入到 永久性存储体(通常是指磁盘)中。下次可以从永久性 存储体中读取对象的状态,从而重建对象。这种对象的 保存和恢复的过程称为串行化。 文档的串行化在Serialize成员函数中进行。当用户选 择“保存”、“另存为”或“打开”命令时,都会自动 执行这一成员函数。程序框架只给出了一个Serialze函 数的框架,读者要做的时定制这个Serialize函数。
10
7.2 文档串行化和文件操作
7.2.1 文档串行化 Serialize函数的参数ar是一个CArchive类型对象,它 包含一个CFile类型的文件指针(类似于C语言的文件 指针),执行一个文件。CArchive对象为读写CFile (文件类)对象中的可串行化数据提供了一种类型安全 的缓冲机制。通常CFile代表一个磁盘文件;但它也可 以是一个内存文件(CMemFile对象)或剪贴板。一个 给定的CArchive对象只能读数据或写数据,而不能同 时读写数据。当保存数据到archive对象中时,archive 把它放在一个缓冲区中。直到缓冲区满,才把数据写入 它所包含的文件指针指向的CFile对象中。同样的,当 从archive对象读数据时,archive对象从文件中读取内 容到缓冲区,然后再从缓冲区读入到可串行化的对象中。 这种缓冲机制减少了访问物理磁盘的次数,从而提高了 应用程序的性能。
14
7.2 文档串行化和文件操作
7.2.1 文档串行化 【例7-1】编写一个单文档程序能实现,能够选择绘制圆和直 线两种图形,并且利用串行化技术能够保存图形数据。 (1)创建项目 (2)修改文档类 (3)修改视图类头文件 (4)添加资源 (5)处理鼠标消息 (6)处理OnDraw绘制图形
15
7.2 文档串行化和文件操作
7.2.2 文件操作CFile 使用串行化技术可以实现文档的存取操作,使用CFile 也可使显示文件的各类操作,CFile是MFC提供的一个 类,它提供了访问二进制文件的接口。 CFile::Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL ; CFile::Read(void* lpBuf, UINT nCount); CFile::Write( const void* lpBuf, UINT nCount );
19
7.2 文档串行化和文件操作
7.2.3 简易文本编辑器 (5)为视图类添加成员 (6)初始化视图,修改OnInitialUpdate (7)处理键盘消息 (8)选择字体 (9)修改绘图OnDraw函数 (10)释放字体资源
11
7.2 文档串行化和文件操作
7.2.1 文档串行化 Serialize函数的参数ar是一个CArchive类型对象,它 包含一个CFile类型的文件指针(类似于C语言的文件 指针),执行一个文件。CArchive对象为读写CFile (文件类)对象中的可串行化数据提供了一种类型安全 的缓冲机制。通常CFile代表一个磁盘文件;但它也可 以是一个内存文件(CMemFile对象)或剪贴板。一个 给定的CArchive对象只能读数据或写数据,而不能同 时读写数据。当保存数据到archive对象中时,archive 把它放在一个缓冲区中。直到缓冲区满,才把数据写入 它所包含的文件指针指向的CFile对象中。同样的,当 从archive对象读数据时,archive对象从文件中读取内 容到缓冲区,然后再从缓冲区读入到可串行化的对象中。 这种缓冲机制减少了访问物理磁盘的次数,从而提高了 应用程序的性能。
17
7.2 文档串行化和文件操作
7.2.3 简易文本编辑器 void CEditorDoc::Serialize(CArchive& ar){ int nCount=0; CString item(_T("")); if (ar.IsStoring()){ POSITION pos; pos=lines.GetHeadPosition(); if(pos==NULL) return; while(pos!=NULL){ item=lines.GetNext(pos); ar<<item; item.Empty(); } }