西北大学C语言课后习题第二章.pdf_第1页
西北大学C语言课后习题第二章.pdf_第2页
西北大学C语言课后习题第二章.pdf_第3页
西北大学C语言课后习题第二章.pdf_第4页
西北大学C语言课后习题第二章.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

西北大学C语言课后习题第二章.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我们毕业啦 其实是答辩的标题地方 C语言辅导第二章 讲解人 吴慈航 化工学院2013级能源化学工程 西北大学学生校长助理 特等奖学金获得者 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 配套教材见右图配套教材见右图 本章讲解选择题和程序设计题本章讲解选择题和程序设计题 一 选择题 每题后一页均附有相应的源程序和执行结果 选择题参考答案预览 1 5 ADCDA6 10 CBCCD 11 15 ADACD 16 20 DBDCC 21 25 ACDDC 26 30 BDCCC 注意 为简化程序长度 所有源程序中均删除 include和system pause 代码 不影响最终的结果 请大家注意 1 下面四个选项中 均是合法整型常量的是 A 160 0 xffff 011 B 60 0fa 0 xe C 01 986 012 0668 D 0 x48a 2e5 0 x 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 对于新学习C语言课程的同学们来说 我们这里应该首先复习一下整型常量的概念 整型常量包括两个部分 一个是整型 int 另一个是常量 在课本2 2 2小节中有常量的数据类型图 其中整型常量包括三类 1 十进制数 即我们平常使用的数 2 八进制数 其表示方法是以0开头 如0123 1 64 2 8 3 83 3 十六进制数 其表示方法是以0 x 或0X开头 如0 x123 256 1 2 16 3 291 逐项分析 A选项没问题 B选项中0开头是代表八进制 八进制每一位的范围是0 7 故0fa表 示错误 应改为0 xfa 含有字母的整型常量一定是十六进制 其他正确 C选项中0668是八 进制数的表示方法 但最后一位8超出了8进制的表示范围 其他正确 D选项中2e5代表2 105 表示无误 但0 x后面没有任何数 表示错误 答案 A 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第一题选择题第一题 2 类型修饰符unsigned修饰 类型是错误的 此题为概念题 无源程序 A char B int C long int D float 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 因为unsigned为无符号型的修饰符 由课本2 1节的表格2 1知 无符号型修饰符可以用 来修饰以下4种 1 unsigned char 2 unsigned int 3 unsigned short int 4 unsigned long int 其中 int 代表int可以省略 即定义时 unsigned 和 unsigned int 是同一个意思 unsigned类型的特征是没有符号位 其数值都是非负的 对于实型 不可用unsigned修饰 答案 D 3 下列不正确的字符常量是 概念性题无源程序 A 105 B C 4f D a 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 字符常量分为普通字符常量和转义字符常量两种 一般字符型常量的形式是由两边加单引号 组成 如 x a 分别是x字符 a字符和空格字符 转义字符常量是由两边加单引号以反斜线 开头的字符序列来表示 具体见课本表2 2 如 n b 分别是换行 退格的转义字符表示 逐项分析 A选项表示的是转义的八进制字符 正确 B表示的是 字符 正确 C选项可能想表达的是转义十六进制字符 但标准的表示是 x4f 错误 D选项是转义字符 表示响铃 运行后会有一声滴的声音 正确 答案 C 4 下列不正确的字符串常量是 A yes or No B OK C abcd n D ABC O 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这种题目对新学习C语言的同学来说有一定难度 容易绕糊涂 字符串常量首先的组成是左右的一对双引号 即 找到左右双引号后再看引号里面的内容 下面进行逐项分析 A选项中 除去左右双引号的内容是 yes or No 注意 这里 是转义字符 表示的是双引 号 所以这一串最终想展示别人看的是 yes or No B选项中 除去左右双引号的内容是 OK 这里 也是转义字符 表示的是单引号字符 所 以这一串字符想展示给别人看的是 OK C选项中 除去左右双引号的内容是 abcd n 意思是abcd以及转义字符换行 D选项中 没有转义字符 O 只有 0 前面是英文字母O 后面是阿拉伯数字0 不一样 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第四题选择题第四题 5 下列变量名正确的是 概念性题无源程序 A CHINA B byte size C double D A a 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题考查变量的命名 变量命名有三个原则 1 只能由字母 数字 下划线三部分构成 其中字母区分大小写 2 第一个只能是字母或者下划线 3 不能与系统的关键字重复 对于A选项 符合条件 变量名只能由字母 数字 下划线构成 但不一定全部都用上 纯字 母的变量名可以 对于B选项 中间是横线 不是下划线 因此错误 对于C选项 与系统的关键字重复 关键字的表可见课本附录D 在C语言中输入后变蓝的就 是关键字 对于D选项 其有加号 错误 答案 A 6 下列转义字符不正确的是 概念性题无源程序 A B C 074 D 0 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题考查字符常量中的转义字符 首先需要明确的是对于转义字符 左右两边的单引号 是一个整体 单引号里面的内容是需 要转义的部分 同时 是转义的标志 如果在VC中输入 计算机就知道我要开始转义啦 对于A选项 代表的是要输出 符号 正确 对于B选项 代表的是要输出 符号 正确 对于C选项 这个与转义的8进制数有点像 但缺少转义符号 正确的写法是 074 错误 对于D选项 0代表空的意思 正确 答案 C 7 下面四个选项中 均是C语言关键字的是 A auto enum include B switch typedef continue C signed union scanf D if struct type 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 在教材的附录D中 有C语言系统关键字 共计32个 对照即可 注意 在VC中 输入后会变成蓝色的字就是C语言的关键字 如图所示 答案 B 8 下列程序执行后的输出结果是 include void main short int a 32769 printf hd n a A 32769 B 32769 C 32767 D 32767 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 初看到这个题大多数人一般都是一脸茫然 首先解释一下 hd d大家都知道是输出整型变量 hd是输出短整型变量 short int ld则是输出长整型变量 long int 它们的区别是变量的二进制位的位数不同 在教材2 1节中的表2 1可知 short int的位数是16 long int的位数是32 其变量范围分别为 32768 32767 short int 和 2147483648 2147483647 long int 在这一题中a 32769显然是超出了short int的变量范围 如果详细了解原理需要用到原码 反 码 补码还有各自的转换关系 一个简单的理解就是a最小是 32768 再小一点变成 32769时 就反过来跑到最大的32767去了 如果再变成 32770时 就再实际跑到32766去了 以此类推 答案 C 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第八题选择题第八题 9 设x y z和k都是int型变量 则执行表达式x y 4 z 16 k 32 后x的值为 A 4 B 16 C 32 D 52 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考察的是逗号表达式 具体可以参见课本2 5 2节的内容 逗号表达式的特点是对每个表达式的值从左往右依次计算 最后一个计算的表达式的值就是 整个表达式的值 因此 y 4 z 16 k 32会被依次执行 但x的值是最后一个计算的k 32的值 也就是32 答案 C 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第九题选择题第九题 10 若有以下定义 则表达式a b d c值的类型为 char a int b float c double d A float B int C char D double 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考察的是数据类型转换的相关内容 数据类型转换包括隐含转换 无条件转换 和强制转换 强制转换是根据用户的需要强制性地把数据类型转换成另一种 强制转换的一个例子就是两个整数相除时 如果不强制转化 所得的结果和我们需要的不同 例如定义 int a 6 b 4 float k k a b 我们想要的结果其实是k 1 5 但实际运算的结果是1 000000 这是因为两个整数相除时 即6 4只保留整数部分 不保留小数部分 如果需要得到实数型的结果 那么就需要强制转换 k float a b 此时结果为1 500000 对于无条件转换 规则是short和char到int int到float float到double 因为这里有double型的变量 所以最后会转换成double 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十题选择题第十题 11 设有如下的变量定义 则满足C语言语法的表达式是 int i 8 k a b unsigned long w 5 double x 1 42 y 5 2 A a a b 4 a 3 B x 3 C a a 3 2 D y float i 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考察的是变量运算的相关内容 题中定义了整型 int 无符号型 unsigned long 和双精度浮点型 double 型这三类变量 下面进行逐项的分析 A选项 虽然看起来比较复杂 但按照C语言的相关规则我们就能看出点端倪 由于变量的赋值顺序是 从右向左 所以这个表达式的运算顺序是 首先将b和c分别赋值4和3 通过乘法运算得到它们的乘积 12 然后 计算a 12 即a a 12 细心的同学发现 代码中没有给a赋初值 但更细心的同学发现了 在A选项的表达式中 a被赋值为3 所以a的初值为3 因此 a 12的结果是a a 12 9 即现在a的值为 9 最后计算的是a 9 即a a 9 因为a现在的值就是 9 所以最后a的结果是a 9 9 18 结果 为 18 因此A表达式符合C语言语法 所以 a a X的最后结果是2 a X 你们想明白了吗 B选项 这个选项中有两个疑点 第一个是求余运算的变量可以有负数吗 第二个是实数可以求余吗 因为在这个题的定义里面x是实型 不清楚的同学可以看课本第22页的表格 求余运算的对象是整型 所以对象可以是负数 但一定要是整型 B错误 C选项 a a 3可以 a 2也没有问题 但合在一起a a 3 2就不对了 这个是解方程 不是赋值 赋值 最重要的是把要赋值的量 独独地 放在等式的一边 比如x 1是正确的 但x 1 0就错了 因为后者 等式的左边不是变量 而是x 1这个表达式 错误 D选项 是将i变量强制转化为float型 逻辑没有问题 但是规则是 float i 要加类型那里加括号 答案 A 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十一题选择题第十一题 12 假定有以下变量定义 则能使值为3的表达式是 int k 7 x 12 A x k 5 B x k k 5 C x k k 5 D x k k 5 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考察的是求余运算的相关内容 首先 k 7 x 12 k 5的数值为2 不会这个运算的该去翻翻书了 逐项分析 A选项中也是从右往左运算 k 5运算后k 2 x 2的结果是0 不符合 B选项中 k k 5 7 2 5 x 5的值是2 不符合 C选项中 乍一看跟D选项还有那么几分神似 但实际的运算顺序大相径庭 根据附录B中运算符 的优先性 所以实际的顺序应该是先算 即k 5 结果为2 再算减法 k k 5 k 2 5 x k k 5 即x 7 2 2 不符合 D选项中 x k 的值为5 k 5 的值为2 5 2的值为3 符合 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十二题选择题第十二题 13 表示的C语言表达式为 A x y i j B int i 1 j 0 j i i 3 2 C int i 0 j 1 j 1 i 1 j 3 D int i 1 j 1 i j 2 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 对选项进行逐项分析 A选项 i j的初值都为0 j 是先运算后加1 所以i j 等同于i 0 所以最后i 0 j 1 B选项 i j的初值是1和0 随后的赋值从右往左进行 首先是i被重新赋值为3 3 2 6 再将6赋 值给i 最后将i赋值给j 因此 这一题最后的结果为i j都等于6 C选项 i j的初值是0和1 接下来的运算是一个三目表达式 忘记了语法规则翻书第35页 首先判断j是否等于1 如果是的话执行中间的表达式 如果不是的话执行最后面的表达式 在这 里j初值是1 所以执行中间的表达式i 1 因此最后的结果是i 1 j 1 D选项 i j的初值的是1 随后的赋值从右往左进行 首先是j 2 现在j的值为3 接下来是 i 3 因为i的初值为1 所以i最终为4 正确 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十五题选择题第十五题 16 以下程序的输出结果是 A 10 10 B 12 12 C 11 10 D 11 13 include void main int a 12 b 12 printf d d n a b 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题如果在VC中运行一下 答案马上就出来了 但是为什么是这么选就有点名堂了 这一题出的还不算难 因为大家普遍都知道 a和 b是先自减 加 然后再参与运算 因为a和b的 初值都是12 所以 a后是11 b后是13 因此结果出来的是11 13没有问题 选D 但printf函数中结合自加 自减 运算符在计算机二级考试中也算是一个难点 借着这个题目发散一下 如果a的初值还是12 问printf d d d d a a a a 的结果是多少 一般认真学习的同学会认为是 13 13 14 16 但如果告诉你正确答案是 14 13 13 13呢 其实这就涉及到printf语句的执行顺序 它是从右向左扫描 即先计算最右边的表达式 再计算最左边 的表达式 因此 最右边先执行最后一个 a a变为13 即最后一个输出的数是13 没有问题 现在将继续执行倒数第二个表达式 从右往左第二个 也就是a 因为是先使用后 1 所以倒数第 二个输出的也是13 没有问题 关键在于倒数第三个表达式 a 照理说这里应该输出的是14才对 这就是一个特例 在printf中 如果表达式是a 这类 我们可以看作它是不计入运算 也就是在printf 函数的输出中 printf d d a a 和printf d d a a 的结果相同 都是12 只有遇到 a这种 时才运算 直接 1 所以碰到倒数第二个 倒数第三个连续两个a 的时候 可以直接把它当做是输出 当时的a的值 也就是13 等到最后一个扫描的 a时 a的值会立刻改变成14 最后的结果就是 14 13 13 13 小朋友们 明白了吗 总结一下 在printf函数中 如果碰到a 直接认为是输出a 碰到 a 则输出的是a 1 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十六题选择题第十六题 没有输出的没有输出的a 最终体现在执行完最终体现在执行完printf函数后 函数后 a的值发生的变化的值发生的变化 17 设变量n为float型 m为int型 则以下能实现将n中的数据保留小数点后两位 第三位进行四舍五入运算的表达式是 A n n 100 0 5 100 0 B m n 100 0 5 n m 100 0 C n n 100 0 5 100 0 D n n 100 0 5 100 0 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题考查的是四舍五入 保留小数点后两位 比如123 456 123 46 4 413 4 41 其实四舍五入到n位 也就相当于判断小数点后第n位是 1还是取它本身 如果用if语句判断 这 就很复杂了 选项A的方法给了一个比较好的思路 我们来看 要保留小数点后两位 我先把这个数乘以100 比如计算123 456 我先把它变成12345 6 现在来 看一下 如果小数点后第一位大于等于5就进1 如果小于5就不进 那是不是在这里加上0 5之后 新的数的整数部分就是我们要的结果 如果小数点后大于等于5 个位数会进1 反之不进 通过这个运算 我们就得到了12346 1这个数 然后除以100 0 为了数据类型还是float型 得 到了123 461 好像完成了要求 但还有个问题没有解决 就是最后一位我们要把它删了 选项B改进了这个问题 因为我们只要新的数的整数部分 所以通过数据类型的变化 n是float型 m是整型 将n 100 0 5的值给m会自动省略小数点后的部分只保留整数 还取n 123 456 n 100 0 5 12346 1 此时让m 12346 1 因为m是整型 所以m存下的结果是12346 再除以100 就是最后的结果了 答案 B 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十七题选择题第十七题 使用使用while 1 循环是为了多输入几个数 避免多次打开的麻烦循环是为了多输入几个数 避免多次打开的麻烦 此外无意义此外无意义 18 若有如下程序 运行该程序的输出结果是 include void main int y 3 x 3 z 1 printf d d n x y z 2 A 34 B 42 C 43 D 33 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题重点考查逗号表达式 忘记的同学翻书本到p 36 2 5 2 逗号表达式的特征是对括号里面的每个表达式从左往右计算 但整个逗号表达式的值以最后一个 表达式的结果为准 所以对于 x y 首先计算 x 结果是4 再计算y 因为是先使用 所以y 的值是3 因此 整个逗号表达式的结果就是3 即输出的第一个数是3 输出的第二个数就很简单啦 z 2 因为z是1 z 2的结果是3 最终输出的结果是33 选D 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十八题选择题第十八题 19 语句printf a bre hi y bou n 的输出结果是 A a bre hi y bou B a bre hi y bou C re hi youD abre hi y bou 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题重点考查转义字符 首先明确一下几个常用转义字符 b退格 相当于删除 单引号字符 输入斜杠符号 因此 这个语句该这么看 a bre hi y bou n 对转义字符进行转义 结果见下一行 a 退格 re 单引号字符 hi 单引号字符 斜杠 退格 ou 换行 值得注意的是 b 这连续的四个符号 其实是两个转义字符 和 b 即输出反斜杠符号后又退格 相当于什么也没做 所以最后输出的结果就是 re hi ou 答案 C 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第十九题选择题第十九题 20 下列程序执行后的输出结果是 include void main char x 0 xFFFF printf d n x A 32767 B FFFE C 1 D 32768 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题就很难啦 试着做一下 因为0 x是16进制 而16进制的F对应着二进制中的1111 4个1 所以 给x赋值其实相当于二进制中的 1111111111111111 16个1 那么问题来了 x的变量类型是char 字符型 只有8位 多余的直接会被去除 所以保存在x内 部的二进制码其实是8个1 即 11111111 在定义时由于未注明unsigned 所以默认x是有符号型 它的取值范围在 128 127之间 显然 赋值8个1超出了它的范围 那接下来发生的事情需要用到一些原码 反码 补码的知识 因为最高位是1 所以这个是一个负数 计算机内部是以补码的形式处理各种数值 因为 将其 转为补码的形式 最高位不动 其他位取反 最后一位加1 因此补码是 10000001 这个再输出是不是正好就是 1 当然 这个解释还不尽如人意 如果想了解得更多可以阅读 深入理解计算机系统 you can learn more 答案 C 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十题选择题第二十题 为了方便大家看规律 编写了一个对应表 详细见下一页为了方便大家看规律 编写了一个对应表 详细见下一页 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十题 附表 选择题第二十题 附表 21 下列程序执行后的输出结果是 include void main int x f printf c n A x a 1 A G B H C ID J 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考查输出的字符 这个字符的情况比较特殊 我们来看 定义 x f 因为x是整型 所以x得到的是f的ASC II 码 在课本后面的附录E中可以看到f的ASC II码 值是102 其实没记住也不影响做这道题目 需要输出的字符是 A x a 1 在解决这个问题之前 需要说明的是printf分别以 c和 d输出的问题 c是字符型 d是整型 对于同一个字符 二者可以相互转换 以a字符为例 它的ASC II码是97 现在定义一个新的变量int wch 97 如果以整型输出printf d wch 结果是97 而如果以字符型的 形式输出printf c wch 结果是a 这个小实例说明 对于一个整数 如果以 d的方式输出得到的 是整数 如果以 c的方式输出得到的是这个数在ASC II码中对应的字符 而对于一个字符 以 d方 式输出的是这个字符的ASC II码值 以 c方式输出的就是这个字符本身 下面可以讨论这个题了 因为x对应的是f的ASC II码值 因此x a 5 从a到f中间有5个数 不需要记得二者的ASC II码 数差 值就可以了 x a 1是6 A 6对应的字符是从A后面数6个字母 即B C D E F G 正好第 六个 所以输出的是G 答案 A 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十一题选择题第二十一题 22 用十进制数表示12 012的运算结果是 A 1 B 0 C 14D 12 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考查的是位运算 课本p 38 2 5 5 顾名思义 位运算就是按照 二进制位 对数值进行的运算 既然要进行位运算 那前提就是需要 把运算的数转换成二进制表示 12的二进制表示为 1100 012的二进制表示为 1010 注意 012是8进制表示方法 012代表的是8 1 1 2 10 在这里 第一 位的0表示的不是0数值本身 而是一个标志 具体参见C语言第二章p 13图2 2常量数据类型 将需要运算的数用二进制表示完了之后 现在需要看我们的运算规则了 这一题中的位运算符是 即位或 运算规则是如果对应的两个数位按照逻辑或的规则运算 只有两 个位全是0的时候总的结果是0 其余情况结果是1 下面看一看计算的过程 在这里 是同一列上下两个数进行比较 因此 最后的结果是1110 转换成十进制是8 4 2 14 答案选C 答案 C 1100 1010 1110 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十二题选择题第二十二题 23 设字符变量a 3 b 6 计算表达式c a b 2后 c的二进制值是 A 00011100 B 00000111 C 00000001 D 00010100 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 这一题考查的仍然是位运算 课本p 38 2 5 5 首先还是把这两个数以二进制表示 3的二进制表示为 0110 这里的第一位的0不是表示8进制常量 而是为了对齐补个0 6的二进制表示为 1100 在这个算式中 用到了两个位运算符号 即 异或 和 左移 首先来看异或运算 在异或运算中两位如果相同是0 不同是1 然后 再左移两个单位 溢出的高位丢弃 空出的低位补0 左移后的结果是 00010100 答案 D 00000011 00000110 00000101 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十三题选择题第二十三题 将将20转为转为2进制就是进制就是10100 24 下列程序执行后的输出结果为 include void main int a 20 b 30 a a b b a b a a b printf a d b d n a b A a 20 b 30 B a 50 b 30 C a 20 b 50 D a 30 b 20 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题给出了两个整型变量交换的一种新方法 特点是无需借助第三个参量 复习一下之前学过的交换两个数的代码 t a a b b t 需要借助第三个量t 对于这个程序 我们分析一下它的思路 首先执行a a b 即将a与b的和赋给a 然后 执行b a b 即将a与b的差赋给b 注意到此时a的值是a与b的和 赋值前b的值还未改变 因此a b的值是从之前a与b的和中减去b本身 那么得到的就是之前a的值 再赋给b 所以 执行 完第二条语句 b a b 后b的值就是a的初值 最后 执行最后一条语句a a b 赋值时a的值还是a与b初值的和 而b的值是a的初值 所以二者 的差是b的初值 再赋给a 此时a的值也就是b的初值 这样就完成了a和b的交换 答案选D 还有一种更快速交换a与b的值的代码 利用异或运算 a a b b a b a a b 能想明白逻辑道理的一定是聪明人 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十四题选择题第二十四题 25 下列程序执行后输出的结果是 include void main int a 6699 printf 8d a A 0006699 B 00006699 C 6699 D 输出格式错误 备注 代表空格 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 1 printf是输出函数 其中引号内的左右两条竖线无特殊意义 直接输出的就是竖线本身 2 d用作输出一个整型数 前面的负号强调的是对齐方式 有负号 x d 则是左对齐 其中 x代表输出的宽度 这题里面的 8d代表输出的宽度为8 左对齐 因为6699只有四位 所以 还需要补4位才能到8位 根据规定左对齐在右边补空格 就是答案C的样子 如果这一题是 3d 即宽度为3的话 小于6699的4位 此时宽度不起作用 直接输出 6699 答案 C 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十五题选择题第二十五题 26 下列程序执行后的输出结果是 include void main printf s1 15s s2 12s NorthWest University A s1 NorthWest s2 University B s1 NorthWest s2 University C s1 NorthWest s2 University D s1 NorthWest s2 University 备注 代表空格 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 该题仍然考查输出的格式 对于printf函数 一般除了含 d的格式输出字符 其他括号内的内 容全部原样搬上去 s是输出字符串的提示 第一个 s对应的字符串是NorthWest 一共有9位数 第二个 s对应的字符串是University 一共有10位数 由于第一个输出是 15s 没有负号即是右对齐 不足15位的话左边补空格 所以左补6个空格 第二个输出的是 12s 有负号即是左对齐 不足12位右边补空格 所以右补2个空格 因此 选择答案B 答案 B 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十六题选择题第二十六题 27 若int类型数据占4字节 则下列语句的输出为 include void main int k 1 printf d u n k k A 1 1 B 1 2147483647 C 1 2147483648 D 1 4294967295 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 该题考查数据的类型 d是有符号的整型 即 d可以输出正数和负数 u是无符号型 即 u输出的是无符号的数 也就是非负数 printf中第一个 d输出的肯定是 1 因为 d对应的就是有符号型的数据类型 对于将 1以 u形式输出的问题需要运用到原码 补码及各种数据类型补码与10进制数的函数 关系 具体求解较为复杂 想要深入了解的同学可以参看书籍 深入理解计算机系统 不求甚解的做法是 因为int是4字节 一个字节有8位 因此int型数据类型一共是32位 由于232是4294967296 1以 u输出就是232 1 即4294967295 10以 u输出就是232 10 为4294967286 以此类推 答案 D 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十七题选择题第二十七题 28 阅读以下程序 include void main int a float b c scanf 2d 3f 4f printf na d b f c f n a b c 执行时从键盘上输入9876543210 代表回车 则输出结果为 A a 98 b 765 c 4321 B a 10 b 432 c 8765 C a 98 b 765 000000 c 4321 000000 D a 98 b 765 0 c 4321 0 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题考查标准输入函数 scanf 的用法 与printf函数类似 在scanf函数中 2d中2代表宽度 scanf 2d 3f 4f float b 以下输入函数正确的是 A scanf f f B scanf f d C scanf d f B scanf 6 2f 6 2f 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题仍然考查标准输入函数 scanf 的用法 因为a是int型 b是float型 因此分别对应 d和 f类型 对于 6 2f型语句 只用在格式化输出函数 printf 中控制输出的域宽和小数点位数 在输入函数中没有这一项 对于答案C 需要注意的是 在scanf函数中 d和 f中间含有一个逗号 这个是自定义分隔符 例如要将3和2分别赋给a和b就必须遵循自定义的输入格式 即 输入顺序是 3 2CR CR代表回车 如果直接输入32CR会乱码 答案 C 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 选择题第二十九题选择题第二十九题 30 下列程序执行后输出的结果是 include void main int a 2 b 3 printf a b a d b d a b a b A 没有正确的输出格式控制B a 2 C b 3 D a 2 b 3 本内容仅作西北大学新生学习C语言使用 版权所有 请勿私自翻印 解答 本题考查三目表达式在printf函数中的应用 首先 对于三目表达式a b 语句1 语句2代表的意义是如果a b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论