首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • C语言-习题集参考答案全部

    时间:2020-09-27 20:08:49 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:习题集 参考答案 语言

     目 录

     第一章

     C 语言基础知识 参考答案 ................................................................................ - 2 - 第二章

     顺序结构

     参考答案 .......................................................................................... - 5 - 第三章 选择结构 参考答案 .............................................................................................. - 7 - 第四章 循环结构 参考答案 ............................................................................................ - 11 - 第五章

     函数

     参考答案 ................................................................................................ - 15 - 第六章 指针 参考答案 .................................................................................................... - 18 - 第七章 一维数组 参考答案 ............................................................................................ - 21 - 第八章

     二维数组 参考答案 .......................................................................................... - 28 - 第九章

      字符串

     参考答案 .......................................................................................... - 31 - 第十章 对 C 语言得深入讨论 参考答案 ....................................................................... - 33 - 第十一章 结构体与共用体 参考答案 ............................................................................ - 34 - 第十二章

      文件

      参考答案 ........................................................................................ - 35 -

     第一章

     C 语言基础知识 参考答案 一,选择题 1

     C

     2 D

     3

     A

     4

     C 5

     A

     6

     D

     7 C

     分析:C 答案以数字开头了

      8 D

     分析:int

     就是关键字 9

     C

      10 D

     11 B

      12 D

     分析:Visual C++6、0 中 int 类型得变量占得字节数为 4。

     13 B 分析:B 中出现了 8,而八进制只能有 0 到 7 组成 14 D 分析:答案 D 中开头就是 0 不就是 o 15 A

      16 D

      17 B

     18 D 分析:3、6-5/2+1、2+5%2=3、6-2+1、2+1=3、8 本题目考察算术运算符,需要注意整数除 以整数结果只能就是整数 19

     A

     20 C

     21 A

     22

     C

     23

     D 24

      C 分析:考察得就是强制类型转换,正确得就是 k%(int)f

     25 B

     26

     C

     27

     C

     28

     B 29

     A 分析:本题目主要考察 n++表达式得值就是 n 变化之前得值,然后使 n 得值增加 1 30

     A 31

     D 分析:(int)a+b/b=(int)5、5+2、5/2、5=5+1、000000=b=6、000000 同样 a,b 得类型就是 double 型得 32

     D 分析:long 与 short 不能相互修饰 33

      A

     34

      C

     35

      B 36

      B 分析:C 语言得标识符中只能包含字线、数字与下划线,没有连接符。

     37

     D 分析:不同得计算机系统或者编译系统,对 3 种整数类型所占用得字节数有不同得 规定。

     38

      B 39

      A 分析:++运算符有前缀与后缀两种形式,本题中得选项 C 就就是前缀形式,其表达 式得值为增 1 后得值,而选项 A 为后缀形式,其表达式得值为增 1 之前得值。而选项 B 与 D

     得表达式都就是 k 加 1 之后得值 40

      D 分析:字符常量就是用单引号括起来得单个字符,所以选项 B 错误;此外还有一种特殊得字符专为控制设计,称为转义字符,有三种转义字符:一种就是由一个“\”开头加一个普通字符组成,代表一个字符。如’\’’表示一个单引号字符,所以选项 D 正确;’\\’表示一个斜杠字符,而选项 C 中得’\’则就是错误得;用“\”与其后得 1~3 位八进制数字构成得字符序列,表示 ASCII 码等值于该八进制数得字符;用“\x”与其后得 1~2 位十六进制数字构成得字符序列,表示 ASCII 码等值于该十六进制数得字符;所以选项 A 错误。

     41

     B 分析:字符常量就是用单引号括起来得单个字符,所以选项 A 正确;此外还有一种特殊得字符专为控制设计,称为转义字符,有三种转义字符:一种就是由一个“\”开头加一个普通字符组成,代表一个字符。如’\n’表示一个换行符,所以选项 D 正确;用“\”与其后得1~3 位八进制数字构成得字符序列,表示 ASCII 码等值于该八进制数得字符,所以选项 B 错误,因为 9 不就是八进制数字;用“\x”与其后得 1~2 位十六进制数字构成得字符序列,表示 ASCII码等值于该十六进制数得字符;所以选项 C 正确。

     42

     D

     43

     B

     44

     A 45

     B 分析:选项 A 中字符’0’得 ASCII 码值为 48,所以 A 得结果不为 1;选项 B 中’\0’代表空值,空值 NULL 得 ASCII 码值为 0 所以结果为 1;选项 C 中字符’1’得 ASCII 码值为 49,所以结果不为 1;选项 D 相当于用 0-48 结果也不为 1。

     46

      D 如果要表示十六进制字符,则要用’\x’开头,所以选项 A 错误;如果要表示八进制,则’\0’开头,后面跟 1~3 位得八进制数,八进制数由 0~7 组成,不包含 8,所以选项 B 错误;用单引号括起来得单个字符才就是字符常量,所以 C 错误;而’\n’就是转义字符,用来表示回车符。

     47

     C

     先将 c1 变量中得字符得 ASCII 码值输出,即为 65,将变量 c2 中字符得 ASCII 码值减 2 后输出,即为 66。

     48 A 变量 c1 与 c2 中得值相同,所以转换成二进制数后,对应得二进制位上得值也相同, 当两值相同时,只有进行异或运算,结果才为 0,所以 c1^c2 值为 0。所以本题得正确答案为 A。

     二,填空题 1

      位

     0

      1 2

      关键字

      预定义标识符

     用户标识符 3

      8 4

      八

     十

     十六 5

      int

     float

     double 6

      5+3、6/2=5+1、8=6、8 7

     15

      16

      a++表达式得值就是 a 变化之前得值,当然 a 本身增加了 1 8

      把 10 赋给变量 B

      9

      printf(“****a=%d,b=%d****”,a,b);

     10

      3

     整个表达式就是一个逗号表达式,变量 n 与 i 赋值为 2 后,通过++i 将 i 得值增加 1 变为 3, 然后再通过 i++为 i 增加 1,整个逗号表达式得值为 i++得值,此时就是后缀,所以整个 i++ 表达式得值为 3,而变量 i 得值为 2。

     11、1 12、3

     第二章

     顺序结构

     参考答案 一 选择题 1、C 解析:结构化程序得算法可以解决任何复杂得问题。

     2、C 解析:C 程序得基本组成单位就是函数,在 C 程序中每行可以写多条语句,每条语句以分号结束,每条语句可以占用几行,在几行内写完。

     3、C 解析:随意使用空语句会导致逻辑上出现错误,不要随便使用。

     4、D

     5、D

     6、B

     7、A

     8、C 9、B 解析:在 printf 语句中,格式控制得个数只有一个,即%d,而输出项有两项,即 a 与 b。而得到得结果应该只有一个,所以应该输出第一个变量得值,即变量 a 得值。

     10、C 解析:m=0256,即 m 就是八进制得数 0256,要以八进制无符号得形式输出,即输出256;n=256,即n就是十进制得数256,也要以八进制无符号得形式输出,首先要把十进制数转化为八进制数,256 转化为八进制为 0400,以无符号形式输出,即输出 400。

     11、C 解析:第一个数据得输出控制宽度就是 2 位,但就是 x 得值就是 102,占 3 位,要输出得数据宽度大于规定得输出宽度,由于数据时右对齐方式,所以按数据得实际宽度输出,输出 102。第二个数据要求以十进制形式输出,输出控制宽度就是 2,y 得值为 012,就是八进制数,所以要转换成十进制数 10 后再输出。

     12、C

     13、A 14、D 解析:float x=-123、456;说明 x 为单精度浮点数据,单精度浮点数据对应得输出格式应该为%f。

     15、C 16、D、解析:-m++遵循从右向左结合得原则;m++得值为 m 自增之前得值,所以执行完 x=-m++以后,x 被赋值为-3;表达式 x=x+8/++n 中有加号除号,先算 8/++n,++n得值为自增之后得值为 5,8/5 取整为 1,即 x=x+8/++n 转化为 x=x+1,即把 x+1得值赋给 x,x 得值变为-2。

     17、B 解析:输入控制中第一个数要求以“%2d”形式输入,即要求输入一个两位得数,而从键盘输入得数为 876,所以从左到右取两位数字 87,即把 87 赋值给整型变量 a,余下得6 再赋值给浮点型变量 b,自动进行类型转换,b 得值为 6、000000,后面输入得 543 则没有赋值给变量。

     18、B

     19、B

     20、A 21、A 解析:从键盘输入数据得格式必须与输入控制要求得格式一样,B 答案三个之间不要有空格;C 答案用逗号分开就是多余得;D 答案格式不匹配。

     22、C 23、C 解析:x 乘以 100 就是为了把 x 小数点后得两位小数变为整数,再加上 0、5,如果小数

     点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现进位得情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对x乘上100后得数实现了小数位到整数位得四舍五入。最后再除以 100、0,把数字变回原来得大小,整数与浮点数相除结果为浮点数,即实现了要求。

     24、C

     25、A 26、D 解析:第 1 个输出语句要求 ch 以%c(字符)形式输出所以为输出“a”,以%d(整数)形式输出为,字符转换为整型要使用 ASCII 码所以为“97”,k 没有对应得输出符所以没有输出,第 2 个输出语句要求以整型方式输出 k 得到“12”。结果为“a,97,k=12”。

     27、C

     28、D 二.填空题 1、结构化 2、一条语句

      分号 3、88 4、11 5、25

      21

     37 6、2 7、5 8、09 9、i=10,j=20 10、16 11、AB 回车 12、B

     65 13、34579 14、12<CR>3 15、12

     第三章 选择结构 参考答案 一、选择题 1、D 逻辑运算符两侧运算对象可以就是任意合法得表达式,应该就是两条语句,所以选 D。

     2、A 此题主要就是考查 C 语言中 if 语句得合法条件表达式描述,在 C 语言中“不等于”用“!=”描述而不就是用“<>”描述。B、C、D 选项都就是合法得表达式。

     3、D if 语句得表达式可以就是任意合法得表达式 4、D 此题主要就是考逻辑运算与关系运算得优先级别、只要掌握!、算术运算与&&得优先级别便可选对、这几种运算符得具体优先级关系见见教材 P188,附录三。

     5、A 此题主要就是考逻辑运算符!、&&与||之间得优先级别。!最高,&&次之,||最低。先求得!a为0,所以不必计算!b得值,即!a&&!b得值为0,由c=0,!c=1,而0||1=1,所以选A。

     6、答案就是 B C 语言得字符以其 ASCII 码得形式存在,所以要确定某个字符就是大写字母,只要确定它得ASCII 码在’A’与’Z’之间就可以了,选项 A 与 C 符合要求。大写字母得 ASCII 码值得范围为 65 到 90,所以 D 选项符合要求,所以只有 C 就是错误得。

     7、D 此题考到了++运算符以及逻辑运算。当计算机碰到 a&&b 时,先计算表达式 a 得值,若为真才会计算表达式 b 得值,否则将不会去计算 b 得值,因为一旦 a=0,则 0&&b 必为 0;而 a||b则正好就是相反得,即先计算表达式 a 得值,若a 为假才会计算表达式 b 得值,否则将不会去计算b得值,因为一旦a=1,则1||b得值必为1,理解了这两点后,我们在瞧题目:i++==1得值为1,此时i为2,所以计算&&后得表达式,首先计算++j==3得值为1,j 得值为 3,由上面得原理我们可知,||后面得表达式不用再计算,所以此时 i,j,k得值分别为 2,3,3。

     8、C 此题主要就是从概念上考 if 与 else 得配对问题 9、A 此题主要就是从实际应用上考 if 与 else 得配对问题,a=1,则!a 得值就是假,程序执行第一个 if 下得第一个 else 语句,在判断 a==0 显然条件为假查瞧第二个 if 就是否有其配对得 else,发现没有,则执行最后一条 printf 语句输出 b 得值,因为在整个过程中程序没有对 b 得值做任何改变,所以答案选择 A、 10、D 此题主要就是考 if 与 else 得一般形式。if 后面得语句要么就是单条语句,要么就是由{ }扩起来得复合语句,不能就是if后有两条语句得,所以本题程序在运行得时候会出错。

     11、C 此题考到了关系运算与逻辑运算及一定数学知识。|x-y|<10 可等价为-10<x-y<10,首先选项 A 表示 x-y 得绝对值小于 10,与题中得数学关系一样;将-10<x-y<10 用逻辑表达式表示得话就就是 B 选项;而 D 选项只就是数学变换,所以选择 C 12、D 此题也就是考到了真假条件得变换与 if-else 语句。A、B、C 三项都就是表示 a 为真时输出 x,为假时输出 y,而 D 则就是 a 为假时输出 x,为真时输出 y。

     13、D 此题考查了赋值表达式得一般格式,=得左边就是变量名,右边就是表达式,所以 D 项错误。

     14、C 此题主要就是考查逻辑值用整数值替代得结果,数 0 代表逻辑假,非零值代表逻辑真。

     15、C 此题主要就是考查 if-else-if 与 if 语句。具体分析见教材第 49 页例 7。

     16、C 此题主要就是考查 if-else-if 以及关系表达式得运算。首先判断第一个条件 a>b>c得值为 0,所以不执行第一条语句;在判断第二个条件,c-1>=c 表达式得结果为假,所以也不执行其下面得语句,因此执行最后一条语句,将输出 d+2 得值为 4 。

     17、C 此题主要就是考查条件表达式与条件运算符。首先要注意条件表达式得结合方向,它就是从右至左得(可参照附录三) 第一个条件表达式得值为 a,第二个条件表达式得值为 c ,而 c=6,所以答案选 C 。

     18、A 此题主要就是考查 if-else 语句与条件表达式得转化。只要理解了 if-else 语句与条件表达式得运算规则得话,就很容易选出 A。

     19、D 此题主要就是考查在 switch 语句中 break 与 default 得作用及 break 得适用范围。详细说明可参瞧教材第三章 P53 对 switch 得说明部分。

     20、 B 此题考查得就是条件表达式求解问题。先瞧第一个条件表达式语句,a<b 为真,所以k=b=2;再瞧第二个条件表达式语句,k>c 为假,所以 k=k=2 选 B 21、C 此题考查逻辑与 && 得运算工作特性,&&运算得就是从左至右,当左边表达式得值为假时,右边得表达式则不执行,因本题中 k1=k1>k2 得值为 0 亦为假,该表达式就是一个赋值语句,且此时 k1 得值为 0,因而右边得表达式 k2=k2>k1 不执行,因此 K2 得值没有做任何改变。值依然就是 20,所以本题选选 B。

     22、C 此题考查得就是真假条件得等价问题。x-y 为真表示 x-y 就是非 0 得,也即 x-y<0 或x-y>0 即选 C。

     23 答案就是 B 满足表达式(c>=2&&c<=6)得整型变量 c 得值就是 2,3,4,5,6。当变量 c 得值不为 2,4,6 时,其值只能为 3 或 5,所以表达式 c!=3 与 c!=5 中至少有一个为真,即不论 c 为何值,B 选项中得表达式得值都为真,所以 B 选项正确。

     24 答案就是 D 举个例子

     如 x=3 带入得出结果为 0 得选项就是 D 选项。

     25 答案就是 D 条件 x==0||x==1 为真,所以执行 y=1,然后执行 y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以选择 A。

     26 答案就是 B 此题考查 if 语句条件表达式后得语句块区分问题。题中第一条 if 语句之后有两条赋值语句,但她们不在一个复合语句之内,所以只有a=b就是直接附属于第一条if语句得,因此当a=3,b=5,c=7,则 a>b 为 0,程序不执行 a=b,但执行 c=a 此时 c 得值就是 3,在第二条 if 语句得条件表达式中 c!=a 条件值为 0,则不执行 c=b 因此最终 a、b、c 得值为 3、5、3,因此选 B 27 答案就是 D

     C语言得字符以其ASCII码得形式存在,所以要确定某个字符就是大写字母,只要确定它得 ASCII 码在’A’与’Z’之间就可以了,选项 B 得书写格式错误,而选项 C 不符合要求。大写字母得 ASCII 码值得范围为 65 到 90,所以 A 选项不符合要求,小写字母得 ASCII 码比大写字母得 ASCII 码大 32,所以只有 D 就是正确得。

     28 答案就是 B,此题考查三目运算符得运算特性。

     29 答案就是 B,此题考查 switch 语句运算过程。

     30 答案就是C,表达式y%3==0得值为1,所以执行下面得输出语句,表达式—y得值为8,所以输出结果就是 8。选择 C。

     31 答案就是 C,表达式 x%3 得值为 2,非 0 所以执行下面得输出语句,将 x--得值 8 输出,此时x 得值变为 7,然后再执行下一个输出语句,将--x 得值 6 输出,x 得值也变为 6,所以选择C。

     32 答案就是 D,这就是嵌套形式得 switch 语句,因为 break 结构影响较大,而此程序中得第一个case后没有break语句,程序执行时,x=1,执行内嵌得switch语句,因y=0,执行a++,使变量 a 得值为 1 并终止内层 switch 结构,回到外层。程序继续执行 case 2 后面得语句 a++;b++;,这使变量 a,b 得值分别为 2 与 1,外层 switch 语句结束。所以此题选择 D。

     33 答案就是 C,switch 语句中开关条件必须就是整型、字符型与 float 类型,此外强制类型转 换得格式 C 选项正确。

     二、填空题 1、答案就是:(x%3==0)&&(x%7==0) 2、答案就是: 4 分析:程序中就是一个 if—else 结构。分析时要理清 if 与 else 得配对情况。

     3、答案就是:4,5,99 分析:题中得重点在于两个if结构,大家要注意两点:第一,如果if后面没有花括号,则它后面得第一条语句就是它得结构体,并且只有一条语句。(如果后面就是一个结构,则整个结构都属于 if 结构得结构体)。第二,变量在不断得被重新赋值,所以其值在不断得变化。

     4、答案就是:yes,分析:该题与第二题就是同一回事。

     5、答案就是:1。

     分析:这个题还上一个 if—else 结构,考查点仍然就是考察考生就是否能够正确识别 if后面括号里得表达式 p=a!=0,根据运算符得优先级知道,这里应该先算 a!=0,这就是一个逻辑运算,a 得值为 5,所以 a!=0 为真,其逻辑值为 1,将 1 赋值给 p,所以条件为真,输出 p 得值,为 1。

     6、答案就是:非零 7、答案就是:585858。

     分析:题中有三个 if 结构,注意,这三个 if 结构就是相互独立得,就是互不相关得,只要她们得条件成立,就要执行其结构体(后面得输出语句)。通过键盘输入,得 a 得值为 58,所以a>50 为真,输出 58;然后判断 a>40,仍然为真,再输出 58,最后判断 a>30,肯定为真,所以再输

     出 58,连续三次输出 58。

     8、答案就是:0。

     分析:本题得关键在于关系运算符得运算次序,a=5,b=4,c=3、a>b>c 瞧起来就是真得,但就是这这就是数学里面就是这样得,这里我们要一步一步得计算,先算 a>b,a 确实大于 b,所以为真,逻辑值为1,后面得计算就变成了1>c,显然为假,逻辑值为0,并将它赋值给d,所以最后输出 d 得值为 0。

     9、答案就是:3。

     分析:这个题主要考察条件运算符。程序要输出(P/3>0?p/10:p%3)这个条件表达式得值。P 为 30,所以 p/3=10,10>0 显然为真,所以整个表达式得值应该就是 p/10 得值,p/10 得 3。

     10、答案就是:2 1。

     分析:题中就是一个 switch 嵌套结构。里面得 switch 就是 case 1 得语句,题得关键点在于这个语句(即里面得这个 switch 结构)得后面并没有跳出整个结构得 break 语句。所以,当 x=1,与 case 相配以后,执行完后面得语句(即里面得这个 switch 结构),然后没有遇到break 语句,所以并不跳出结构体,而就是继续执行 case 2 后面得语句。所以最后得到得结果应该就是 2

     1,而不就是 1

     0。

     11、答案就是:0。

     字符空格得 ASCII 码不为 0,所以本题中表达式!c 得值为 0,b=0&&1 得结果显然为 0。

     12、答案就是:2。

     此题考查逻辑或运算得运算特性,当||运算得左边得表达式值为 1 时则不进行右边表达式得计算。此外对于自增运算 a++得运算规则就是先使用在自增。

     13、答案就是:-4。

     表达式!n 得值为 1,所以执行 x-=1 后 x=1;表达式 m 得值为非 0 值,所以执行其后得语句x-=2 后 x 得值为-1,表达式 x 得值也为非 0,所以执行其后得语句后 x 得值为-4,最后输出 x得值即为-4。

     14、答案就是:#&。

     表达式 c==5 得值为真,所以表达式得值等于 1,因此输出符号“#”,然后执行“break”,继而去执行“default:printf(“&”);”语句,输出符号“&”。

     15、答案就是:12 17。

     当从键盘输入 x 得值为 12 时,程序自上而下执行经过三个 if 条件判断第一个条件不满足,第二、第三两个都满足。因此最终输出结果为 12 17。

     16、答案就是:a:b

     c:t1。

     条件表达式类似于 if 语句,根据“?”前面子表达式得逻辑值来判断应该计算“:”前面得子表达式还就是后面得作为整个条件表达式得结果。题目要求输出 a、b、c3 个变量中得最小值,所以当 a<b 时,应该选 a,否则选 b,帮前一空应填 a:b。同理,后一空应填 c:t1。

     第四章 循环结构 参考答案 一、选择题: 1.

     B

     解析:a 得值为 1,a<6 为真,执行循环体,b 得值加 a 后为 3,a 得值加 2 后为 3,b 得值与 10求余运算后值为 3。

     ① a 得值为 3,a<6 为真,执行循环体,b 得值加 a 后为 6,a 得值加 2 后为 5,b 得值与 10求余运算后值为 6。

     ② a 得值为 6,a<6 为真,执行循环体,b 得值加 a 后为 11,a 得值加 2 后为 7,b 得值与 10求余运算后值为 1。

     ③ a 得值为 7,a<6 为假,不执行循环体,直接输出 a、b 得值为 7,1。

     2.

     A

      解析:k得值为5,进入循环,(--k)表达式得值为4(真),同时k得值改变为4,输出表达式k-=3 得值 1,同时 k 得值为 1。k 为 1,表达式(—k)得值为 0, 结束循环。

     3.

     A

      解析:X=0,y=5,z=3,(z>0&&x<4)值为真,进入循环体,y 值为 4,z 值为 2, x 值为 1 1. (z>0&&x<4)值为真,进入循环体, y 值为 3,z 值为 1, x 值为 2 2. (z>0&&x<4)值为真,进入循环体, y 值为 2,z 值为 0, x 值为 3 3. (z>0&&x<4)值为假,结束循环。

     4. 输出 x,y,z 得值 3,2,0 4.

     D

      解析:当 K 得值为 3 时,只执行 case

     3 后面得语句 n+=k,n 得值为 3;

     当 k 得值为 2 时,先执行 case

     2 后面得语句,但没有 break,所以不会退出,继续执行case

     3 后面得语句 n+=k,n 得值为 5; 当 k 得值为 1 时,先执行 case

     1 后面得语句 n+=k,n 得值为 6,先执行 case

     2 后面得语句(没有),继续执行 case

     3 后面得语句 n+=k,n 得值为 7。输出 n 得值 7。

     5.

     B

     解析: 在循环体中有“s+=1;”s 得初始值为 0,要让 s 得值等于 2 必须就是循环体执行两遍。当循环提执行两遍后 a 得值等于-3,所以在 n=-3 得时候循环体执行两遍后条件表达试(a!=0)为假,会退出循环。

     6. B

     解析: 程序开始时,y=10,while 循环中执行 y 自减运算,值得注意得就是她得循环体只就是一个空语句,则由于自减运算 y-- 得特点:先使用后自减,因为当 y 得值减为 0 时,while循环结束,但 y 变量依然执行自减运算,此时 y = -1。因此最终输出得 y 得值为 y=-1,因此选 B。

     7.

     A

     解析:x=3; 先执行循环体,输出表达式 x-=2 得值 1,同时 x 得值也改变成 1,再判断表达式得值(!x),x 得值为 1(真),(!x)为假,循环结束。

     8.

     B

     解析:分析:B 选项每次进入循环体,都要先执行 p=1;即 1 赋值给 p、所以不能求出 5!得值。

     9.

     D 解析:变量 i 每次增量为 2,变化过程为:1->3->5->7->9,语句 s+=1 每次执行使 s 增加得数为:2,4,6,8,10,所以 s 得值为自然数 1~10 中偶数得值。

     10.

     C

      解析:C 项 s=s+1/n, 1/n 首先运算,n 为整型变量,1 也就是整型变量,当 n=2„10 时,1/n得值为整数 0,故 C 不正确 11.

      B 分析过程与第 6 题类似。

     12.

     C 13.

     A 从键盘输入 1 2 3 4 5 0 后,程序从 main 函数开始执行,先将 1 读入到 s 变量中,while得判断条件 s>0 成立,则执行循环体。循环体语句就是一个 switch 结构得语句,依据 s得值去执行相应得 case 语句,直到碰到 break 语句跳出 switch 结构。第一次 s 为 1,执行case 1: 此时输出6,没有碰到break语句,继续执行case 2:输出5,紧接着碰到break语句跳出本次 switch 结构。然后程序再次读入整数 2 再次执行 while 循环„„。此题需要理解 switch 语句得执行过程。

     14.

     D

     解析:在循环中当 x 等于 0,3,6,9 时 x%3 等于 0,这时会进入 if 语句执行 printf 语句,在输出前 x 会先自加。屏幕上输出 14710。

     15. D

     解析:

     注意 a 变量在 for 循环得表达式 3 与循环体中都有改变。

     16.

     2345

     解析:选择中没有此答案。本题注意得就是在循环第一次进入 switch 语句得时候就是执行得 default 后面得语句块,由于没有 break,所以还会执行 case2:case4:后面得语句。

     17.

     A 解析: 首先执行++n,判断条件表达式 n<=0 为假退出循环。B 条件表达式 1 永远为真就是无限循环,C 条件表达式 n 得值为 10 永远为真就是无限循环,D 没有条件表达式,所以没有退出条件,就是无限循环。此题要注意得就是 0 为假,非 0 为真。

     18.

      B 解析:此题考查 for 语句得嵌套以及 if 语句得执行。此题输出得结果就是 m=1。

     分析:第一次循环 i=1,j=3 19.

     D

      解析:第一次循环x=8,x%3<>0,进入if语句输出x得值为8,然后x自减1,执行continue立即进行下次循环条件判断。第二次循环 x=6,x%3=0,不进入 if 语句,执行 if 语句后面得printf(“%d,”,--x),x 先自减 1 再输出得到 5。第三次循环 x=4,x%3<>0,进入 if 语句输出x得值为4,然后x自减1,执行continue立即进行下次循环条件判断。第四次循环x=2,x%3<>0,进入 if 语句,输出 x 得值为 2,然后 x 自减 1,执行 continue 立即进行下次循环条件判断。第五次循环 x=0,判断表达式 x>0 为假。结束循环输出结果为 8,5,4,2。答案 D 20. C 解析:第一次循环 a=0,a%2=0,进入 if 语句得 else 部分输出字符 A,第二次循环a=1,a%2=1,进入 if 语句输出字符 2, 第三次循环 a=2,a%2=0,进入 if 语句得 else 部分输出字符 C, 第四次循环 a=3,a%2=1,进入 if 语句输出字符 4, 第五次循环 a=4,a%2=0,进入 if语句得 else 部分输出字符 E, 第六次循环 a=5,a%2=1,进入 if 语句输出字符 6,此时 a=6,跳

     出循环,因此最终结果输出:A2C4E6。

     21. A 22. B

      解析:外层循环 3 次,i 得值在内层循环中依次为 1,2,3 内层循环次数依次为 3,2,1 次。

     23. D

     解析:代码“if(n%3!=0) continue;”无实际意义。当 n 自加到 4 得时候结束循环。答案D。

     24. D 解析: 表达式 2 为赋值语句 k=1,条件永远为真,会进入死循环。答案 D 25. A

      解析:0%任何数等于 0,所以第一次循环得时候就进入了 if 语句退出了 for 循环。i=21,i<20 为假,退出了 while 循环。a 得值为 21。

     26、 D

      解析:i 得初值为 0,第一次循环得时候满足 i<0,进入第一个 if 语句,执行 continue 直接进行下次循环,i 得值没有改变。第二次循环又重复了第一次循环得操作,所以就是死循环。

     27、

     B 解析:

     控制每行输出“*”号得过程。一共四行,每行输出奇数个。

     二.填空题: 1.

     7

     解析:从键盘输入 14 63 后程序将 14 赋给变量 m,63 赋值给变量 n,最外层得 while 条件m!=n 为真,进入循环体。循环体语句就是两组 while 循环,依次计算改变 m、n 得值直到 m=n时程序结束,因此最终输出 m 得值为 7。

     2.

     11 解析:循环得判断表达式为 i<5,i 得初值就是 1,所以 i 得值依次就是 1,2,3,4。

     sum=sum+1+2+3+4,sum 得值等于 11、答案就是 11 3.

     n=n/10

      解析:此题得解法就是先用输入得数据%10 可以得到个位数,再让输入得数据除以 10,使十位变成个位。循环使用上面得方法。当只剩下个位得时候也就就是 n 小于 10 得时候 n/10等于 0 退出循环。所以填入得就是“n=n/10”。

     4、

     3 4 解析:此题考查 for 循环语句得执行机制。表达式 3 在跳出循环前会执行一遍,因此 i得值最后为 3。

     5、

      5 解析:for 循环语句得循环体就是空语句。

     6、

     6

      解析:此题属于循环得嵌套。当 i=1 时,输出 0 个#号,当 i=2 时,输出 1 个#号,当 i=3时,输出 2 个#号,当 i=,4 时,输出 3 个#号,共输出 6 个#号。

     7、

     0

      解析:getchar()只能获得单个字符,输入“1234567890”ch 得值为‘1’。循环条件为假,循环一次也没有执行。答案为:0

     8、

     23

      解析:参考第 3 题。答案:54321 9、

     k<=n

     k++ 解析: 见书 59,64 页 while 与 for 循环得执行过程。答案:k<=n

     k++

     10、

      ACE 解析:理解字符转化为整形数使用到 ASCII 码,‘a’得 ASCII 码就是 97,‘f’就是 102,‘A’就是 65。答案就是 ACE 11、 k<=n 12、

      23

     解析:此题需理解得就是在 switch 中 case 后面没有 break 得话会继续执行下一个 case或 default 后面得语句。答案为 23 13. 1 3 2

     解析:m=0,n=0,k=0,i=9 ①当 i 值为 9 时,i<=11 为真,执行 switch 语句,(i/10)得值为 0,匹配 case 0,执行m++,n++,再执行 break 语句,跳出 switch 体,再执行 i++, i 值为 10;此时 m 值为 1,n 得值为 1,k 得值为 0、 ②当 i 值为 10 时,i<=11 为真,执行 switch 语句,(i/10)得值为 1,匹配 default,执行k++,n++,结束 switch 体,执行 i++,i 值为 11、 此时 m 值为 1,n 得值为 2,k 得值为 1、 ③当 i 值为 11 时,i<=11 为真,执行 switch 语句,(i/10)得值为 1,匹配 default,执行k++,n++,结束 switch 体,执行 i++,i 值为 12、 此时 m 值为 1,n 得值为 3,k 得值为 2、 ④ i 值为 12 时,i<=11 为假,结束 for 循环。最后输出 m,n,k 得值 132、 14、 i<10

     i%3

     解析:根据题意先得到 100 以内所有个位就是 6 得数,在判断哪些能被 3 整除。答案为i<10

     i%3!=0。

     15、

     074

      解析:当 a 得值为 0 时,a<20 为真,则执行 b=a%10 后 b 得值为 0,执行 putchar 函数后输出字符 0,for 循环中表达式 3 中每次 a 递增 7,所以第二次循环时,a 得值为 7,a<20 为真,则执行 b=a%10 后 b 得值为 7,执行 putchar 函数后输出字符 7。第三次 a 得值为 14,,a<20 为真,则执行 b=a%10 后 b 得值为 4,执行 putchar 函数后输出字符 4,此时执行表达式 3 后 a 得值为21,a<20 条件为假,循环结束。因此最终答案为输出:074

     第五章

     函数

     参考答案 一 选择题 1、C

     解析:在 C 程序得书写时,严格得缩进要求可以增强程序得可读性,但就是不会影响程序得编译于运行。

     2、B

     解析:在 C 程序中必须有且仅有一个主函数为 main 函数,它就是程序得入口与出口。但就是没有规定它在程序中具体得位置。

     3、A 4、B 5、A 解析:函数得实参可以使被调用函数得调用语句。但就是总之函数得实参个数之间用逗号隔开,个数,类型分别于形参得一一对应。

     6、B 解析:当程序在函数体中执行时,遇到 return 语句结束函数得调用。即使函数体中有多个 return 语句,但就是遇见第一个 return 语句时函数得调用就结束了,后面得return 语句就是不会再执行得(也就就是说即使有多条return语句,最终执行得只有一句)。而返回值就是 void 类型得函数一般有 return 语句就是缺省得,如果要有不能return 语句后面不能有返回值,可以就是 return;;如果函数体中没有使用 return 语句,当函数调用结束后,还就是会回到调用处得。

     7、B 解析:其她解析同上。return 语句中可以有表达式与常量,变量等。

     8、D、解析:调用语句可以出现在表达式,实参与当一句话独立存在,但就是不能出现在形参中,形参一般情况下就是变量。

     9、C 解析:考察得就是函数得调用;其中得实参有两个,实参 1 为逗号表达式最终得值,实参2 为自增表达式得值。

     10、C 解析:f1(x,y)得作用就是返回 x、y 中较大得,f2(x,y)得作用就是返回 x、y 中较小得。d=f1(a,b)=f1(4,3)=4

     d=f1(d,c)=f1(4,5)=5

     e=f2(a,b)=f2(4,3)=3

     e=f2(e,c)=f2(3,5)=3 此时各值为 a=4,b=3,c=5,d=5,e=3,f=a+b+c-d-e=4。所以答案 d, f , e 为 5, 4, 3 11、A 解析:函数不能嵌套调用,但就是可以自己调用自己成为递归;被调用函数在调用之前可以先声明,再调用,后定义;构成 C 程序得基本单位就是函数而不就是语句。

     12 、 C 解 析 :fun1(a)=a2,fun2(x,y)=(int)(fun1(x)+fun1(y))=(int)( x2+ y2), 所 以fun1(1、1,2、0)=(int)(1、21+4、0)=(int)5、21=5 由于 w 就是 double 型得,所以 w 得值为 5、0。

     13、C

      解析:函数得值就是单向传递得,只能就是从实参传到形参,而且只有当从实参传到形参时才为形参分配一定得存储空间。等函数调用结束后,这个空间就会被释放掉。

     14、B

     解析:考察函数得调用。调用语句中得实参有两个,实参 1 为表达式 2*a,其值为 8,实参 2 为调用语句 fun(b,c),在这个调用语句中又有两个实参分别传给 fun 函数得形参 a与 b,调用结束后返回得值为 5;故实参 2 得最终值为 5,再次调用函数 fun,分别把8 传给 a,把 5 传给 b,最后返回得结果值为 6、故答案选 B、 15、C

      解析:函数不能嵌套定义。改变形参得值不会影响实参得值。函数体中要使用 C 中得库函数,得包含定义其所在得头文件。

     16、A

     考察得就是函数得声明。在函数声明时,声明就是一句话,其中形参得类型不能省略,但就是形参名可以省略;声明时形参名可以与定义时得形参名不相同,但就是类型必须匹配;声明时必须指出函数得返回值类型与名称,这两点必须与定义时得返回值类型与名称一一对应。

     17、 B

     解析:允许这种函数说明得方式存在。如果只在主函数中说明,则只能在主函数中调用 f;如果在主函数以前说明,则包括主函数得所有函数都可以调用,如果同时主函数又说明了,则不影响。

     18、 B 19、 C 20、

     A 解析:程序得执行总就是从 main 函数开始,在 main 函数结束,无论 main 函数在程序得什么地方。

     21、 D 22、

     A 解析:函数 f(int v,int w)得功能就是将实参 v 与 w 进行交换,但就是实参值得变化对形参没有影响,所以本题中 x,y,z 中得值不发生变化。

     23、

     C

     解析:本题考察得就是函数得递归调用。在解决这类题时,先找出何时被调用函数调用结束,然后确定被调用函数总共被调用了几次。再分析最终得结果。

     24、 B 上面已经分析过同类问题。

     25、 A 考察得还就是递归调用得问题。

     26、 B、同时。

     27、 A、解析:在主函数中确定循环得次数为三次,实参 i 得值分别为 0,10、20、故调用 f函数得次数为 3 次;故结果为 1+101+401=503、 28、 B、解析:主函数中第一次调用 fun 函数时实参为 3,故调用 fun 函数时在函数体中循环了 3 次,输出了 3 个*;第二次调用 fun 函数时实参为 4,故输出了 4 个*;由此可以确定选择 B 答案。

     29、 B 30、 D 主函数得循环语句中对 fun 函数总共调用了 4 次,每次都返回形参 a 得值;只有在把值从实参传给形参时才为形参分配存储空间,等函数调用结束,这个空间会消失掉。所以形参 a 得值在每次调用时都为 2,故最后主函数中得 s 得值为 2*2*2*2=16、 二.填空题

     1.

      1.0,1、0,1、0 解析:分别求出变量得初始值。a=a*x 为得就是求 xn ,所以其初始值为 1,b=b*i 位得就是求 n!,所以其初始值为 1,当 n=0 时,s=1,所以 s 得初始值为 1。由 于定义得就是 double 型得数据,所以答案为 a=1、0,b=1、0,s=1、0; 2、m=fun(a,4)+fun(b,4)-fun((a+b),4); 解析:由程序可以瞧出 fun(x,n)=xn。fun(a,4)=a4,

     fun(b,4)=b4,fun(a+b,3)=(a+b)3,当要计算 m= a4+ b4+(a+b)3 时,函数调用语句 为 m= fun(a,4)+ fun(b,4)+ fun(a+b,3); 3、 x,x*x+1 解析:1)求 f(x)得累加与,即为求 f(0)+f(1)+ f(2)+ f(3)+ f(4)+„„,函数 SunFun 来实现此功能。括号中应该填入累加得序号值,即为 x。

     2)f(x)=x2+1,F(int x)函数来实现这个功能,所以填写 x*x+1。

     4. 5.0 解析:fun1(a)=a2,fun2(x,y)=(int)(fun1(x)+fun1(y))=(int)( x2+ y2),所以 fun1(1、1,2、0)=(int)(1、21+4、0)=(int)5、21=5 由于 w 就是 double 型得,所以 w 得值为 5、0。

     5、

      1 3

      解析:fun 函数就是一个递归函数,主函数中调用得 fun(3)共递归两次,fun(3)中又调用fun(3/2)即 fun(1),先输出 fun(1)中 x 得值,为 1,然后再输出 fun(3)中 x 得值为 3。所以结果为 1 3。

     6、 double max 解析:通过程序可以瞧出,main 函数中使用了 max 函数,而其她地方没有对 max 函数进行说 明 。

     所 以 程 序 中 应 该 对 max 函 数 进 行 说 明 。

     说 明 得 格 式 为 double max(double,double)。

     7、3,2,2,3

      解析:同课本本章第三节例 1。

     8、

     2 5 解析:同上面第 5 题相类似。

     9、

      55 10、

     30 0

     第六章 指针 参考答案 一、选择题 1

     答案:A

      分析:本题主要考指针赋值,n2=n1;就是把 n2 得值赋给 n1,故根据指针赋值得定义可知选 A,即把 q 所指对象得值赋给 p 所指对象。

     2

     答案:B

      分析:本题主要考指针定义,因为 p 指向变量 x,故输出其值得时候应该就是 x 得值。

     3

     答案:C

      分析:本题主要考指针得定义与赋值,C 前面就是定义一个量 a 并赋值为 10,后面定义一个指针,并把 a 得值赋给这个指针。

     4

     答案:D 5

     答案:A 分析:本题主要考得就是指针得变量得赋值,在使用 scanf()函数得时候,后面跟得就是一个地址,由于 pa 本身保存得就是地址,故选 A 6

     答案:D 分析:本题主要考得指针得赋值及指向指针得指针得赋值,根据定义知选 D。B 得正确形式就是**q=2;C 得正确形式应该就是 q=&p。

     7

     答案:C 分析:本题主要考得就是全局变量与局部变量,以及指针得用法,第一个 f(&a)得返回值就是5,第二个返回值就是 2。

     8

     答案:A

      分析:本题主要考得就是变量自加,指针传值,以及指针得赋值。通过第二行 a=b 可知 p1,p2指向得变量得值相同,都指向了 b 所指得对象,也就是 p2 所指得对象’a’,由于(*a)++;就是实现 a 所指对象得自加,故由’a’变成’b’,故最终选 A。

     9

     答案:A

      分析:本题主考 NULL,一般来说当我们把一个空值以整数得形式输出出来得时候,默认得情况就是 0。

     10

     答案:C 11

     答案:C

      分析:本题主要考指针得指针,c先指向b,b就是一个指针,它指向a,故c最终就是指向a得,故其值就是 a 中得值。

     12

     答案:A

     分析:本题主要考指针得赋值,我们不能把一个具体得值赋给一个指针变量。B 选项就是 w,p指向同一对象。C 就是 p 指向 a。D 就是把 w 所指对象得值赋给 p 所指对象。

     13

     答案:B

     分析:本题主要考指针传值,p,q 分别指向 a,b,然而 r 会指向它们得较小值。

     14

     答案:D

     分析:在 D 中把一个整形变量得值赋给一个指针得地址,故而就是错得。应该写成 p=&a。

     15

     答案:D 16

     答案:D 17

     答案:C

     分析:本题主要考指针标识符*与乘号*得区别,*p=*p1*(*p2)中第 1,2,4 个*号就是指针标识符,而第三个就是乘号,故其运算得结果就是 3。

     18

     答案:A 19

     答案:A

     分析:本题主要说得就是函数得递归调用,函数fun()实现得功能就是从1加到n,然后返回给主函数。

     20

     答案:D 分析:A 不能把一个具体得值赋给一个指针变量。B q 就是指向指针得指针只能保存指针得地址。C 同 B。

     21

     答案:D 分析:A 指针赋处初值时不能把一个具体得值赋给一个指针变量指向得地址。B 语法错误,C不能发地址赋给浮点型变量。

     22

     答案:C 分析:scanf()函数得输入数据列表应该就是合法得地址表达式。

     23

     答案:D 分析:A 中 b 需要预先定义,B 中字符变量 b 只能接收单个字符。C 中二级指针应定义为**c。

     24

     答案 D 25

     答案:B 二、填空题 1

     答案:8

     4

     分析:void f()函数里得x,y 分别就是一个指针变量与整型变量,指针 x 指向一个整型得变量,即指向主函数里得 x,故在函数 void f()里修改指针 x 得值,会影响到主函数里得 x得值,但修改 void f()里得 y 得值却不会影响到主函数里得 y 得值。因为主函数 x 传得就是地址,y 传得就是值。

     2

     答案:d。

     3

     答案:35 分析:p,q分别指向x,y,然后调用函数swap();它得功能就是把两个指针所指向得对象交换,原来 a,b 分别指向 x,y,但交换后分别指向 y,x,所以并不把指向得对象得值交换。

     函数返回后,p,q 仍然分别指向 x,y。故其值不变。

     4

     答案: n=n/10 分析:把n除以10,每执行一次就可以把数得阳未位去掉,因为两个整数相除,不会保留小数,故最低位会丢掉,并且把数缩小到十分之一。然后依次从个位到最高位把数字输出。

     5

     答案:654321

     第七章 一维数组 参考答案 一.选择题 1. 答案:B 分析:A 答案,初始化值得个数超过了常量表达式得值。C 答案,左边定义得就是普通字符变量。D 答案,整型数组不能赋字符串。

     2. 答案:D 考点:一维数组得定义 分析:一维数组定义得形式为:类型名

     数组名[常量表达式] 注意点:(1)常量表达式不能省略,不能为变量,但可以使宏定义名

     (2)数组名就是用户定义标识符。

     A 答案中没有 0…2008 这种形式得常量表达式。B 中省略了常量表达式,因此就是错误得。C 答案常量表达式不能为变量。

     3. 答案:D 分析:常量表达式不能为变量。

     4. 答案:B

     考点:循环与数组元素得引用 分析:int p[8]={11,12,13,14,15,16,17,18} (1) i=0,j=0,判断:i++<7 为真,i 得值为 1,判断 if 中得表达式(p[1]%2)为假,不执行 j+=p[1] (2) i=1,j=0,判断:i++<7 为真,i 得值为 2,判断 if 中得表达式(p[2]%2)为真,执行 j+=p[0]后 j 得值为 13 (3) i=2,j=13,判断:i++<7 为真,i 得值为 3,判断 if 中得表达式(p[3]%2)为假,不执行 j+=p[1] (4) i=3,j=13,判断:i++<7 为真,i 得值为 4,判断 if 中得表达式(p[4]%2)为真,执行 j+=p[0]后 j 得值为 28 (5) i=4,j=28,判断:i++<7 为真,i 得值为 5,判断 if 中得表达式(p[5]%2)为假,不执行 j+=p[1] (6) i=5,j=28,判断:i++<7 为真,i 得值为 6,判断 if 中得表达式(p[6]%2)为真,执行 j+=p[0]后 j 得值为 45 (7) i=6,j=45,判断:i++<7 为真,i 得值为 7,判断 if 中得表达式(p[1]%2)为假,不执行 j+=p[1] (8) i=7,j=45,判断:i++<7 为假,结束循环 (9) 输出 j 得值为 45 5. 答案:C 分析: 第一次循环,i=0,i%2=0,a[0]%2= 0,a[0]=a[0]+1=3; 第二次循环,i=1,1%2=1,a[1]=0; 第三次循环,i=2,a[2]%2=1,a[2]=a[2]-1=4; 第四次循环, i=3,i%2=1,a[3]=0。

     6. 答案:D 分析:ABC 三个答案都就是给所定数组范围外得元素赋值 7. 答案:A 分析:本题考察点就是,用 scanf 函数赋值时,空格,回车等间隔符都就是输入终止符 8. 答案:B

     分析:在定义指针变量 s 时将数组名 a 赋给 s,则 s 指向数组 a 得第一个元素,s+3 就指向数组 a 中得第三个元素 9. 答案:A 分析:同第 8 题 10. 答案:B 分析: 本题就是统计数组 s 中所放得字符串中有多少个数字字符。‘\0’代表着字符串得结束,所以,只有’0’,’1’,’2’三个 11.答案:C

      分析:数组 x 得类型就是 double,所以输入格式控制符应该用“%lf”,scanf 后面跟,地址,所以选 c 12、

     答案: D 分析:循环、数组元素得引用与逻辑运算 int p[7]={11,13,14,15,16,17,18} (1)

      i=0,k=0,判断:i<7&&p[0]%2 为真,执行k=k+p[0]后k得值为11,执行i++后i得值为1。

     (2) i=1,k=11,判断:i<7&&p1]%2为真,执行k=k+p[1]后k得值为24,执行i++后i得值为2。

     (3) i=2,k=24,判断:i<7&&p[2]%2 为假,结束循环。注意:2<7&&p[2]%2 左边为真,但就是右边为假,那么整个表达式为假。

     (4) 输出 k 得值为 24。

     13、

     答案:A 分析:循环嵌套...

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识