已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 C 语言经典习题及其答案详解语言经典习题及其答案详解 第一章第一章 C 语言概述语言概述 1 1 单项选择题单项选择题 1 二进制语言是属于 面向机器语言 面向问题语言 面向过 程语言 面向汇编语言 解 人们研制了许许多多计算机程序设计语 言 其中二进制语言直接来自计算机的指令系统 与具体计算机紧密相关 所以是一种面向机器语 言 面向问题语言是为了易于描述和求解某类特定 领域的问题而专门设计的一种非过程语言 面向过 程语言是一种能方便描述算法过程的计算机程序 设计语言 有汇编语言 但没有面向汇编语言 汇 编语言也是一种面向机器的语言 与机器语言比 较 汇编语言用有助于记忆的符号来代表二进制代 码 所以解答是 2 下列语言中不属于面向过程的语言是 高级语言 低级语言 C 语言 PASCAL 语言 解 C 语言和 PASCAL 等程序设计语言都 是高级语言 它们用于描述复杂加工的处理过程 所以也称它们是面向过程语言 低级语言是指机器 语言和汇编语言 低级语言是面向机器的语言 而 不是面向问题的语言 所以解答是 3 下列字符中属于键盘符号的是 n t b 解 键盘符号是指键盘上有标记 并能在显 示器上直接以其标记字样显示的字符 有许多键盘 上有标记的符号 它们不是用于直接显示的 键入 这种字符用于表示特定的意义 如常用的回车符 为了能让 C 程序标记这种符号 程序采用转义字符 的方式书写这种字符 如 n t b 都不是键盘 字符 在 C 语言中 它们都得用转义字符来表达 只有字符 才是键盘字符 所以解答是 但在 C 程序中 反斜杠字符 已特别用作转义字符的引导 符 它也得用转义字符的表达形式书写 将它写成 4 下列字符列中 不是用来表达转义字符是 074 0 解 转义字符有三种书写形式 反斜杠字符 后接上某个规定的字符 反斜杠字符后接上 13 个 八进制数字符 反斜社字符和字符 X 之后接上 1 至 2 个十六进制数字符 后两种分别八进制数和十六 进制数直接给出字符的 ASCll 代码值 而 074 是八 进制整数 不是转义字 所以解答是 5 不是 C 语言提供的合法关键字是 switch begin case default 解 因 C 语言的关键字表中没有 begin 它 不是 C 语言的关键字 所以解答是 6 下列字符列中 能作为单个标识符是 a a 2 a 3 a 3 解 在 C 语言中 规定标识符是这样一种字 符序列 由英文字母或下线字符开始 后接任 1 个 英文字母 下线字符和数字符组成 所以问题所列 的字符列只有 a 3 是标识符 其余都不是标识符 一个是由字符 开头 一个中间有字符 另一 个有字符 所以解答是 7 在 C 语言中 下列说法中错误的是 函数定义可以分为两个部分 函数说明部分 和函数体 主函数可以调用任何非主函数 任何非主函数可以调用其它任何非主函数 程序可以从任何函数开始执行 解 每个 C 函数的定义分两部分 函数说明 部分和函数体 所以叙述 是正确的叙述 C 语言 中 函数可以递归调用 主函数可以调用程序中的 任何函数 当然可以调用任何非主教的其它函数 所以叙述 是一个正确的叙述 同样理由 叙述 也是正确的 C 语言规 C 程序只有一个主函数 并总是从主函数开始执行 不能从非主函数开始执 行 所以 说程可以从任何函数开始执行是错误的 所以解答是 1 2 填充题填充题 1 汇编语言属于面向 语言 高级语言 属于面向 语言 解 汇编语言与具体计算机密切有关 是属 于面向机器的语言 而高级语言用来描述求解题的 算法 所以是面向过程的语言 所以解答是 面向 机器和面向过程 2 用高级语言编写的程序称为 程序 它可以通过 程序翻译一句执一句的方式 2 执行 也可以通过 程序一次翻译产生 程序 然后执行 解 用高级语言编写的程序称为源程序 源 程序不能在计算机上直接运行 运行源程序有种方 式 一种是通过解释程序 对源程序逐句解释执行 另一种是先让编译程序将源程序一翻译产生目标 程序 目标程序是计算机可直接执行的机器语言程 序 它是一种二进制代码程 然后执行目标程序 3 转义字符是由 符号开始 后接单个 字符或若干字符组成 4 C 语言词类主要分为 和 等 解 语言的基本词汇是指直接由字符序列组 成 有确定意义的最基本单位 所以 C 语言词汇有 字面形式常量 特殊符号 主要是运算符 保留 字和标识符等四类 而表达式 函数调用等是更高 级的语言成分 如表达式中还可分运算分量和运算 符等 函数调用也是一种表达式 它有函数名标识 符 圆括号和实际参数表等 利用基本词汇 按照 给定的 C 语言的句法规则 就可命名程序对象 描 述表达式计算 构造语句 函数 直至整个程序 5 C 语言的语句主要分为 语句 语句 语句 语句 语句和 语句等 解 C 语言有多种不同功能的语句 有用于 定义数据的 有用于各种存储和计算的 有用于程 序流程控制的 有多种分类方法 C 语言的语句主 要有 数据定义语句 表达式语句 流程控制语句 复合语句 空语句和其它语句 程序中经常使用的 赋值表达式语句和函数调用表达式语句都是典型 的表达式语句 6 C 程序是由函数构成的 其中有并且只能有 个主函数 C 语言程序的执行总是由 函 数开始 并且在 函数中结束 如别的函数未 调用终止程序执行的库函数 解 C 程序是由若干函数构成的 其中有并 且只能有 1 个主函数 用 main 命名 C 程序的执 行总是由主函数开始执行 通常在主函数中结束 如没有在别的函数中调用终止程序执行的库函 数的话 第二章 第二章 基本数据类型和表达式基本数据类型和表达式 2 1 单项选择题单项选择题 1 下列字符列中 可以作为 字符串常量 的是 ABC ABC abc a 解 C 程序中 一个字符率常量是表示一个 字符序列 书写时 用双引号字符前后括住这个字 符序列 所以只有 ABC 是一个正确的字符率常 量 其余都不是 其中 ABC 可作为标识符 字符 列 abc 不能出现在 C 程序中 a 是一个字符常量 所以解答是 2 在以字节存储字符的系统中 n 在内存占 用的字节数是 1 2 3 4 解 一般来说 一个字符在内存中只占 1 个 字节 n 是转义字符 其意义是换行符 它作为 一个字符存储 在内存也只占 1 个字节 所以解答 是 3 字符串 xyz 在内存占用的字节数是 3 4 6 8 解 字符串中的每个字符占 1 个字节 但 C 程序在存储字符串时 要在最后一个有效字符后面 接上 1 个字符串结束的标记符 0 这样 存储字 符串常量 xyz 需要 4 个字节 所以解答是 4 在以下字符列中 合法的长整型常数是 0L 4962710 0 054838743 2 1869el0 解 为表示不同范围的整数 整型数据分短 整型 基本型和长整型 并对三种整型内部表示的 最高位的不同理解 又分别分成无符号和带符号两 种 若要明确指明一个整数是长整型的 必须在整 数之后接上字符 L 所以 0L 是一个长整型的整型 常量 而 4962710 是基本整型数据 而对于用 2 个 字节表示一个基本整型数据的系统来说 该整数将 因超出范围而是一个错误的整数 0 054839743 和 2 1869el0 都是 double 型的实数 所以解答是 5 一个 char 型数据 它的值在内存中存放的是 ASCll 代码值 BCD 代码值 内码值 十进制代码值 解 计算机存储字符 通常是存储字符的某 种代码值 有许多种字符编码的方法 最流行的是 ASCII 代码 在 C 语言中 Char 型数据也用 ASCII 代码表示 所以解答是 6 设变量 m n a b c d 的初值均为 0 执 行 m a b n c d 后 m n 的值是 0 0 0 1 l 0 1 1 解 计算 m a b n c d 的过程 是先计算逻辑或的左运算分量 m a b 的值 由 于赋位运算符的优先级比关系运算符 的优先级 3 低 又先计算 a b 因 a b 均为 0 后 所以比较 结果值为 1 将 1 赋给变量 m 使变量 m 的值变为 1 同时这个赋值运算的结果也是 1 这样逻辑运算的 左运算分量的值为1 由于逻辑或运算的左运算分量 值为 1 按照 C 语言对逻辑或运算优化计算的规定 不再计算逻辑或的右运算分量 而直接得到逻辑或 运算的结果为 1 由于逻辑或的右运算分量不曾计 算过 所以变量 n 的值也不为变化 这样 上述表 达式计算后 变量 m 的情为 1 变量 n 的值为 0 所 以解答是 7 设 a 为 5 执行下列计算后 b 的值不为 2 的 是 b a 2 b 6 a b a 2 b a 3 3 2 解 因两个整型数据相除 结果是整数 当 a 的值为 5 时 计算表达式 b a 2 后 使 b 的值为 2 计算表达式 b 6 a 是先计算子表达式 a 的 先让 a 的值减 1 变成 4 并以减 1 后的 a 为子 表达式的结果 所以子表达式的结果为 4 最后使 b 的值为 2 在计算表达式 b a 2 时 求余运算 a 2 的结果为 1 最后使变量 b 的值为 1 计算表达式 b a 3 3 2 时 先计算条件表达式 a 3 3 2 以 2 为结果 最后也使变量 b 的值为人所以解答是 8 执行语句 x a 3 b a 后 X a b 的值依次为 3 3 2 2 3 2 3 2 3 2 3 3 解 计算表达式 x a 3 b a 时 先计 算赋值号右端圆括号内的逗号表达式 逗号表达式 要求各子表达式顺序计算 并以最后予表达式的值 为整个逗号表达式的结果 所以该表达式计算时 先让变量 a 的值为 3 a 的值是 a 当时的值 以该 值为结果赋给变量 b 并以该值为逗号表达式的值 赋给变量 x 然后 a 的值被减少 1 所以计算该表达 式后 使变量 x a b 的值依次为 3 2 3 所以解 答是 9 设整型变量 m n a b c d 均为 1 执行 m a b n a b 后 m n 的值是 0 0 0 l 1 0 1 l 解 表达式 m a b n a b 是一个逻辑表达式 它的计算过程是先计算逻辑与 的左分量 m a b 其中又是先计算 a b 因 a b 不成立 结果为 0 将 0 赋给变量 m 最后逻辑与 的左分量结果为0 由于逻辑运算采用特别的优化计 算规则 当逻辑与的左分量结果为 0 时 不再计算 逻辑与的右分量 而直接以 0 为逻辑与的结果 所 以 上述表达式计算使 m 的值变为 0 而 n 的值没 有变 依旧为 l 所以解答是 10 设有代码 int a 3 则执行了语句 a a a a 后 变量 a 的值是 3 0 9 12 解 由于赋值运算符的结合性自右至左 语 句 a a a a 的执行是先计算 a a 得到值 9 再计算 a a a 使 a 的值为 6 接着计算 a a 使 a 的值为 12 所以解答是 11 在以下一组运算符中 优先级最高的运算符 是 解 常规运算符的优先级自高到低的排列顺 序是算术运算符 移位运算符 关系运算符 按位 运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符 所以问题所给的四个运算符按优先级 自高到低的排列顺序是 所以 解答是 12 设整型变量 i 的值为 3 则计算表达式 i i 后表达式的值为 0 l 2 表达式出错 解 有些运算符只有一个字符 也有许多运 算符由两个字符组成 特别是有些字符既可是单个 字符的运算符 又能组成双字符的运算符 编译系 统在识别源程序时 通常是尽量多地读八字符 能 组成多字符单词的先尽量组成多字符单词 所以表 达式 i i 被编译器理解为 i i 另外 当表达 式中某变量有后缀自增和自减运算时 先按变量的 原值计算表达式 然后再对变量进行自增和自减运 算 同样地 当表达式中某变量有前缀自增和自减 运算时 先对变量进行自增和自减运算 然后再按 变量的新值计算表达式 按这个约定 求表达式 i i 是计算 i i 的值为 0 然后再对 i 作自减运 算 这样 表达式 i i 的值为 0 所以解答是 13 设整型变量 a b c 均为 2 表达式 a b c 的结果是 6 9 8 表达式出错 解 与上一小题解答的理由相同 表达式 a b c 被系统理解成 a b c 表达式 变量 的值是变量的原来值 所 以在变量 a b c 均为 2 的前题下 执行上述表达式 得到结果为 6 所以解答是 14 若已定义 x 和 y 为 double 类型 则表达式 x l y x 3 2 结果是 l 2 2 0 2 5 解 由于变量 x 和 y 都是 double 类型 表达 4 式 x l y x 3 2 是先计算 x 1 由于 1 是 整型的 x 是 double 类型的 该计算先将整数 1 转 换成 double 类型的 1 0 并将 1 0 赋给变量 x 计算 y x 3 2 是先求 3 2 的值 因是两整数相除 结果是整型值 1 然后在计算 x 1 时 也先将 1 转换成 1 0 然后求得 x l 的值为 2 0 最后将该 值赋给变量 y 并得到整个表达式的值为 2 0 所以 解答是 15 设 a 1 b 2 c 3 d 4 则表达式 a b a c d a d 的结果为 4 3 2 1 解 条件运算符的优先级比关系运算符的优 先级低 并且它的结合性是自右向左的 所以表达 式 a b a c d a d 可用圆括号等价地写成 a b a c D A D 因 A B 成立 计算 结果为 A 的值 1 所以解答是 16 设 a 为整型变量 下列 C 表达式中 不能表 达数学关系式 10 a 15 的是 10 a 15 a 11 a 12 a 13 a 14 a 10 a 15 a 10 a 15 解 数学关系式 10 a 15 表示 只能是 11 12 13 14 四个值之 l 用 C 表达式表示这个条件 可写成 a 10 a 15 或 a 10 中的代码 x 是一 个表达式 不是语句 语句必须要以分号结束 所 以是错误的 正确解答是 10 循环语句 for x 0 y 0 y 123 x 4 x 的循环执行 无限次 不确定次 4 次 3 次 解 for 循环语句的初始化部分置变量 x 和 y 的初值为 0 循环条件是 y 123 x 4 每次循环后变量 X 的值增 1 由于循环过程中变量 y 的值未被修改过 循环条件又是一个逻辑或 其左 分量 y 123 永远成立 也就是循环条件永远 成立 所以该循环语句将循环执行无限次 正确解 答是 11 若 i j 已定义为 int 类型 则以下程序段中 的内循环体的执行次数是 for i 5 i i for j 0 j 4 j 20 24 25 30 解 问题所给的程序段的外循环是一个阶循 环语句 它的初始化部分置变量 i 的初值为 5 循 环条件简写成 i 即 i 0 每次循环后变量 i 的值 减 1 所以外循环共控制 5 次循环 内循环也是一个 for 循环语句 它的初始化部分置变量 j 的初值为 0 循环条件是 j 4 每次循环后变量 j 的值增 1 所以内 循环共控制 4 次循环 这样 如内循环的体内未曾 对变量 i 和 j 有修改 在内 外循环一起控制下 内循环体共被重复执行 20 次 正确解答是 12 假定 a 和 b 为 int 型变量 则执行以下语句 后 b 的值为 a 1 b 10 do b a a while b 0 9 2 1 8 解 在这个程序段中 循环开始前变量 a 的 值为 1 b 的值为 10 每次循环从变量 b 减去 a 并让 a 增 1 并在循环条件判定时 又让 b 减去 1 第一次循环后 变量 b 的值变成 9 变量 a 的值变 为 2 循环判断时 因 b 的值大于 0 循环条件不 8 成立 结束循环 但在循环判断时 让 b 减去了 1 所以循环结束时 变量 b 的值为 8 正确的解答是 13 设 x 和 y 为 int 型变量 则执行下面的循环 后 y 的值为 for y l x l y 50 y if x 10 break if x 2 1 x 5 continue x 3 2 4 6 8 解 for 循环语句的初始化部分置变量 x 和 y 的初值为 1 循环条件是 y 50 每次循环 后变量 y 的值增 1 控制循环最多执行 50 次 循环 体有三个语句 首先在发现变量 x 的值大于等于 10 时 结束循环 接着是当变量 x 除 2 的余数为 1 即 变量 x 是奇数 时 让变量 X 值增 5 让 x 变成偶 数 并直接进入下一轮循环 如变量 x 是偶数 则 从变量 x 减去 3 让变量 x 变成奇数 由上述分析 知 每两次循环使变量 x 的值增加 2 第一次循环后 变量 x 的值变成 6 第二次循环后 变量 x 的值变成 3 第三次循环后 变量x的位变成8 第四次循环后 变量 x 的值变成 5 第五次循环后 变量 x 的值变成 10 第六次循环时 因变量 x 的位大于等于 10 直 接跳出循环 这次循环是非正常结束 对变量 y 的 修正只执行了 5 次 所以循环结束后 变量 y 的值 增至 6 正确的解答是 14 在 C 语言中 下列说法中正确的是 不能使用 do 语句 while 条件 的循环 do 语句 While 条件 的循环中必须使用 break 语句退出循环 do 语句 while 条件 的循环中 当条件 非 0 时将结束循环 do 语句 while 条件 的循环中 当条件 为 0 时将结束循环 解 do while 语句的一般形式是 do 语句 while 表达式 其语义是重复执行其成分语句 直至表示条件 的表达式值为 0 时结束 do while 语句是正常使用 的一种循环结构之一 do while 语句的循环结束条 件由 while 后的表达式值为 0 所控制 并不一定要 有 break 语句跳出循环来结束循环 do while 语句 在条件值非 0 时 将继续循环 而不是结束循环 条件值为 0 时 才结束循环 所以正确的选择是 3 2 填充题填充题 1 结构化程序设计规定的三种基本结构是 结构 选择结构和 结构 解 结构化程序设计的三种基本控制结构是 顺序结构 选择结构和循环结构 2 若有定义 int a 25 b 14 c 19 以 下语句的执行结果是 if a 25 b 2 c prinif a d b d c d n a b c else printf a d b d c d n a b c 解 问题所给的 if 语句中 条件 a 25 b 2 c 是先求逻辑与的第一个运算 分量 它是一个关系式 关系成立 接着判定第二 个逻辑与运算分量 又是一个关系式 由于变量 b 的值是 14 b 不小于等于 2 运算分量的关系式不 成立 导致 if 语句的条件为假 执行 else 部分 在 求且语句的条件时 计算了 2 个逻辑与分量 使变 量 a 的值增了 1 变量 b 的值被减了 1 所以输出内 容是 a 26 b 13 c 19 3 以下两条 if 语句可合并成一条 if 语句为 if a b x 1 else y 2 if a b printf y d n y else printf x d n x 解 在以上两条 if 语句中 两个条件刚巧相 反 若将前一个 if 语句的第一个成分语句与第二个 if 语句的第二个成分语句合并 第一个 if 语句的第 二个成分语句与第二个if语句的第一个成分语句合 并 写成一条 if 语句如下 if a b x 1 printf x d d x else y 2 printf y d n y 4 设 i j k 均为 int 型变量 则执行完下面的 for 语句后 k 的值为 for i 0 j 10 i j i j k i j 解 该 for 语句以 i 为 0 j 为 10 初始化 循环条件是 i j 每次循环后 i 增 1 j 减 1 循环体是将 i与j的和赋给 k 这样变量 k将保存的 是最后一次赋给它的值 一次循环后 i 为 l j 为 9 二次循环后 i 为 2 j 为 8 五次循环后 i 为 5 j 为 5 继续第六次循环 将 i 与 j 的和 10 存于 k 后 i 为 6 j 为 4 结束循环 所以循环执行后 k 为 10 9 5 下列程序的功能是输入一个整数 判断是不 是素数 若为素数输出 1 否则输出 0 请为程序 填空 main int i x y 1 scanf d x for i 2 i x 2 i if y 0 break printf d n y 解 为判数 x 是否是素数 预置变量 y 的值 为 1 x 可能是素数 然后用循环 用 2 至 x 2 的整数 i 测试对 x 的整除性 若能被其中的某个整 数整除 则 x 是合数 置 y 的值为 0 不是素数 结束测试循环 若都不能整除 则 x 为素数 i 能 否整除 x 可用求余运算 x i 等于 0 来判定 所以 程序中的空框可填 x i 0 测试 X为素数的代 码可写成 y l for i 2 i x 2 i if x i 0 y 0 bleak 3 3 程序分析题程序分析题 1 阅读程序 写出运行结果 main int a 10 b 4 c 3 if a b a b if a c a c printf d d d n a b c 解 程序中 第一个 if 语句 if a b a b 当 a b 时 让 b 值置 a 该语句确保 a 的值不比 b 小 同样第二个 IF 语句 if a c a c 当 a c 时 让 C 值置 A 使 A 的值不比 C 小 实际 情 况是 a 本来就比 b 和 c 都大 所以 a 的值没有变 程序输出 a b 和 c 的原来值 10 4 3 2 阅读下列程序 写出程序的输出结果 main int x 100 a 10 b 20 ok1 5 ok2 0 if a b if b 15 if ok1 x 1 else if ok2 x 10 else x l printf d n x 解 程序预置变量 x 的值为 100 a 的值为 10 b 的值为 20 ok1 为 5 ok2 为 0 程序中给出的if语句可以写成更结构化的形式 如下 if a b if b 15 if ok1 x 1 else if ok2 x 10 else x l 由于条件 a b 成立 并且条件 b 15 也成立 而 ok1 不等于 0 执行 else 后的语句 又因 ok2 等 于 0 执行 else 后的语句赋 1 给 x 所以程序输出 l 3 阅读下列程序 写出程序的输出结果 main int y 9 for y 0 y if y 3 0 printf d y continue 解 循环前 变量 y 的值为 9 其中的循环 语句在 y 大于 0 情况下循环 每次循环后 y 的值减 1 循环体是当 y 能被 3 整除时输出表达式 y 输出 的是减 1 后的 y 值 这样 第一次循环因 y 为 9 能被 3 整除 输出 8 y 也变成 8 又经两次循环 y 的值变为 6 又让 y 减 1 变成 5 并输出 5 又经两 次循环 y 的值变成 3 让 y 减至变成 2 输出 2 再经两次循环后 y 的值变成 0 结束循环 所以 程序输出 852 3 4 程序设计题程序设计题 1 编一个程序 输入华氏温度 F 按下列公 式计算并输出对应的摄氏温度 C C 5 F 32 9 解 利用公式 C 5 F 32 9 输入 F 氏温度 计算并输出对应的 C 氏温度 程序要引入 两个变量 分别用于存储 F 氏温度和 C 氏温度 计 算时应采用浮点型 包括公式中的常数也应写成浮 点数 不能采用整型和把常数写成整数 因采用整 型编写 公式中的除运算变成整除 会得出与实际 要求不一致的结果 程序如下 include main float f c 变量定义 printf 输入 F 氏温度 10 scanf f f c 5 0 f 32 0 9 0 printf 对应的 C 氏温度 6 2f n c 2 编一个程序 输入一个整数 输出其符号 若 0 输出 1 若 0 输出 1 解 程序可用 if 语句判断输入数的符号 并 控制输出 1 或 l 程序如下 include main int c 变量定义 printf 输入一个整数 scanf d c if c 0 printf 1 n else printf l n 3 编一个程序 输入 X 的值 按下列公式计算 并输出 y 的值 x x l y 2x l l x 10 3x 11 10 x 解 输入 x 按公式计算 y 这可用一个嵌套 的 if 语句分段判断并计算出 y 的值 然后输出 y 值 程序如下 include stdio h main int x y 变量定义 printf 输入一个整数 scanf d x if x l y x else if x 10 y 2 x l else y 3 x 11 printf y d n y 4 编一个程序 输入三个单精度数 输出其中最 小数 解 设最小数存于变量 min 中 为求三个数 中的最小数 可分以下多步完成 先预置 min 为 x 然后分别将其余两个数逐一与 min 比较 当它们中 的某个值比存于 min 中的值更小时 就用它们更新 min 写出程序如下 include main float x y z min 变量定义 printf 输入三个单精度浮点数 scanf f f f for j 0 j i j printf c for k 0 k 5 k printf c a k printf n 解 程序的外循环控制循环五次 每次开始 先输出一个换行符 共输出 5 行信息 对于 i 自 0 开始计算 行 先输出 i 个空白符 接着输出字符 15 数组 a 中的五个字符 由于 a 中的五个字符都是字 符 所以输出五个 字符 这样程序是输出以下形 式的图案 4 说明下列程序的功能 main int i j float a 3 3 b 3 3 c 3 3 x for i 0 i 3 i for j 0 j 3 j scanf f for j 0 s2 j 0 i j s1 i s2 j s1 i 0 printf sl s n sl 4 编程序按下列公式计算 s 的值 其中 x1 x2 xn 由键盘输入 s xi x0 xi x0 其中 x0 是 x1 x2 xn 的平均值 解 输入数组 x 的 n 个元素的值 按公式计 算 程序首先输入 n 设 n 100 然后输入 n 个数 据 接着求它们的平均值 最后按计算公式求出 s 并输出 程序如下 include define N 100 main double x N 1 s int i n do printf Enter n 100 scanf d minrow i mincol j printf MAX a d d d MIN a d d d n maxrow maxcol max minrow mincol min 6 输入一个字符串 将其中的所有大写字母改为 小写字母 而所有小写字母全部改为大写字母 然 后输出 解 程序先输入字符串 然后顺序考察输入 字符串中的字符 当发现是大写字母时 将它改写 成对应的小写字母 而当它是小写字母时 就将它 改写成对应的大写字母 若变量 ch 中的字符是大 写字母 则与它对应的小写字母的表达式可以写成 ch A a 类似地 若变量 ch 中的字符是小写 字母 则与它对应的大写字母的表达式可以写成 ch a A 完整程序如下 include include define N 200 main char s N int i printf Enter string n gets s for i 0 s 0 i if s i A int p 4 w w 1 l p p 1 w 2 2 p 1 1 解 二维数组定义有多种赋初值的办法 问 题给出的代码是按行给数组的部分元素赋初值 它 们 分 别 是 w 0 0 0 w 0 1 1 w 1 1 2 w 1 1 4 w 2 0 5 w 2 1 8 根据约定 未 指定初值的元素自动置全 0 值 指针变量 p 是一个 指向具有四个 int 型元素的一维数组的指针 定义 时的初值使它指向数组 W 的第一行 的代码 w 1 1 中的 w l 是指向 w l 0 的指针 w 1 就 是 w 1 0 其值是 2 w 1 l 的值是 3 的代 码是逗号表达式 p p 1 先使 p 指向 数组 w 的第二行 p l 中的 p l 是指向数组 w 的第三行 p 1 是指针值 指向数组 w 的 第三行的第一个元素 即 int i for i 0 i 4 i printf s a i printf n 解 程序定义了有六个元素的字符指针数组 a 数组 a 的各元素指向字符率常量 程序的 for 循环遍历了 a 的前四个元素 用字 符串输出格式 输出指针数组 a 前四个元素所指的 字符串 所以程序输出 ABCDEFGH 2 阅读下列程序 写出程序的主要功能 main int i a l0 p p printf d n p 解 程序定义了有 10 个元素的整型数组 a 另定义指针变量 p 并让它指向 a 的最后一个元素 a 9 执行代码的第一个循环是顺序输人数组 a 的 10 个元素 第二个循环利用指针 p 逆序遍历数组 a 将数组 a 的各元素逆序输出 所以程序的功能是输 入 10 个整数 并逆序输出这 10 个整数 3 阅读下列程序 写出程序运行的输出结果 char s ABCD main char p for p s p s 4 p printf s n p 解 程序定义了一个字符数组 s 由给它所 赋的字符串初值知 该数组只有五个元素 程序另 定义了字符指针变量 p 循环开始时 先让 p 指向数 组的首元素 循环每次输出以 p 所指字符为首字符 的字符串 并让它指向下一个字符 如此反复循环 四次 所以程序输出以下内容 ABCD BCD CD D 4 阅读下列程序 试写出程序运行的结果 main int i b c a 1 10 3 21 7 13 p b p c b c 1 p b p c a for i 0 i 6 i if b a i c a i p c 置三个指 针变量分别指向 x y z int temp printf Enter x y z n scanf d d d big mid sma 顺序 为变量 x y z 输入值 if big mid if big sma if mid sma printf d t d t d n x y z 按输入 顺序输出 x y z printf d t d t d n big mid sma 按从大到小的顺序输出 2 编一个程序 输入 15 个整数存入一维数组 再 按逆序重新存放后再输出 解 输入数组的元素 并重新颠倒存放后输 出 将存储于数组中的元素颠倒存储 只要首尾相 对应的元素两两交换即可 若用指针实现 可让一 个指针 p 指向前端的元素 另一个指针 q 指向与前 端元素对应的后端的元素 循环前 让 p 指向数组 的首元素 让 q 指向数组的末元素 循环时 让 p 和 q 所指两个元素交换 并让 p 增 1 q 减 l 循环条 件是 p 所指元素在前 q 所指元素在后 即 p q 程序如下 include main int a 15 p q temp printf Enter 15 numbers n for p a p a 15 p scanf d p for p a q a 14 p q p q temp p p q q temp for p a p a 15 p printf d t p printf n 3 输入一个字符串 按相反的次序输出其中的 全部字符 解 要相反的次序输出字符串的全部字符 可用一个字符指针变量 从指向字符串的本字符开 始 逆序遍历字符串 输出指针所指字符即可 但 为了让字符指针指向字符串的末字符 若不用字符 串处理库函数 得用一个循环 让它从字符串的首 字符开始 顺序移至字符串的结束标记符 然后倒 23 退一个字符 就能让它指向字符串的末字符 程序 如下 include define N 200 main char s N p printf Enter a string n scanf s s for p s p p for p p s p printf c p printf n 4 输入一个一维实型数组 输出其中的最大值 最小值和平均值 解 设实型数组的元素个数 n 不超过 20 程 序输入 n 并用循环输入数组的元素 再用循环遍 历数组 求出数组的最大值和最小值 数组元素的 和 然后求出数组元素的平均值 最后输出结果 程序如下 include define N 20 main double a N max min ave p t int n printf Enter n 0 n 20 n do scanf d p name buf 19 scanf f int p a 5 for j 3 j j switch j case 1 37 case 2 PR p break case 3 PR p printf n 解 程序的宏定义 PR 以 d 格式输出参数的 值和远号字符 程序给数组 a 赋初值 并由指针 p 指向元素 a 5 程序让 j 从 3 减至 1 共循环三次 当 j 是 3 时 让 p 减 1 并输出 p 所指元素的值 9 当 j 是 2 和 1 时 输出 p 所指的数组元素的值 并 让 p 增 1 顺序输出 9 和 11 所以 程序输出 9 9 11 2 设下面的程序经编译连接后生成的目标程序 名为 ABC EXE 写出输入以下命令行后的输出 ABC FILE1 FILE2 其中的 表示回车 include main int argc char argv int i printf d n argc for i 0 i argc i printf s argv i printf n 解 程序首先输出参数 argv 的值 3 然后循 环三次 顺序输出 ABC FILE1 和 FILE2 并回车 3 ABC FILE1 FILE2 3 读程序 写功能 include include main int argc char argv FILE fl f2 char ch if ar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025智慧法庭行业应用现状供需分析及资本增值规划分析研究报告
- 沈阳地铁入职笔试题目及答案
- 2025年云南省心理健康面试题库及答案
- 2025年北美国际高中面试题库及答案
- 2025年诸城幼儿园面试题库答案
- 2025年工程监理面试题库及答案
- 2025年医疗招商经理面试题库及答案
- 2025年中小学“学宪法、讲宪法”网络知识竞赛题库及答案
- 2024浙江金华金东区招聘专职社区工作者25人备考题库带答案解析
- 如何应对职场中的职业空白期面试技巧与策略
- 网络安全知识竞赛题库及答案 1000题
- 《植物组织培养技术》课件
- 电焊工初级培训
- 改革开放史知到智慧树章节测试课后答案2024年秋临沂大学
- 基尔霍夫定律课件(共17张课件)
- 【MOOC】英文技术写作-东南大学 中国大学慕课MOOC答案
- wcc培训教程课件
- DB41T 2437-2023 养老机构院内感染预防与控制规范
- 中职教育-数学(基础模块)下册课件:第七章-平面向量.课件
- 职业技术学校安全保卫管理专业人才培养方案
- 2024年广东省佛山市艺术创作院公开招聘历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
评论
0/150
提交评论