一份C学习资料与习题解答.pdf
《一份C学习资料与习题解答.pdf》由会员分享,可在线阅读,更多相关《一份C学习资料与习题解答.pdf(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一 份 C学 习 资 料 与 习 题 解 答 第 1 章 C语 言 程 序 的 基 本 构 成 1.1本 章 要 点 1.用 C 语 句 所 写 的 序 列 称 为 C源 程 序,它 的 后 缀 为.c。C 源 程 序 经 过 编 译(c o m p ile)后 生 成 一 个 目 标 文 件(.o b j),链 接 库 函 数 后 生 成 可 执 行 文 件(.exe)。2.结 构 化 程 序 的 三 种 结 构:顺 序 结 构、选 择 结 构 和 循 环 结 构.(1)顺 序 结 构 的 程 序 是 一 条 语 句 接 一 条 语 句 顺 序 地 往 下 执 行,一 直 到 程 序 结 束
2、。例 如:int x,y;scanf(%d,&x);y=x*x;printf(y=%d n,y);以 上 4 条 语 句,顺 序 地 往 下 执 行。(2)分 支 结 构 指 在 程 序 执 行 过 程 中,程 序 的 流 程 可 由 多 路 分 支 组 成,根 据 不 同 的 条 件 去 执 行 不 同 的 任 务。例 如:int x;if(x0)printff a%d 的 值 大 于 0 n,x);elseprintff a%d 的 值 小 于 0n”,x);以 上 if-e lse语 句 根 据 x 是 否 大 于 0,只 执 行 一 条 分 支。(3)循 环 结 构 是 指 在 程 序
3、 中 需 要 根 据 某 项 条 件 重 复 地 执 行 某 项 任 务 若 干 次,直 到 满 足 或 不 满 足 某 条 件 为 止,这 就 构 成 循 环 结 构。例 如:int x=100/sum=0;while(x=l)(sum=sum+x;)3.算 法 是 指 解 决 问 题 所 使 用 的 一 系 列 合 乎 逻 辑 的 解 题 步 骤,程 序 可 以 认 为 对 算 法 的 具 体 实 现,即:算 法+数 据 结 构=程 序。例 如:有 如 图 所 示 的 环,剪 开 一 个 环 作 为 一 种 操 作,作 怎 么 样 的 最 小 操 作,能 呈 现 最 多 的 状 态?例 如
4、:如 何 在 数 列 23,4,56,-9,100,2,45,0,87,10中 查 找 最 大 数?具 体 的 算 法 为:第。步:比 较 开 始;第 1 步:把 第 1 个 数 2 3作 为 当 前 最 大 值;第 2 步 1 当 前 最 大 值 第 2 个 数 比 较,获 取 当 前 最 大 值 23;第 3 步:当 前 最 大 值 第 3 个 数 比 较,获 取 当 前 最 大 值 56:第 4 步:当 前 最 大 值 第 4 个 数 比 较,获 取 当 前 最 大 值 56;第 5 步:当 前 最 大 值 第 5 个 数 比 较,获 取 当 前 最 大 值 100;第 1 0步:当 前
5、 最 大 值 第 1 0个 数 比 较,获 取 当 前 最 大 值 100;第 1 1步:比 较 结 束。程 序 代 码 为:mt a口 0=23,4,56,9,100,2,45,0,87,10;int i,max;max=a0;for(i=l;imax)max=ai;printf(max=%dn,max);4.流 程 图 是 一 种 用 图 解 方 式 来 说 明 解 决 一 个 方 案 所 需 完 成 的 一 系 列 操 作。例 如:为 了 对 上 述 求 解。5.C 语 言 是 结 构 化 的 程 序 设 计 语 言,C 程 序 由 一 个 或 多 个 文 件 构 成,而 文 件 可 由
6、 一 个 或 多 个 函 数 组 成,函 数 由 语 句 构 成,表 示 语 句 结 束,语 句 由 表 达 式 构 成,表 达 式 由 保 留 字、标 识 符、运 算 符 构 成。(1)函 数 的 原 型 如 下:函 数 返 回 值 函 数 名(形 式 参 数 表);例 如 函 数:double add(double,double);(2)函 数 代 码 类 型 函 数 名(形 式 参 数 声 明)函 数 体 数 据 声 明 部 分 语 句 部 分 例 如 函 数 定 义:double add(double x,double y)/*类 型 函 数 名(形 式 参 数 声 明)*/doubl
7、e z;/*数 据 声 明 部 分*/z=x+y;/*以 下 两 行 为 语 句 部 分*/return z;(3)常 见 的 保 留 字 保 留 字 是 指 C 语 言 中 有 特 殊 含 义 的 字,只 能 用 于 C 语 言 中 特 定 的 场 合。例 如:int:用 于 定 义 整 型 变 量。float:用 于 定 义 实 型 变 量。double:用 于 定 义 双 精 度 变 量。char:用 于 定 义 字 符 变 量 或 字 符 串 变 量。if:用 于 判 断。for:用 于 循 环。while:用 于 循 环。(4)标 识 符 标 识 符 分 为 系 统 命 名 的 标
8、识 符 与 用 户 自 命 名 标 识 符。通 常 用 户 自 定 义 标 识 符 以 字 母 或 下 划 线 开 头,由 字 母、数 字 和 下 划 线 组 成。6.常 量(1)整 型 常 量 的 表 示 方 法:023、0 x23、2 3等。(2)实 型 常 量 的 表 示 方 法:2.71828,0.0、.54、0.3e2等。(3)字 符 常 量 的 表 示 方 法:W注 意:转 义 字 符 常 量,如,n 1 0 1、1 4 1,只 代 表 一 个 字 符。反 斜 线 后 的 八 进 制 数 可 以 不 用 0 开 头,如 1 0 1,代 表 的 就 是 字 符 常 量 K。反 斜 线
9、 后 的 十 六 进 制 数 只 可 由 小 写 字 母 x 开 头,不 允 许 用 大 写 字 母 X,也 不 能 用 O x开 头,如,X 4 I代 表 字 符 常 量 7V。7.变 量 在 程 序 设 计 中,使 用 变 量 前 都 需 要 定 义,定 义 变 量 意 味 着 给 变 量 分 配 存 储 空 间,变 量 的 定 义 格 式 为:类 型 变 量 名;例 如 定 义 两 个 整 型 变 量 x、yint x,y;在 程 序 中 变 量 的 地 址 是 用“&变 量 名”来 表 示 的。8.字 符 串 字 符 串 常 量 是 由 双 引 号 括 起 来 的 一 串 字 符,如
10、string就 是 字 符 串 常 量。在 C 语 言 中,系 统 在 每 个 字 符 串 的 最 后 自 动 加 入 个 字 符 0作 为 字 符 串 的 结 束 标 志。(1)字 符 串 的 结 束 符 0占 内 存 空 间,但 在 测 试 字 符 串 长 度 时 不 计 在 内,也 不 输 出。(2)为 字 符 串 的 结 束 符,但 遇 到,0,不 一 定 是 字 符 串 的 结 束,可 能 是 八 进 制 数 组 成 的 转 义 字 符 常 量,如 字 符 串 abc067de表 示 6 个 字 符,并 非 为 3 个,因 067,为 一 个 转 义 字 符。9.运 算 符 在 C
11、程 序 中 有 极 为 丰 富 的 运 算 符,例 如 算 术 运 算 符、关 系 运 算 符、逻 辑 运 算 符、位 运 算 符 等。(1)算 术 运 算 符 有+、-、*、-、+、-等 操 作。注 意:只 能 适 用 于 整 型 数 运 算,表 达 式 y=(x+)与 丫=*+等 同。(2)关 系 运 算 符 主 要 用 于 比 较,、=、=的 优 先 级 高 于=、!=逻 辑 运 算 符 有 逻 辑 与&、逻 辑 或|和 逻 辑 非!。(4)位 运 算 符 有、&、|、八、10.编 辑 C程 序 时 应 注 意 的 问 题 编 辑 C 程 序 对 应 注 意 的 问 题 如 下:(1)C
12、 程 序 中 区 分 大 小 写 字 母,书 写 格 式 自 由,一 行 内 可 写 几 个 语 句。(2)用“;”作 为 语 句 的 结 束 标 记。(3)函 数 定 义 如:main()、命 令#include stdio.h、#define PI 3.14159不 是 语 句,后 面 不 能 用;号。(4)注 释 用 符 号“/*”和“*/”来 界 定,“/”和“*”之 间 不 可 以 有 空 格。(5)可 运 行 程 序 中 必 须 有 一 个 m ain函 数,且 只 能 有 一 个 m ain函 数。(6)个 好 的 程 序 应 该 有 详 细 的 注 释。1.2课 本 练 习 参
13、 考 答 案 一、选 择 题 1.()是 构 成 C 语 言 程 序 的 基 本 单 位。A.函 数 B.过 程 C.子 程 序 D.文 件 2.()是 C 语 言 提 供 的 合 法 的 数 据 类 型 关 键 字。A.float B.signed C.integer D.char3.以 下 选 项 中 不 合 法 的 用 户 标 识 符 是(A.abc.c B.file C.Main D.printf4.以 下 选 项 中 不 合 法 的 用 户 标 识 符 是(A.1 2 3 B._12 C.A$D.Dim)o)o5.合 法 的 C 语 言 字 符 常 数 是()oA.084 B.A C
14、.ab D.x436.合 法 的 C 语 言 字 符 常 数 是()oA.t B.A C.54 D.A7.合 法 的 C 语 言 长 整 型 常 数 是().A.OL B.5712700 C.0.054838743 D.2.1869el08.C 语 言 中,要 求 运 算 数 必 须 是 整 型 的 运 算 符 是().A.%B./C.D.!9.以 卜.选 项 中 正 确 的 整 型 常 量 是()。A.12.B.-20 C.1,000 D.045810.以 下 选 项 中 正 确 的 实 型 常 量 是()。A.0 B.3.1415 C.0.329X102 D.+.87111.以 卜 选 项
15、 中 不 正 确 的 实 型 常 量 是().A.2.607E-1 B.0.8103e2 C.77.77 D.456e-2.0参 考 答 案:1.A 2.B 3.A 4.A 5.D 6.A7.A 8.A 9.B 10.B 11.D第 2 章 输 入/输 出 程 序 设 计 2.1本 章 要 点 1 字 符 串 的 格 式 输 入 与 输 出 在 计 算 机 程 序 设 计 中 最 基 本 的 就 是 输 入 与 输 出,输 入 与 输 出 与 变 量 的 类 型 有 关,例 如 用 printf.sc a n f的 格 式 符 d、lf、%c、%5控 制 整 型 变 量、双 精 度 变 量、字
16、 符 变 量、字 符 串 的 输 入 与 输。(1)字 符 串 的 输 出 字 符 串 的 输 出 分 两 种 情 况:直 接 输 出 格 式:printf(输 出 字 符 串”);例 如:printf(*”);printf(“请 您 输 入”);格 式 输 出 格 式:printff%s”,字 符 串 变 量 地 址,);例 如:char str20=a b e d;printf(字 符 str 的 s%s n 内 容 是,str);(2)字 符 串 的 输 入 格 式:scanf(s”,字 符 串 变 量 地 址,);例 如:char str20;scanf(%s”,str);注 意:sc
17、anf输 入 以 空 格 为 分 隔。在 上 式 中 如 输 入:123 4567 abed(回 车)字 符 串 s t r的 内 容 为:1 2 3,数 组 名 代 表 此 数 组 的 首 地 址。2 整 型 数 的 格 式 输 入 与 输 出(1)整 型 数 的 格 式 输 出 格 式:printff u%d”,整 型 变 量 或 整 型 数,);例 如:int x=0 x 2 0;printf(x=0%o,x=0 x%x,x=%d y=%-5dn,x,x,x,200);(2)整 型 数 的 格 式 输 入 格 式:scanf(d”,整 型 变 量 地 址,);例 如:int x,y;sc
18、anf(%d%d”,&x,&y);此 时 要 注 意 输 入 的 两 个 整 数 用 空 格 分 隔,如 果 语 句 写 成:scanf(%d,%d,&x,&y);则 输 入 的 两 个 整 数 用,分 隔。3 双 精 度 数 的 格 式 输 入 与 输 出(1)双 精 度 数 的 格 式 输 出 格 式:printf(lf;双 精 度 变 量 或 双 精 度 数,);例 如:double y=0.51347e-3;printf(%-6.3lfn”,y);(2)双 精 度 数 的 格 式 输 入 格 式:scanf(%lf”,双 精 度 变 量 地 址,);例 如:double y;scanf
19、(“%lf”,&y);注 意:在 双 精 度 数 输 入 时 不 能 控 制 精 度,例 如 下 列 语 句 是 错 误 的:double y;scanf(%6.2lf,&y);4 字 符 的 格 式 输 入 与 输 出(1)字 符 的 格 式 输 出 格 式:printf(%c”,字 符 变 量 或 字 符,);(2)字 符 的 格 式 输 入 格 式:scanf(%c”,字 符 变 量 地 址,);例 如:char chl,ch2;scanf(%c%c”,&chl,&ch2);printf(,%c%c%dn,chl,ch2,chl-ch2);注 意:(1)printf 可 以 有 修 饰
20、符,例:%6.2f、-5d、2c 等;(2)scanf输 入 在 变 量 地 址,输 入 时 必 须 与 控 制 格 式 一 一 对 应;(3)scanf输 入 时 或 肝 不 可 以 有 精 度 控 制,在 s 时 输 入 以 空 格 为 分 割;(4)字 符 串 的 输 入 可 以 使 用 函 数 gets、字 符 串 的 输 出 可 以 使 用 函 数 puts。例 如:char str100;gets(str);puts(str);2.2课 本 练 习 参 考 答 案 1.用 函 数 printf输 出 一 个 中 空 的 三 角 星。#includevoid main()(print
21、tf*);printf(*);printtf*);)2.从 键 盘 输 入 两 个 整 型 数,实 现 两 个 整 型 数 的 互 换。#includevoid main()(printffEnter two integer:n);int xl,x2,x;scanf(%d%dz&xl,&x2);x=xl;xl=x2;x2=x;printf(%d,%d”,xl,x2);)3.从 键 盘 输 入-个 三 位 的 整 数,分 别 输 出 它 的 个 位 数、十 位 数、百 位 数。#includevoid main()printf(Enter one integer:n);int x,yl,y2,y
22、3;scanf(%d/&x);yl=x%10;x=x/10;y2=x%10;x=x/10;y3=x%10;printf(个 位:%d,十 位:%d,百 位:%dn,y lzy2/y3);)4.写 出 以 下 程 序 的 输 出 结 果。#includevoid main()int i=010,j=10;printf(,%d/%dn/+i j-);)答 案:9,105.编 写 程 序,屏 幕 提 示“您 是 一 个 学 生 吗”,可 输 入 V 或 次 进 行 回 答,屏 幕 可 输 出 您 的 选 项。#includevoid main()char x;printf(您 是 一 个 学 生 吗
23、?您 输 入 V 或 n进 行 回 答:n“);scanf(%c,&x);if(x=y)printf(您 是 一 个 学 生 n“);elseprintf(您 不 是 一 个 学 生 n“);)6.从 键 盘 输 入 一 个 角 度 x,求 10*sin(x)的 值。#include#includevoid main()printffEnter one integer:n);float x;scanf(%f,&x);printf(10*sin(x)=%fn/10*sin(x);第 3 章 循 环 程 序 设 计-本 章 要 点 与 习 题 解 答 3.1 本 章 要 点 1.while 循 环
24、 W hile循 环 的 格 式 如 下:while(条 件 表 达 式)(循 环 体)首 先 判 断 循 环 的 条 件 是 否 满 足,如 条 件 满 足 则 执 行 循 环 体,条 件 不 满 足 则 退 出 循 环 体,此 种 循 环 有 可 能 循 环 体 一 次 也 不 执 行。例 如:while(ch=getchar()!=,#)if(ch=,A&ch=,Z)putchar(ch);)注 意:在 循 环 体 中 不 止 一 条 语 句 时 要 形 成 语 句 块,在(ch=getchar()中,括 号 不 能 省 略。2.do-while 循 环 do-while循 环 是 后
25、判 断 循 环,不 论 循 环 的 条 件 是 否 满 足,循 环 体 至 少 应 执 行 一 次,do-while循 环 的 语 句 格 式 如 下:do(循 环 体 while(表 达 式);例 如:int sum=0,x;do(scanf(%d”,&x);sum+=x;while(x);w hile与 dowhile在 循 环 条 件 不 满 足 时 是 有 区 别 的,例 如:语 句 段:int n;scanf(%d,&n);while(n)(printf();n-;)语 句 段:int n;scanf(%d,&n);do(printf(y);n-;while(n);dowhile在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一份 学习 资料 习题 解答
限制150内