C语言笔试资料_第1页
C语言笔试资料_第2页
C语言笔试资料_第3页
C语言笔试资料_第4页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

2008年全国计算机等级考试

(二级C语言).....10 1.....10 16••…19.•…19・・・・・19•….21••…25…25.....26.....27••…32.....32 33.....34 36.....36.....37.....37••…43 43…..44.....44…・・50.....50…・,57.重点知^^^^[Z总表”.”".第1章程序设设计基本概念.第一部分本章知识点 第二部分:知识点分析 第三部分:典型试题分析......第2章C程序设计的初步知识第一部分:本章知识点 第二部分:知识点分析 第三部分:典型例题 .第3章顺序结构 第一部分:本章知识点 第二部分:知识点分析 第三部分:典.型例题 第4章选择结构 第一部分:本章知识点 第二部分:知识点分析 第三部分:典型例题 第5章循环结构 第一部分:本章知识点 第二部分:知识点分析 第三部分:典型例题 第6章字符型数据 第一部分:本章知识点 第二部分:知识点分析 第三部分:典型例题 第7章函数 第一部分:本章知识点 第二部分:知识点分析 第三部分:典型例题 第一部分:本章知识点 第二部分:知识点分析 第三部分:典型例题 第一部分:本章知识点第二部分:知识点分析第三部分:典型例题....第10章字符串 TOC\o"1-5"\h\z\o"CurrentDocument"第三部分:典型例题 58\o"CurrentDocument"第11章用户定义类型、结构体和共用体 63\o"CurrentDocument"第三部分:典型例题 66\o"CurrentDocument"第12章:宏替换和位运算 72\o"CurrentDocument"第一部分:本章知识点 72\o"CurrentDocument"第三部分:典型例题 74\o"CurrentDocument"第い章:文件 77\o"CurrentDocument"第一部分:本章知识点 77第三?分:典』例题 80

.重点知识汇总表章节知识点掌握情况备注第一章头文件的使用第二章(1)标识符的定义和分类(2)常量的两种使用方式(3)变量的定义和使用(4)整型数据 (5)实型数据(6)算术运算符及算术表达式(7)赋值运算符及赋值表达式(8)自加,自减运算符第三章(1)赋值语句(2)数据输入(scanf()函数的使用)(3)数据输出(printf()的使用)(4)复合语句和空语句第四章(1)关系运算符 (2)逻辑运算符(3)条件运算符 (4)条件语句第五章循环语句第六章(1)字符常量 (2)字符变量(3)字符的使用第七章(1)库函数 (2)函数的定义(3)函数的返回值 (4)函数的调用(5)调用函数和被调用函数的数据传递第八章(1)变量的地址和指针(2)指针的定义和基类型(3)指针的赋值(4)指针的操作(5)函数之间地址值的传递(通过指针)(6)相关运算符(间接运算符(*),求地址运算符(&))第九章(1)数组定义(2)ー维数组(3)二维数组第十章(1)字符串的定义和初使化(2)字符串变量的输入和输出(3)字符串数组(4)用于字符串处理的函数第十一章(1)用户定义类型(2)结构体类型第十二章(1)宏替换(2)位运算第十三章(1)文件的打开和关闭(2)文件的输入和输岀.第1章程序设设计基本概念第一部分本章知识点知识点要求掌握程度06年4月06年9月07年4月07年9月C语言程序由函数构成重要2201头文件的使用重要38504341注释的使用了解(便于自己阅读程序)1101源程序,目标程序及可执行程序之间的转换重要(编译,运行程序的必需知识)1011程序设计和程序的表示重要(为写C程序打基础)1210结构化程序和模块化结构一般(为后续知识打基础)3221第二部分:知识点分析一.程序是由函数构成,main函数和其他函数。(本章重点掌握main函数).C语言程序的执行起始于main函数,终止于main函数.每个函数由一对大括号括起来..函数由函数头和函数体两部分组成.其中函数体内由语句构成,语句与语句之间由分号分隔.二.头文件的使用。.由#include引出头文件..引出头文件的两种方式:(l)#inchide”头文件名.h” 这种方式是由文件的当前目录找到所需的函数includeく头文件名.h> 这种方式是由文件的开始目录找到所需的函数.最后没有分号结束如:#include"stdio.h''三.注释的使用:.由一对/・构成,即:/*…注释语句….*/.ッ‘和"*''间不能有空格.只能一对配对使用,不能或两对以上一起使用如:/*…注释语句…/*…注释语句…*/ */.C语言程序由源程序向目标程序再向可执行程序的转化.源程序向目标程序的转化(编译).目标程序向可执行程序的转化(连接).程序设计(流程图)和程序的表示(C语言源程序)。语言是交流的工具,程序是指令的集合,而程序设计就是用计算机语言对所要解决的问题进行完整而准确的描述过程。一个完整的程序应该涉及到以下四个方面的问题:1分析问题,建立数学模型;2确定数据结构和算法:3编制程序;4测试程序程序的结构化技术是程序设计的基本技术,它使得程序在逻辑上层次分明、结构清晰、易读、易维护,从而提高程序质量和开发效率。采用结构化程序设计方法,并且用流程图表示算法是必须的,将算法转换成程序代码,并注意程序风格,这都是编写代码时要注意的问题。.结构化程序和模块化结构.C语言程序由函数构成.因此形成模块化结构.每个函数内部由顺序结构,选择结构和循环结构组成,因此构成结构化程序.第三部分:典型试题分析例题1:结构化程序设计的3种结构是:(A)顺序结构,选择结构,转移结构(B)分支结构,等价结构,循环结构(C)多分支结构,赋值结构,等价结构(D)顺序结构,选择结构,循环结构答案为D考査C程序中的三种结构解析:顺序结构、选择结构和循环结构(或重复结构)是结构化程序设计的3种基本结构。例题2:以下叙述中正确的是C语言比其他语言高级C语言可以不用编译就能被计算机识别执行C语言以接近英语国家的自然语言和数学语言作为语言的表达形式C语言出现的最晚,具有其他语言的一切优点答案为C考査(炉・的一般特点解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,选项A)错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B)错误;C语言出现于1972年至1973年间,并不是出现最晚的语言,选项D)错误。例题3:用高级语言编写的程序称为程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序次翻译产生目标程序,然后执行。(A)目标程序(B)源程序(C)可执行程序(D)可编译程序答案为B考查C语言程序的编写及执行情况解析:用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有两种方式:一种是通过解释程序,对源程序逐句解释执行;另ー种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程序),然后执行目标程序。例题4:程序设计语言的基本成分是数据成分、运算成分、控制成分和(A)对象成分(B)变量成分(C)语句成分(D)传输成分答案为D考査C语言程序设计的步骤解析:程序设计语言是用于书写计算机程序的语言,其基本成分有以下4种,数据成分:用来描述程序中的数据。运算成分:描述程序中所需的运算。控制成分:用来构造程序的逻辑控制结构。传输成分:定义数据传输成分,如输入输出语言。例题5:结构化程序设计上要强调的是(A)程序的规模(B)程序的效率(〇程序设计语言的先进性(D)程序易读性答案为D考查结构化程序的主要关注面解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化,总的来说可使程序结构良好、易读、易理解、易维护。例题6:ー个C语言程序是由(A)■"个主程序和若干子程序组成(B)函数组成(〇若干过程组成(D)若干子程序组成答案为B考査C语言程序的最小组成单位为函数解析:C程序是由函数构成的。ー个C源程序至少包括ー个main函数,也可以包含ー个main函数和若干个其他函数。因此,函数是C程序的基本单位,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数。例题7:调用C语标准库函数时要求用命令。(A)define(B)include(C)type(D)switch答案为B考査应如何使用库函数解析:include命令可调用标准的C语言库函数,可以用ー对尖括号或ー对双引号,但要在前面加"#"。例题8:C语言程序的注释可以出现在程序中的任何地方,•个注释以一作为开始和结束。(A)/ / (B)* * (C)/* */ (D)— —答案为C考査注释应如何使用解析:C语言程序的注释可以出现在程序基本单词之间的任何地方,C语言程序的注释以'/*’作为开始标记,并以‘*/'作为结束标记。例题9:在计算机中,算法是指(A)加工方法(B)解题方案的准确而完整的描述(〇排序方法(D)查询方法答案为B考查对算法概念的了解解析:计算机算法是指解题方案的准确而完整的描述,它有以下儿个基本特征:可行性、确定性、有穷性和拥有足够的情报。例题10:对建立良好的程序设计风格,下面描述正确的是(A)程序应简单、清晰、可读性好(B)符号名的命名只要符合语法(〇充分考虑程序的执行效率(D)程序的注释可有可无答案为A考査对程序设计的了解解析:程序设计应该简单易懂,语句构造应该简单直接,不应该为提髙效率而把语句复杂化。例题11:C语言程序的基本单位是(A)程序行(B)语句(C)函数(D)字符・査C语言的基本组成单位解析:c语言是・个函数语言,C语言的主体就是•个主函数,然后有库函数和用户自定义的函数来配合主函数完成ー系列的任务,所以说,C语言的基本单位是函数。第2章C程序设计的初步知识第一部分:本章知识点知识点掌握程度06年4月06年9月07年4月07年9月标识符的定义和分类重要32415648常量的两种使用方式重要28395445变量的定义和使用中:要37415450整型数据重要32374439实型数据重要10535算术运算符及算术表达式重要32364435赋值运算符及赋值表达式重要34334743自加,自减运算符重要20131919逗号运算符重要2100第二部分:知识点分析ー标识符的定义和分类.定义程序中需要写程序的人命名的各种变量(变量,文件名,数组名,函数名等)。由下划式线,数字及字母组成(其中第一个位置只能是字母或者下划线).分类:(1)关键字:C已经用了的,命名时不能使用的标识符(见附录)(2)预定义标识符:跟在"#"之后的标识符(如:include,define)(3)用户(即写程序的人)所命名及使用的标识符二变量的定义和使用.定义:变量实际上是ー个存储空间(这是C语言的核心).使用:先声明后使用,即在内存中得到存储空间后再去使用这个空间三常量的两种使用方式.第一种使用方式:直接使用(如:1.5)2,第二种使用方式:定义ー个符号常量来代替ー个常量注意:符号常量一定是大写的 如:#definePI3.1415926四整型数据.分为整型常量和整型变量.无论是常量还是变量,都分为几种类型类型符号所占字节基本整型int4短整型short2长整型long8无符号基本整型unsignedint4无符号短整型unsignedshort2无符号长整型unsignedlong8注意:各种不同的类型所占用的字节数是不ー样的五实型数据.也分为实型常量和实型变量.无论实型常量还是变量,都分为单精度型实数和双精度型实数类型符号所占字节被读入有效位单精度型实数float47位双精度型实数double815〜16位六算术运算符及算术表达式.算术运算符:+-* / %(其余算术运算符见附录).求余运算符两边都必须为整型数据:整型数据%整型数据.算术表达式:由算术运算符形成的式子如:2+3=5 x-y=94.运算符的优先级:运算符类型字母表示圆、中括号,指向结构体成员0、[卜ッ、.单目运算符!、〜、++、--、+(求正)、ー(求负)、・、&(求地址)、(类型名)、sizeof算术运算符・、ノ、%算术运算符+(加法)、-(减法)位运算符«>»关系运算符V、<=>>、>=关系运算符 1_位运算符&位运算符A位运算符1

逻辑运算符&&逻辑运算符II条件运算符?:赋值运算符=、+=、•=>*=、ノ=、%=、&=、ハ=、1=、《=、»=逗号运算符.运算符的结合性单目运算符:从右至左双目运算符:从左至右.强制类型转换表达式:(类型名)如:(int)a+b(int)(a+b)注意:上面两个强制类型表达式所强制转换的范围七.赋值运算符及赋值表达式.是赋值号而不是等号.赋值表达式:误误确确误误确确注意:赋值号左边只能是一个变量。不能是常量或者多个变量.复合赋值运算符:见上表八.自加,自减运算符a++,a一 先运算再加(减)1++a,-a 先加1再加(减)1九.逗号运算符:结果为最后一个表达式的值如:c=(a+b,m+n,j*k,h*h,n/m)则c的值为最后一个表达式n/m的值第三部分:典型例题例题1:C语言中最简单的数据类型包括(A)整型、实型、逻辑型(B)整型、实型、字符型(〇整型、字符型、逻辑型(D)字符型、实型、逻辑型答案为B考査C语言关于数据类型的掌握(最基本的知识架构)解析:本题考查C语言的数据类型。在C语言中,没有专门的逻辑型数据类型,可以用0和1来表示逻辑值。所以,在本题的选择答案中,不应该包括逻辑型。例题2:若变量已正确定义并赋值,以下符合C语言语法的表达式是a:=b+1a=b=c+2int18.5%3a=a+7=c+b答案为B考査对算术运算符和赋值运算符的使用解析:选项A)中包含ー个不合法的运算符”:ゴ;选项C)应改为(int)18.5%3i选项D)可理解为两个表达式:a+7=c+和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。例题3:下列可用于C语喜用户标识符的•组是void,define,WORDa3_b3,_123,CarFor,-abc,IFCase2a,DO,sizeof答案为B考査(1)标识的分类(2)用户标识符应如何命名(不提倡死记,随时翻一下附录,看一下C语言里用了那些关键字)解析:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D)。C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。例题4:C语言中运算对象必须是整型的运算符是%=/(C)=(D)<=答案为A・査求余运算符两边的数据都必须为整型数据解析:C语言规定:取余运算符的运算对象必须是整型,复合运算符“%ゴ中包含%运算,它的运算对象也必须是整型。例题5:若变量a,i已正确定义,且i已正确赋值,合法的语句是a==l++i;a=a++=5;a=int(i);答案为B考查对赋值运算符的使用解析:选项A是ー个表达式,因为缺少分号,所以不是语句:选项C)包含ー个不合法的运算符“++ゴ;选项D)应改为a=(int)i;.例题6:若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(A)2.500000(B)2.75(X)(M)(C)3.500000(D)0.000000答案为A考査对运算符的灵活使用,即各种运算符的优先级解析:x+y的值为实型7.200000,经强制类型转化成整型7。a%3的值为1,ド7的值为7,7%2值为1。1/4的值为〇,而非0.25,因而为两个整数相除的结果为整数,舍去小数部分。与实型x相加,最终得结果为2.500000。例题7:请选出可用作C语言用户标识符的是void,define,WORDa3_b3,_123,lFFOR,—abc.Case(D)2a,Do,Sizeof答案为B考查(1)标识符的分类 (2)如何区分三种标识符 (3)如何定义一个用户标识符要结合附录看,但不用死记硬背,熟能生巧解析:C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的:此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。例题8:在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是a=2OOOO+2OOOO;a=4000*10;a=30000+10000;(D)a=4000L*10L答案为D考査各种类型变・所占字节空间解析:4000()己经超过了C语言规定的短整型的范围。要将这样的数赋值给ー个长整型的变量,需要在整型常量后面加字母L。例题9:以下不正确的叙述是(A)在C程序中,逗号运算符的优先级最低(B)在C程序中,APH和aph是两个不同的变量(C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变(D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值答案为D考査本章的运算符优先级,用户标识符,赋值运算符,各种能接受的值(考了这么多知识点,答对了只得一分,遇到这种题,如果有知识点的遗忘,先做后面的應,再倒回来做)解析:在C语言所有的运算符中,逗号运算符的优先级最低。C语中区分大小,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变:通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等。例题10:若x,ij和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为(A)4 (B)16 (C)32 (D)52答案为C考査对逗号运算符的使用解析:逗号表达式的形式如下:表达式1,表达式2,表达式3, 表达式n逗号表达式的要点:1)逗号表达式的运算过程是从左往右逐个计算表达式。2)逗号表达式作为ー个整体,它的值为最后一个表达式(也即表达式n)的值。3)逗号运算符的优先级别在所有运算符中最低。例题11:设有intx=ll:则表达式(x++*l/3)的值是(A)3 (B)4 (C)11 (D)12挺案为A与査对自加运算符的使用,此题中的自加运算符是先运算再加1解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增1,所以表达式(x++*l/3)權于(11*1/3)取整后为3。例题12:下列数据中,不合法的C语言实型数据的是(A)0.123 (B)123e3 (C)2.1e3.5 (D)789.0答案为C考査实型数据的两种表达形式:小数形式和指数形式解析:在C语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,e3、2.1e3.5、.e3、e等都是不合法的指数形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必须有数字,且e的后面必须是整数。例题13:设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f值的数据类型为intfloatdouble(D)不确定答案为C考査当参加运算的数据为什么类型时,数据类型应该怎么转换解析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。例题14:设以下变量均为int类型,表达式的值不为7的是(x=y=6,x+y,x+1)(x=y=6,x+y,y+l)(x=6,x+l,y=6,x+y)(y=6,y+l,x=y,x+1)答案为C考査逗号运算符的使用解析:本题考查逗号表达式的用法。C语言屮逗号“,”也是•种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n,它的值为表达式n的值。例题15:设变量n为noat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是n=(n*100+0.5)7100.0m=n*100+0.5,n=m/100.0n=n*100+0.5/100.0n=(n/100+0.5)*100.0答案为B考査数据转换规律解析:选项A),C),D)答案中的n没有按题目要求进行任何转换,得到的结果达不到题目的要求,选项B中,先求出n*100+0.5的值,n的第3位小数四舍五入,后面的小数忽略变成整数m,将nVIOO.O的值赋给n时,先转换其类型,然后再赋值给n,即达到题目要求。例题16:以下选项屮,与k=n++完全等价的表达式是k=n,n=n+ln=n+l,k=nk=++nk+=n+l答案为A考査自加运算符的使用解析:k=n++的意思是先将n的值赋给k,然后n的值再加1,选项A)符合题意;选项C)是先使n的值加1,然后再赋值给k;选项D)等价于k=k+(n+l)o例题17:若有以下定义,则能使值为3的表达式是intk=7,x=12;x%=(k%=5)x%=(k-k%5)x%=k-k%5(x%=k)-(k%=5)答案为D考査求余运算符的使用解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:X%=k,等价于x=x%k。例题18:若有以下程序段:intcl=l,c2=2,c3;c3=1.0/c2*cl;则执行后,c3中的值 。0 (B)2 (C)5 (D)8答案为A考査参与运算的数据类型不一致时,数据所做的类型转换解析:在赋值运算中,如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。系统会计算1.0/C2,由于1.0是实型,所以均先转化为双精度型0.500000,再和cl转化后的双精度数相乘得0.500000。但其要赋值给整型变量c3,故要进行强制转换,c3的值为〇。例题19:下面四个选项中,均是合法整型常量的选项是(A)160-Oxffff011-Oxcdf01aOxe(C)-01986,0120668(D)-0x48a 2e5Ox答案为A是査不同进制的数字范围解析:解答本题时,我们必须要明白"进制’‘数的表示方法。按不同的进制区分,整型常数有3种表示方法:十进制数:如:220,-560,45900ハ进制数:以〇开始的数数字范围〇〜7.如:06,0106,05757十六进制数:以0X或Ox开始的数数字范围〇〜9,a~f或A〜F如:OXOD,OXFF,0x4e,-0x48a另外,可在整型常数后添加一个"L"或"1"字母表示该数为长整型数,如22L,0773L,0Xae41。例题20:以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x+y+z的C语言表达式是x/y*zx*(1/(y*z))x/y*l/zx/y/z答案为A考査是否能灵活运用算术运算符解析:本题中,“()”的优先级是最高的,“*"和“/''的优先级别相同,运算方向是从左向右。例题21:若变量已正确定义并赋值,下面符合C语言语法的表达式是m:=5c=b=a=1float8%5x+5=y+2答案为B考査是否能灵活运用赋值运算符解析:选项A)中的赋值方法为Pascal语言赋值格式;C语言中赋位直接为“ゴ无冒号;选项D)中“x+5=y+2”赋值格式错误,赋值号左边不可以出现常量,也不可以同时出现两个变量。选项C)应改为(float)8%3例题22:已知intk,m=[;执行语句k=-m++后,k的值是(A)-1 (B)0 (C)1 (D)2答案为A考査自加运算符的使用解析:当++运算符做后缀使用时,只有这个语句结束时候,变量オ被增1。在C语言中,++运算符和负号运算符是同优先级别,结合方向为“自右向左”。例题23:已知intm;floatk;正确的语句是(intk)%mint(k)%mint(k%m)(int)k%m答案为D考査(1)求余运算符的使用 (2)强制类型转换运算符的使用解析:取余运算符的运算对象只能是整型,所以强制转换运算符号应该把浮点型转化为整型。强制类型转换表达式的形式如下:(类型名)表达式,取余运算符(%)的运算对象只能是整型。

.第3章顺序结构第一部分:本章知识点知识点掌握程度06年4月06年9月07年4月07年9月赋值语句.般34364743数据输入(scanf()函数的使用)重要13968数据输岀(printf()的使用)朮要:34413736复合语句和空语句一般16378第二部分:知识点分析■赋值语句:赋值表达式+分号如:x+y=3 赋值表达式x+y=3; 赋值语句二数据输入1.数据的输入是调用库函数scanf()实现的.2.scanf()函数是在文件stdio里,所有要在程序的开头写:include<stdio.h>或include,,stdio.h"3.scanf()函数的使用格式:scanf(“格式控制”,输入项表)(1)格式控制部分分为两部分:原样输入+输入类型控制(2)输入类型控制包括:格式控制说明%c%s(1),入ー个字符(2),入字符串%d输入十进制整理敷%i,入整型數,可以是帯前导。的ハ进制数,帯前导o、或前导。、的十六进制数%o以ハ进制形式,入八进制数(可带前导〇,也可不帯)%x以十六进制形式・入十六进制敷(可帯前导0X或Ox,也可不带)以帯小敷点的形式,入单精度或双精度敷%e或%le以指数的形式,入单精度或双精度数

(3)格式控制和输入项表之间以逗号相隔,各输入项之间也以逗号相隔三数据输岀数据的输出是调用库函数printf()实现的.printf()函数是在文件stdio里,所有要在程序的开头写:include<stdio.h>或include,,stdio.h>,printf()函数的使用格式:printf(“格式控制”,输出项表)(1)格式控制部分分为两部分:原样输出+输出类型控制SWWTF W5DSWWTF W5D 结平整亜dniノ出甥齐出器溺醫)至1?裡H訪女聖qnoaiノ嬲齐臓[B&)燭嘲…qaouDieノ・齐腮聯%于付甲<cnarノ嶋臓園嬲 無常昼湍形式含史%c输出ー个字符%d输出带符号的十进制敷%〇以八进制无符号形式,出整型数(不帯前导0)%、或%X以十六进制无符号形式,出整理敷(不帯前身。X或0X)%f以帯小数点的形式,出双精度和单精度数%e或%E以指数形式输出单精度和双精度敷%s,出字符串中的字符,直到福到,'旷%p・岀变・的内存地址(3)格式控制和输出项表之间以逗号相隔,各输出项之冋也以逗号相隔四复合语句和空语句.复合语句:多条语句用ー对大括号括起来,形成一条语句,称为复合语句.空语句:ー个分号注意:复合语句在后续竞节用得很多,要把概念弄清,是多条语句应用・对大括号之后形成•条语句.第三部分:典型例题例题1:若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋ア100,b赋ア22.0,c赋ア33.0,下列不正确的输入形式是10<回车>22〈回车>33〈回车〉10.0,22.0,33.0〈回车〉10.0〈回车>22.033.0C回车〉1022(回车>33〈回车〉答案为B考査对输入函数的使用解析:在C语言中,当・次输入多个数据的时候,数据之间要用冋隔符,合法的间隔符可以是空格、制表符和回车符。逗号不是合法的间隔符。例题2:以下程序的输出结果是ー。inta=1234;printf(,,%2d\n,,»a);(A)12 (B)34 (01234 (D)23答案为C考査对输出函数的使用(当提供空格不满足需要时,以数据的实际位数来进行输出)解析:在%与格式符之间插入ー个整型数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。例题3:以下程序的输出结果是〇main(){inta=0;a+=(a=8);printf("%d\n”,a);}(A)8 (B)0 (C)16 (D)32答案为C考査(1)复合赋值运算符的使用(2)输出函数的使用解析:赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:a+=(a=8)此时,a的值由于赋值为8,而不是〇a+=8a=a+8a=16例题4:下列程序段的输出结果是:inta=1234;floatb=123.456;doublec=12345.54321;printf("%2d,%2.1f,%2,lF,a,b,c);(A)无输出(B)12,123.5,12345.5(C)1234,123.5,12345.5(D)1234,123.4,1234.5答案为C善査输出函数的使用解析:(Dprintf函数的浮点数缺省输出格式:在printf函数的输出中,若无输出宽度限制,每种数据都有•个缺省的输出宽度,一般浮点数的小数位数则是6位,不管输出格式是%减%If皆如此。(2)printf函数的浮点数宽度限制输出:以%mf或%mlf格式输出浮点时,如果指定的宽度大于实际数据宽度,按指定宽度输出,且多余数补以空格;如果指定的宽度小于实际数据宽度,浮点数的整数部分将以实际数据(位数)输出。小数部分按指定数输出,且对数据做四舍五入处理。(3)printf的整数限宽输出:没有宽度制的整数原数输出。在宽度限制于数的实际位数时,宽度说明无效,按数的实际位数输出。例題5:下列程序的输出结果是16.00,请选择main(){inta=9,b=2;floatx= ,y=l.l,z;z=a/2+b*x/y+l/2;printf("%5.2f\n",z);(A)5.5 (B)3.5 (C)6.6 (D)6.8答案为C・査(1)数据类型的转换(2)输出函数的使用解析:本题最后•条语句,表示以浮点格式输出z的值,宽度为5,其中所含2位小数,应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解:16.00=9/2+2*x/l.1+1/216.00=4+2*x/l.l+012.00=2*x/l.l所以,x的值为6.6。例题6:下列程序的输出结果是main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);)(A)3 (B)3.2 (C)0 (D)3.07答案为C考査(1)数据类型的转换(2)输出函数的使用解析:程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量X。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进行加法运算,得到中冋结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的位为0,d*y的值也为。。例题7:以下程序的输出结果是main(){inta=21,b=l1;printf("%d\n",-a+b,-b+a);)(A)30 (B)31 (C)32 (D)33答案为B考査(1)逗号表达式的运用于(2)自减运算符的使用(3)输出函数的使用解析:该题考查的是C语言中自减运算符和逗号表达式的应用。自减运算符位于变量之前时,先使变量的值减1,再进行赋值运算。逗号表达式的一般形式为:表达式1,表达式2,其求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。例题8:若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是(A)3〈回车〉 (B)3,5,8〈回车〉 (C)3〈回车〉 (D)35〈回车〉5c回车〉 58〈回车〉 8c回车〉8〈回车〉答案为B考查输入函数的使用解析:本题中,“%d%d%d”表示按整型数形式输入数据,输入数据时,在两个数据之间以ー个或多个空格间隔,也可以用回车键或Tab键。选项B)中不应该使用逗号。例题9:x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是INPUTx,y、z;scanf("%d%d%d",&x,&y,&z);scanf("%d%d%d",x,y,z);read("%d%d%d",&x,&y,&z);答案为B考査输入函数的使用解析:scanf函数的一般格式是:scanf(格式控制,地址表列)该格式中,地址表列中应是变量地址,而不是变量名。

第4章选择结构第一部分:本章知识点知识点掌握程度06年4月06年9月07年4月07年9月运算符重要30222832系算マ运符辑算nr运符H算r条运符<&&?:<=>II>=1!=艮件语句重要21121511if语句if...else语句if...else嵌套语句sitch+break语句第二部分:知识点分析-运算符1关系运算符:总共只有6个,且结果值只有2个:0或者1.结果为0时表示为假,结果为1时表示为真,例如:运算符号运算结果<5<6=1<=5<=6=0>5>6=0>=5>=6=0—5==6=0!二5!=6=12.逻辑运算符:总共有3个,且结果值只有2个:〇或者1结果为0时表示为假,结果为1时表示为真,例如:运算符号运算结果&&1&&1=11&&0=00&&1=00&&0=0II1II1=11110=10II1=10110=01!0=1!1=03.条件运算符级(1)是三目运算符(2)使用格式为:表达式1?表达式2:表达式3先计算表达式1的值.为真时整个条件表达式的值为表达式2的值;为假时整个条件表达式的值为表达式3的值.

二条件语句l.if语句if(判别表达式)语句;一条语句的使用方式3.if...else嵌套语句if(判别表达式)一条语句的使用方式3.if...else嵌套语句语句1;elseif(判别表达式)语句2;elseif(判别表达式)>一条语句的使用方式语句>一条语句的使用方式elseif(判别表达式)语句4;else语句n;if(判别表达式){语句1;语句2;语句3 语句n;}elseif(判别表达式){语句1;语句2;语句3貝…语句n;}elseif(判别表达式)(语句1;语句2;语句3;语句n;}elseif(判别表达式){语句1;语句2;语句3貝…语句n;}else{语句1;语句2;语句3£・.・语句n;}多条语句的使用方式(即先把多条形成一条复合语句)注意:.if...else嵌套语句不提倡经常使用,因为嵌套很多的时候,程序很难读懂.4.swilch语句和break构成的选择语句switch(运算式子)(case常量值1:语句1;语句2;语句3;语句n;break;case常量值2:语句1;语句2;语句3貝…语句n;break;case常量值3:语句1;语句2;语句3;.・・・语句n;break;case常量值4:语句1;语句2;语句3;语句n;break;case常量值n:语句1;语句2;语句3;语句!!;break;default:语句1;语句2;语句3;语句n;由switch后紧跟的算式得到的值,和case后的常・值进行比较,找到程序的运行起始点.注意:本章只有两个知识点,这两个知识点务必・定要完全掌握第三部分:典型例题例题1:有如下程序:main()(intx=l,a=(),b=();switch(x)(case0:b++;a++;a++;b++;)printf("a=%d,b=%d\nn,a,b);}该程序的输出结果是(A)a=2,b=l (B)a=l,b=l(C)a=l,b=0 (D)a=2,b=2答案为A考査switch语句的执行(注意不是switch语句+break语句的使用)解析:该题目的关键是要搞清楚该程序执行了哪几条语句。由于x的值等于1,所以switch结构中,程序从easel后面的语句开始执行,又因为easel后面的语句没有以break结束,所以程序要继续往下执行case2后面的语句。所以,该程序共执行了这三条语句:a++;a++;b++;因此,变量a和b最后的值应该为2和1。例题2:有以下程序main(){inti=l,j=l,k=2;if((j++llk++)&&i++)printf("%d,%d,%d\n",i,j,k);}执行后输出结果是(A)1,1,2 (B)2,2,1 (C)2,2,2 (D)2,2,3答案为C是查il语句以及逻辑运算符的使用解析:该题目的关键是要搞清楚“&&“和"”两个逻辑运算符的运算功能。运算符“&&"和TI”是双目运算符,要求有两个运算量。且规定逻辑与运算中,只有前面运算量的值为真时,オ需要判别后面的值。只要前面为假,就不必判别后面的值。而逻辑或则为只要前为真,就不必判别后面的值;只有前为假,オ判别后。本题中j++值为真,不进行k++的运算,所以k的值保持不变。例题3:有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf(u%f\n'\y);)该程序的输出结果是(A)0.000000 (B)0.250000 (C)0.500000 (D)1.000000答案为C考査if...else语句的使用解析:该题目测验考生对if...elseif结构的理解,比较简单。x的值满足x<10.0的关系,所以程序将执行y=1.0/x;语句,y的值应该等于0.5。最后,用printf函数输出时,%f的输出格式为小数点后保留6位。例题4:应intx=l,y=l;表达式(!xlly-)的值是(A)0 (B)1(〇2 (D)-1答案为A考査逻辑运算符的使用解析:C语言规定的运算优先级由高到低分别是逻辑非、算术运算、逻辑或。所以先计算!x,值是〇,然后再计算y-,由于是后缀运算符,所以y在本次运算中的值仍然是1,最后计算0111,值为1。例题5:若运行时给变量x输入12,则以下程序的运行结果是main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);)(A)0 (B)22 (C)12 (D)10梵案为A分查条件运算符的使用解析:本题考查的是三目运算符的用法,三目运算符的形式为(表达式1)?(表达式2):(表达式3)。当(表达式1)的值为真时,求(表达式2)的值为整个表达式的值;如果(表达式1)的值为假,则求(表达式3)的值为整个表达式的值。题中,表达式x>12的结果为假,所以执行的语句是x-12,最终y的值应该是〇。例题6:在C程序中,判逻辑值时,用“非〇"表示逻辑值“真'又用“〇'’表示逻辑值“假’‘。在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。(A)1 0 (B)01 (C)非〇非〇 (D)11答案为A・査关系运算符及逻辑运算符的运算结果有那些值解析:在C程序中,判断逻辑值时,用非〇表示真,月扑表示假。逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用〇表示。例题7:有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x>10.0)y=1.0/x;elsey=l.0;printf("%f\n",y);)该程序的输出结果是(A)0.000000 (B)0.250000 (C)0.500000D)1.000000答案为D考査if...else嵌套语句的使用解析:本题考査if语句中的ー种表达方式,即:if…elseif…。该表达式的语句是:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3else语句4例题8:有如ド程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');执行该程序段后,x的值为(A)ture(B)false(C)0 (D)1答案为D考査逻辑运算符的使用解析:在C语言中,逻辑运算符有4个,它们分别是:!(逻辑非)、II(逻辑或)、&&(逻辑与)、ヘ(异或)。在位运算里面还有&(位与)、1(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&&b)&&(c<'B');中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<‘B’是成立的,显然,该表达式的值为1。例题9:以下程序输出的结果是_。main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);)(A)0(B)l(C)2 (D)3答案为B考査关系运算符的使用解析:本题的关键在于对变量c的赋值运算:d=(a>b>c)d=(5>4>3)先算5>3,为真,得1,即:d=(1>3),此时1>3,为假,得〇。例题10:能正确表示逻辑关系:“a》10或aWO”的C语言表达式是a>=10ora<=0 (B)a>=0la<=10 (C)a>=10&&a<=0 (D)a>=10IIa<=0答案为D考査关系运算符的使用解析:本题考查C语ぎ的逻辑表达式及逻辑或(“H”)运算符的用法。TI”表示或的意思,T”是按位或的意思,“&&”是并且的意思,C语言中没有“。r”。例题11:有如下程序main(){inta=2,b=-l,c=2;if(a<b)if(b<0)c=0;elseC++;printf("%d\n",c);该程序的输出结果是

01230123答案为C考査if…else嵌套语句的使用解析:if语句嵌套使用时,应当注意if与else的配对关系,else总是与它上面的最近的建配对。因此,本题中先判断(a<b),表达式值为0,则不执行下面的if语句,直接跳到printf语句中(c的值不变)。例题12:若变量c为char类型,能正确判断出c为小写字母的表达式是(A)'a'<=c<='z'(c>='a')II(c<='z')(a'<=c)and('z'>=c)(c>='a')&&(c<='z')答案为D考査关系运算符和逻辑运算符的使用解析:字符型数据在计算机内部是以ASCII存储的,英文大写字母和小写字母在ASCH码表中都是连续的,大写字母A到Z是从65到90,小写字母a到z是97到122。所以只要变量c大于a并且小于z就能保证其为小写字母。例题13:若已知a=10,b=20,则表达式!a<b的值为〇(A)l(B)0 (00.5 (D)2答案为A考査关系运算符和逻辑运算的使用解析:计算表达式!a<b,先计算!a,因a的值为10,!a的值为〇。关系表达式〇<20为真,所以表达式!a<b的值为1。例题14:设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是x&&y(B)x<=y(C)xll++y&&y-z(D)!(x<y&&!zlll)答案为D・査关系运算符和逻辑运算符的使用(注意优先级的使用)解析:该题考查逻辑与“&&”和逻辑或TI”以及逻辑非‘'!”符号的用法。选项A)即3&&4为真,选项B)即3<=4为真,选项C)是ー个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。例题15:若有条件表达式(exp)?a++:b-,则以下表达式中能完全等价于表达式(exp)的是(exp==O)(B)(exp!=O)(C)(exp=l) (D)(exp!=l)答案为B考査条件运算符(?:)和逻辑运算符。)的使用解析:条件运算符要求有三个操作对象,称三目(元)运算符,它是C语言中惟ー的ー个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非。(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为〇(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意++、-的用法。例题16:判断char型变量cl是否为大写字母的正确表达式是(A)'A'<=cl<=fZ'(cl>=A)&&(cl<=Z)(A'>=cl)IICZ'<=cl)(cl>='A')&&(ck='Z')答案为D考査关系运算符和逻辑运算符的正确使用解析:字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCH码表中都是连续的。大写字母A到Z是从65到90,所以只要变量cl大于A并且小于Z就能保证其为大写字母。例题17:设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值是(A)1 (B)2 (C)3 (D)4答案为B考査逻辑运算符(&&)的使用解析:本题考査逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果オ为真。当发现第一个表达式的值为假后,计算机将不再执行后面表达式的运算。本题中,由于前一个表达式的值为"假’‘,所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。例题18:设x,y,t均为int型变量,执行语句:x=y=3;t=++xll++y;完成后,y的值为(A)不确定 (B)4 (C)3 (D)1答案为C着查关系运算符(II啲使用解析:逻辑或表达式是先执行左边,再执行右边语句。如果左边等式为真,则不执行右边语句,本题屮++X成立,不执行++y语句,所以,y的值不变。例题19:若执行下面的程序时,从键盘上输入5和2,则输出结果是main(){inta,b,k;scanf("%d,%d”,&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n”,k);}(A)5 (B)3 (C)2 D)0答案为C声査else语向的使用解析:本题考查简单的if…else语句。先执行条件if(avb),显然不成立,则执行else语句。第5章循环结构第一部分:本章知识点知识点掌握程度06年4月06年9月07年4月07年9月循环语句重要22161526while语句do...while语句for语句与循环结构有关的语句重要5020break语句continue附句第二部分:知识点分析-循环语句1.whiIe语句表达式1;-循环语句1.whiIe语句表达式1;while(表达式2)表达式3;表达式1;while(表达式2)(循环体;表达式3;当循环语句只有一条时的使用方式注意:“表达式1;“是循环的初始语句“表达式3既是循环体,也是从循环起点到循环终点的控制语句.“表达式2”就是对循环终点的判别.ヽ当循环语句只有多条时的使用方式即使多条语句用ー对大括号形成一条复合语句.注意:“表达式1;“是循环的初始语句“表达式3ド是从循环起点到循环终点的控制语句.“表达式2”就是对循环终点的判别.*2.d0…whiIe语句3.for语句for(表达式for(表达式1;表达式2;表达式3)一条语句;当循环语句只有一条时的使用方式注意:“表达式1;“是循环的初始语句.“表达式3;“既是循环体,也是从循环起点到循环终点的控制语句.“表达式2”就是对循环终点的判别.for(表达式!;表达式2;表达式3)(语句1;语句2;语句3;*当循环语句只有多条时的使用方式,即使多条用ー对大括号形成“表达式1;“是循环的初始语句“表达式3’是从循环起点到循环终点的控制语句.…… ”表达式2”就是对循环终点的判别.饴•句n; 注意:1.循环次数不确定时,用while语句或者do...while语句.循环次数确定时,用for语句..循环这章的难点是循环的嵌套语句,多读多看多写程序即能克服.二与循环结构有关的语句l.break语句:使程序从当前循环语句中退出,执行循环语句的下一条语句.2.continue语句:使程序从此次循环中退出,执行下次的循环.第三部分:典型例题例题1:已知intt=0;while(t=l){...)则以下叙述正确的是(A)循环控制表达式的值为〇(B)循环控制表达式的值为1(C)循环控制表达式不合法(D)以上说法都不对答案为B考查while语句的使用解析:t=l是将t赋值为1,所以循环控制表达式的值为1,而判断t是否等于1时应用t==l注意“=”与"==”的用法。例题2:冇如下程序:main(){intn=9;while(n>6){n-;printf("%d\n);})该程序的输出结果是987 (B)876 (C)8765 (D)9876答案为B考査while语句的使用解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪ー项是正确的。第・次进入循环时,n的值是9,循环体内,先经过nー运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环体时输出为6,由此可以排除选项C)。例题3:在下列选项中,没有构成死循环的是(A)inti=100;while(1){i=i%100+1;if(i>100)break;for(;;);intk=10000;do{k++;}while(k>10000);ints=36;while(s)—s;答案为D考査循环语句及与循环结构有关语句的使用解析:选项A)的循环表达式的条件永久为1,并且小于100的数与1康)取余不超过99,所以在循环体内表达式i%100+l的值永远不大于100,break语句永远不会执行,所以是死循环:选项B)的括号内没有能使循环停下来的变量增量,是死循环:选项C)中先执行k++,使k=10001,从而使循环陷入死循环。例题4:intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则(A)运行程序段后输出〇(B)运行程序段后输出1(〇程序段中的控制表达式是非法的(D)程序段执行无限次答案为B考査while语句的使用解析:本题屮,“「‘表示逻辑非运算符,“!ゴ等于运算符,逻辑非运算符比等于运算符的优先级低。例题5:x=-l;do{x=x*x;}while(!x);(A)是死循环(B)循环执行两次(C)循环执行ー次(D)有语法错误答案为C考査do...while语句的使用解析:do-while语句的一般形式为:do循环语句while(表达式);本题中,执行“语句’’一次后,表达式的值为假,停止执行。例题6:在下述程序中,判断i>j共执行的次数是main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;))(A)4 (B)7 (C)5 (D)6答案为D考査for语句和break语句的使用解析:本题涉及break语句,重在循环次数的判定。本题的循环由于无出口,只能借助break语句终止。鉴于题目要求说明判断i>j的执行次数,只需考查经过i+=k运算如何累计i的值,i值分别是i=2,4,6,8,10,12时,判断i>j为真,程序输出s的值并结束,共循环6次。例题7:下列程序的功能是输入ー个整数,判断是否是素数,若为素数输出1,否则输出0,请选择。main(){inti,x,y=l;scanf(&x);for(i=2;i<=x/2;i++)if {y=0;break;}printf(,'%d\nM,y);}(A)x/i==0 (B)x/i!=0 (C)x%i==0 (D)x%i!=0答案为C考查(1)for语句与if语句的配合使用(2)素数的算法解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用循环,用2至x/2的整数i测试对x的整除性,若能被其中的某个整数整除,则x是合数,置y的值为〇(x不是素数),结束测试循环。若都不能整除,则x为素数。i能否整除x,可用求余运算x%i等于。来判定。所以程序中的空框可填x%i=〇〇测试x为素数的代码可写成:y=1;forG=2;i<=x/2;i++)if(x%i==0){y=0;break;}例题8:下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。#include<stdio.h>main(){inti=O,j,k;do{i++;k=316-13*i;}while();j=k/ll;printf(,,316=13*%d+ll*%d",i,j);)(A)k/11 (B)k%ll(C)k/ll==0 (D)k%ll==0答案为B考査d〇…while语句的使用解析:do...while语句的一般形式是:do语句while(表达式);特点是:“直到型”循环结构。先执行・次“语句”,判“表达式”,当“表达式”非〇,再执行“语句”,直到“表达式”的值为〇时停止执行语句。在一般情况下,用while和do・while语句解决同一问题时,若二者的循环体部分是ー样的,它们的结果也一样。但当while后面的“表达式”ー开始就为“假”时,两种循环的结果不同。这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当k%”的值为0时,则不必执行循环,将执行j=k/U语句,输出结果,所以该表达式合理的条件是k%ll。例题9:下面程序的运行结果是#include<stdio.h>main(){inty=10;do{y—;}while(—y);printf("%d\n",y-);}(A)-1 (B)1 (C)8 (D)0答案为D考査(l)d〇…while语句的使用期(2)自减运算符的使用解析:本题考查“++”和“•一”运算符,运算符“++”是操作数加1,而“-”则是操作数减1。例如:X=X+1可写成X++,或++Xx=x・l可写成x-,或ーxx++(X—)与++x(―x)在上例中没有什么区别,但x=m++和x=++m却有很大差别。x=m++ 表示将m的值赋给x后,m加10x=++m 表示m先加1后,再将新值赋给X。当y=2时,首先执行y--,使y值变为し接着执行ーーy,y值变为〇,循环结束。最后执行输出语句,注意先输出此时y 的值0,在再使y值自减1变为-1。例题1():下面程序的运行结果是#include<stdio.h>main(){inta=l,b=10;do{b-=a;a++;}while(b--<0);printf("a=%d,b=%d\n",a,b);)(A)a=3,b=l1 (B)a=2,b=8 (C)a=i,b=-l(D)a=4,b=9答案为B考査d〇…while语句的使用解析:本题考查两个知识点:自加自减运算符和do...while循环语句。题中b-=a等价于b=b-a;a++的含义是在使用a之后,使a的值加1;b-的含义是在使用b之后,使b的值减1。例题11:有如下程序main(){intx=23;do{printf("%d",x-);)while(!x);}该程序的执行结果是(A)321 (B)23 (C)不输出任何内容 (D)陷入死循环答案为B考査do...while语句的使用解析:解答本题,当然先要清楚do...while语句的执行过程:先执行ー次指定的循环体语句,本题中执行xー后判断表达式,表达式的值为!x为假,程序结束循环。例题12:执行语句for(i=l;i++<4;);后变量i的值是(A)3 (B)4 (C)5 (D)不定答案为C考查for语句的使用解析:除了考查基本的for循环结构外,本题还考查自加运算的相关知识,但均为基础。注意:for语句中的表达式可以部分或全部省略,但两个“;’‘不能省略。例题13:有•堆零件(100到200之间),如果分成4个冬件•组的若干组,则多2个零件;若分成7个零件一组,则多3个零件:若分成9个零件ー组,则多5个零件。下面程序是求这堆零件总数,请选择填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if()printf("%d*i);(A)i%9=5 (B)i%9!=5 (C)(i-5)%9!=0 (D)(i-5)%9==0答案为D・査for语句和if语句的配合使用解析:本题中需要填空的是for循环的第3个条件,即“若分成9个零件•组,则多5个零件”,当总生件数零减去5后,并与9取余为0即可满足本题的条件。例题14:设i,j,k均为int型变量,则执行完下面的for语句后,k的值为。for(i=0,j=10;i<=j;i++,j—)k=i+j;(A)10 (B)9 (C)8 (D)7答案为A是査for语句的使用解析:该for语句以i为0,j为10初始化,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k。这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,继续第六次循环,将i与j的和10存于k后,i为6、j为4,结束循环。所以循环执行后k为10。例题15:设有程序段intk=10;while(k=0)k=k-l;则下面描述中正确的是(A)while循环执行10次(B)循环是无限循环(〇循环体语句ー次也不执行(D)循环体语句执行ー次答案为C考査while语句的使用解析:本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。例题16:对表达式for(表达式1;;表达式3)可理解为for(表达式1;0;表达式3)for(表达式1;1;表达式3)for(表达式1;表达式1;表达式3)for(表达式1;表达式3;表达式3)答案为B考査for语句的使用解析:本题中,省略了for语句的第二个表达式,C语言规定如果省略了第二个表达式,则表示为真,即为1。例题17:以下程序的输出结果是main(){inta,i;a=0;for(i=l;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;)Jprintf("%d\n",a);)(A)31 (B)13 (C)10 (D)20答案为A・査for语句和switch语句的配合使用解析:本题考查用于多分支选择的switch语句,其・般形式为:switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;}其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。例!818:若有如下语句intx=3;do{printf("%d\n",x-=2);}while(!(--x));则上面程序段(A)输出的是1(B)输出的是1和一2(〇输岀的是3和。(D)是死循环答案为B考査do...while语句的使用解析:do-while语句的一般格式为:do循环体语句while(表达式):先执行循环体语句ー次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行printf("%d\n",x=-2)后,值为x=x-2,即为1。判断表达式的值,!(-X)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式!(ーーx)的值为〇,结束循环。例題19:C语言中while和do-while循环的主要区别是do-while的循环体至少无条件执行,・次while的循环控制条件比do-while的循环控制条件更严格do-while允许从外部转到循环体内do-while的循环体不能是复合语句答案为A考査while语句和d〇…while语句的区别解析:while是先判断条件再执行语句;do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。解析:while是先判断条件再执行语句;do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。第6章字符型数据第一部分:本章知识点知识点掌握程度06年4月06年9月07年4月()7年9月字符常量重要20212519字符变量重要9498字符的使用重要20212519字符的输入和输出亜要7405第二部分:知识点分析一字符常量.字符常量:见书后《常用字符与ASCH代码对照表〉〉.转义字符常量(见下表):字符形式功能\n回车换行\t横向跳若干格(代表"aMTり\y婴向跳格\r回车符\f换页符\b退格符(''Backspace**®)口反斜杠字符”ぐ单引号字符俨双引号字符\ddd三位八进制代表的ー个ASCII字符\xhh二位十六进制数代表的ー个ASCII字符\0空值注意:两张表经常拿出来看,不用死记硬背.看多了自然就记住了.二字符变量.用关键字char定义字符变量.ー个字符变量占据一个字节的空间(C语言的核心).字符变量的名字要满足用户标识符的规定.三字符的使用:能作为整数参与运算(运用字符的ASCH码值)注意:小写字母的ASCII码值比大写字母的ASCH码值大32.四字符的输入和输出l.scanf()函数和printf()函数:以类型控制符%c来输入一个字符或者输出ー个字符2.getchar(涵数和putchar()函数getchar()函薪的用法字符变量=getchar()如:charch;ch=getchar(

温馨提示

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

评论

0/150

提交评论