国家计算机二级c语言考试复习知识点_第1页
国家计算机二级c语言考试复习知识点_第2页
国家计算机二级c语言考试复习知识点_第3页
国家计算机二级c语言考试复习知识点_第4页
国家计算机二级c语言考试复习知识点_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

第一章C语言基础知识

一.全国计算机等级考试问答(NationalComputer

RankExamination)

全国计算机等级考试(简称NCRE)是由教育部考试中心举办,用于测试应试

人员计算机应用知识与能力的等级水平考试。随着计算机技术在我国各个领域

的推广、普及,越来越多的人开始学习计算机知识,许多用人部门已将具有一

定的计算机知识与能力作为考核和录用工作人员的标准之一。因此,教育部决

定举办全国计算机等级考试,其目的在于推进计算机知识的普及,促进计算机

技术的推广应用,以适应社会主义经济建设的需要,为用人部门录用和考核工

作人员服务。目前,全国计算机等级考试正日趋成为继高考后全国第二大考试,

尤其是计算机二级证书是计算机等级考试证书中用得最广泛的证书,它已和英

语四六级一样成为社会用人单位对大学生的必备要求之一。

(一)考试性质和目的

1、什么是全国计算机等级考试?

全国计算机等级考试(NationalComputerRankExamination,简称NCRE),

是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,

用于考查应试人员计算机应用知识与能力的全国性计算机水平考试体系。

2、为什么要举办NCRE?

计算机技术的应用在我国各个领域发展迅速,为了适应知识经济和信息产业发

展的需要,操作和应用计算机已成为人们必须掌握的一种基本技能。许多单位

部门已把掌握一定的计算机知识和应用技能作为干部录用、职务晋升、职称评

定、上岗资格的重要依据之一。鉴于社会的客观需求,经原国家教委批准,原

国家教委考试中心于1994年面向社会推出了NCRE,其目的在于以考促学,向

社会推广和普及计算机知识,也为用人部门录用和考核工作人员时提供一个统

一、客观、公正的标准。

(二)报考条件与报考对象

1、谁可以报名参加考试?

考生不受年龄、职业、学历等背景的限制,任何人均可根据自己学习和使用计

算机的实际情况,选考不同等级的考试。考生一次只能报考一个等级(含笔试

和上机考试)的考试。如果一个级别中有不同类别,考生只能选择其中一类。

考生一次考试只能在一个考点报名。考生可以不参加考前培训,直接报名参加

考试。

(三)报名及考试时间安排

1、NCRE采取什么考试形式?考试时间如何规定?

考试采用由全国统一命题,统一考试时间,纸笔考试和上机操作考试相结合的

形式。纸笔考试中题型以选择题、填空题为主,其中四级含有论述题。纸笔考

试时间:二级C90分钟、三级、四级为120分钟(四级只考笔试)。上机操作考

试时间:二级C90分钟、三级60分钟,一级实行无纸化的上机考试,时间为90

分钟。

2、NCRE每年考几次?各次考试是什么日期?

NCRE每年开考两次,上半年开考一、二、三级,下半年开考一、二、三、四

级。上半年考试时间为4月第二个星期六上午(笔试),下半年考试时间为9月

倒数第二个星期六上午(笔试),上机考试从笔试的当天下午开始。上机考试期

限为五天,由考点根据考生数量和设备情况具体安排。

3、如何报名?笔试和上机成绩只有单项合格有何规定?

每次考试报名的具体时间由各省(自治区、直辖市)级承办机构规定。考生按

照有关规定到就近考点报名。

考生可携带身份证到就近考点报名。没有身份证的未成年人,可凭户口本,现

役军人凭军人身份证件报名。

上次考试的笔试和上机考试仅其中一项成绩合格的,下次考试报名时应出具上

次考试成绩单,成绩合格项可以免考,只参加未通过项的考试。(五)考生报名

缴费

(四)考试等级划分

1、NCRE等级如何构成?主要考核什么能力?

全国计算机等级考试目前共设置四个等级:

一级:考核微型计算机基础知识和使用办公软件及因特网(Internet)的基本技

能。

2008年下半年考试科目:一级MS-OFFICE、一级WPS、一级B

二级:考核计算机基础知识和使用一种高级计算机语言或数据库管理软件编写

程序以及上机调试的基本技能。2005年下半年考试科目:编程类:C、Visual

Basic、C++、Java,数据库类:FoxPro、Accesso基础知识包括如下内容:数

据结构与算法、程序设计方法、软件工程、数据库基础、新增的考试科目:二

级Delphi语言程序设计(VF,VB将近年停考)。

三级:分为“PC技术”、“信息管理技术”、〃数据库技术“和”网络技术〃四个类

别。"PC技术”考核PC机硬件组成和Windows操作系统的基础知识以及PC机

使用、管理、维护和应用开发的基本技能;〃信息管理技术”考核计算机信息管

理应用基础知识及管理信息系统项目和办公自动化系统项目开发、维护的基本

技能;〃数据库技术〃考核数据库系统基础知识及数据库应用系统项目开发和维

护的基本技能;〃网络技术”考核计算机网络基础知识及计算机网络应用系统开

发和管理的基本技能。

四级:四级网络工程师、四级数据库工程师和四级软件测试工程师、考核计算

机专业基本知识以及计算机应用项目的分析设计、组织实施的基本技能。

2、是否必须通过第一(二、三)级,才能报考第二(三、四)级考试?

没有规定考生必须通过第一(二、三)级才能报考第二(三、四)级,考生可根据自己

的实际情况选考不同的等级,但一次考试只能报考一个等级。考生一次考试只能在一个考

点报名。

(五)考试成绩的计算

1、如何计算成绩?是否有合格证书?

该考试笔试、上机考试实行百分制计分,笔试以百分制通知考生,上机以等级

分数通知考生成绩。等级分数分为“不及格”、“及格“、“良好”、〃优秀〃四等。

100-90分为〃优秀〃,89-80分为〃良好〃,79-60分为〃及格〃,59-0分为〃不及格〃。

笔试和上机考试成绩均在〃及格〃以上者,由教育部考试中心发合格证书。笔试

和上机考试成绩均为〃优秀〃的,合格证书上会注明〃优秀〃字样,证书上没有良

好,按及格对待。

(六)证书获得者应具备的能力

1、证书获得者具备什么样的能力?可以胜任什么工作?

一级证书表明持有人具有计算机的基础知识和初步应用能力,掌握字、表处理、

电子表格和演示文稿等办公自动化(Office或WPS)软件的使用及因特网

(Internet)应用的基本技能,具备从事机关、企事业单位文秘和办公信息计算

机化工作的能力。

二级证书表明持有人具有计算机基础知识和基本应用能力,能够使用计算机高

级语言编写程序和调试程序,可以从事计算机程序的编制工作、初级计算机教

学培训工作以及计算机企业的业务和营销工作。

二、新视野教育计算机等级考试培训班问答

1、全国计算机等级考试证书有有效期吗?

绝对没有,等级考试证书是终身有效的,详情可以访问等级考试官方网站

(www.ncre.cn或www.neea.edu.cn)0

(全国计算机等级考试教育部考试中心官方网站的回答原话是:“等级考试的证

书是终身有效的,等级考试的大纲会在每2-3年更新一次,但更新并不影响以前

证书的效力,因此有些人的‘等级考试证书2年左右就会失效'的说法是不正

确的。

2、我没有参加一级考试,能参加二级考试吗?

全国计算机等级考试分为一至四级,考生可以任意选择考试等级,不是非要先

考一级再考二级。一股来说,一级主要适合社会在职人员考试,二级适合在校

大学生考试,二级对大学生找工作也是最有用的。三级和四级可以作为进一步

学习的考试。

3、有的专业会开设相关课程,有必要参加培训吗?

二级考试所考核的内容基本属于基础知识,早点学习可以早点打牢基础,以便

于进一步学习计算机知识,从而在以后的竞争中处于有利地位。学校虽然有些

专业的相关课程和计算机等级考试有一定的联系,但都不具有针对性。而且新

大纲推出后,不少内容只有计算机专业才开设有关联的课程,但也不具备针对

性。新大纲推出后等级考试通过率再创新低,参加专业培训势在必行。

4、什么时候参加二级考试比较合算?

一般来说,大一大二时学习和通过计算机二级考试比较划算。大二时主要精力

用来考英语四六级,大三时专业课比较紧张,大四已经到了找工作的时候。相

对来说,大一同学求知欲强、时间精力充沛、易于接受新东西,是学习的黄金

时段,如果能较早的掌握必备的计算机知识,如大一就过国家二级,并掌握一

些相关应用知识,这样就在竞争激烈且残酷的当今社会占尽先机,无疑在今后

的学习中将以更为轻松的心态,更为充沛的精力从事于你所钟爱的事业中。

5、二级考试可以有多种语言选择,为什么要选择C语言呢?

C语言被誉为最有“钱”途的语言,具有广泛的用途,受到社会的热烈追捧,如

Linux、Unix操作系统均由C语言编写,Windows操作系统也有90研勺代码由

C语言编写。C语言语法和C++、Java、C#等类似,可以方便进一步学习。在

许多计算机考试中,C语言是必考内容,甚至是唯一考核内容,如计算机三级、

四级的上机考核部分,程序员、高级程序员的下午试卷等。

6、二级考试什么时候报名?什么时候参加考试?

二级考试每年考两次,分别在上半年的4月份顺数第二个周六和下半年的9月

份倒数第二个周六。一般上半年4月份考试的报名时间从前一年11月中旬到第

二年1月中旬均可。下半年9月份考试的报名时间一般从5月底到7月底。而

•般在报名考试之前相关知识必须已经学得差不多了,因此,如果参加4月份

的考试必须在下半年107月份学习,然后在寒假之后考前短暂的时间进行适

当强化即可参加考试。参加9月份的考试必须在上半年3-6月份学习,然后在

暑假之后考前短暂的时间进行适当强化即可参加考试。

7、参加培训是否会影响到我们的正常上课?

我们的授课时间均选在业余时间,不会与学校的正常教学产生冲突。

8、二级(C语言)考试的考试内容是什么?

根据新大纲的要求,二级(C语言)考试分为理论考试和上机考试两部分,必须

都通过考试才能算合格。考试内容分为C语言程序设计(顺序结构、选择结构、

循环结构、函数、指针、数组、字符串、编译预处理、作用域、结构体、共用

体、文件等)和公共基础(数据结构、程序设计、软件工程和数据库)。

9、新视野IT培训有何特色?

本中心和很多高校的网络中心、计算机学院、现代教育中心有合作关系,立足

于在校大学生,弥补学校教育的不足,相辅相成。除主要培训最有“钱”途的

语言--C语言外,还注重引导学员,并向学员介绍国内外IT业发展的各种动

态和发展趋势、社会上对IT人才各种需求信息等,力争让学员经过培训后有明

确的学习目标,并掌握一套行之有效的方法,能举一反三,独立的走自己的道

路。

10、我没有计算机基础,可以参加培训吗?

可以,无需任何基础知识,完全从零开始,即使从来没有接触过计算机,也能

够学好!

11、大几参加培训比较好?

一般大学的规划是:“大一通过计算机二级、大二通过英语四六级、大三专业课

及考研、大四找工作及实践”,因此,一般大一最好,尤其是如果大一上学期参

加学习准备考试,那么下学期4月份就可以参加考试了,如果大一下学期准备

考试的话,那么要等到大二9月份才能考试,而大二已经开始准备英语四六级

等其他事宜了。所以大一上学期学习等级考试最好,而且刚进大学,时间精力

充沛,进取心强,是学习的黄金时段。

二.教学重点,难点分析

1.C语言概述

知识点所占分值考核几率专家点评

C语言概述0T分20%简单识记

C语言程序的构成0T分30%简单识记

标识符1-2分60%简单,属重点识记知识点

常量1-2分80%简单,属重点识记知识点

变量2-3分100%难度适中,重点理解重点掌握

注意:从几年的试题分析看C语言的概述和程序的构成合起来考试已经

是一个惯例了。

2.运算符与表达式

知识点所占分考核几率专家点评

C运算符简介0-1分10%简单识记

运算符的结合和优先级0-1分60%简单识记

强制类型转换运算符0T分30%简单识记

逗号运算符和逗号表达式0-1分40%简单,属重点识记知识点

基本的算术运算符1-2分100%简单,属重点识记知识点

算术表达式和运算符的「2分100%难度适中,重点理解重点掌握

优先级与结合、自增自减运算符2-3分100%难度适中,重点理解重点掌握

赋值运算符和赋值表达式2-4分100%简单,重点掌握重点理解

复合的赋值运算符1-2分80%偏难,不是重点

赋值运算中的类型转换07分75%偏难,不是重点

位运算符和位运算0T分80%偏难,属重点识记知识点

三.教学讲点

1.C语言的基本构成和格式

#includeMstdio.hM

main()

inta,b,sun;/*定义变量*/

a=10;/*把整数10赋值给变量a*l

b=20;/*把整数20赋值给变量b*l

sum=a+b;/*把两数之和赋值给变量sum*/

printf("a=%d,b=%d,sunF%d\n”,a,b,sum);/*输出计算结果*1

(D.c程序由函数组成,一个程序必须且只能有一个主函数(main。),C程序总是

从主函数开始执行,在主函数中结束。

(2).定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内,在

函数体中,函数体有两个部分:定义部分和执行部分。定义语句必须出现在执

行语句之前,我们先定义了a,b,sum,然后才给它们赋值。

(3).C语言中每条语句都以分号结束,分号时C语句的一部分。即使是程

序的最后一个语句也不例外。分号是语句结束的标志。

(4).一行可以写多条语句,一条语句也可以分在多行上写,但是,不能将一个整

体分开。

例如:int是错误的,而int正确。

⑸.C语言的注释必须放在“/*”和“*1”之间,和“*”之间不允许有空格。

“/*”和“*/”之间不允许再插入“/*”或“*/"。注释可以出现在程序中的任意

位置。注释部分不被执行。

(6).C语言程序书写格式自由,语句可以从任一列开始书写,一行内可

以写多个语句。但是过于“自由”的程序书写格式往往使人们很难读懂

程序,初学者应该从一开始就养成好的习惯,是程序便于阅读。

2.标识符

(1)标识符只能由字母、数字和下划线组成。

⑵标识符的第一个字符必须是字母或下划线。

(3)标识符的大小写字母是有区别的,如abc和ABC是两个完全不

同的标识符。

⑶标识符的分类:

关键字:关键字是具有特定的含义的、专门用来说明C语言特定成分的

一类标识符。详细的查阅附录二。

预定义标识符:在c语言中它也有特定的含义。预定义标识符可

以用位“用户表标识符”使用,只是这将使这些标识符失去了原

来的意义。

用户标识符:由用户根据需要定义的标识符被成为用户标识符。

用户标示符用来给变量、函数、数组或者指针等命名。

3.C语言的数据类型

3.1数据可以分为常量和变量。常量是指在程序执行中不变的量,常量

分为:整型常数、实型常数、字符常量、字符串常量。

整型数据:

进制间的转换

3.11.二、八、十六进制转为十进制

规则:“蝴相加”

3.12十进制转为二、八、十六进制

规则:

整数部分:舞滁取余,逆序排列

小数部分:基数乘取整,顺序排列

3.13.二进制转为八、■hFtt制

规则:三(四)合一,按序相拼(整数部分,从右向左取,小数部分从左向右

取,位数不足补零)。

3.14八、十六进制转为二进制

规则:一分三(四),按序相拼

3.2整型数据在内存中的存放形式

1字节=8位,lByte=8bit

字长:指CPU能同时处理的二进制位数。由CPU的型号而定。如:16位微机

的字长就是16位或2字节。

1GB=1O24MB,1MB=1O24KB,1KB=1O24B

B:表示字节,字节是表示存储容量的最小单位。位(bit):是计算机中信息表示

的最小单位。

3.21.正整数在内存中用“原码”形式存放。(直接转换为二进制即可)。

如:5

()()000000000()0101

一字节能存放的最大数是:32767

011111111111

对带符号数,最高位是符号位,用0表示正,用1表示负。

3.22.负整数在内存中用“补码”形式存放。

取补码的步骤:

⑴忽略负号,求出原码。

(2)将原码按位取反(。、1互换)。

⑶在第二步的基础上加1。

如:取-5的补码。

(1)

0000000000000101

I111I1111山I111I1111111111ol11

(3)

1111111111111011

将补码转换成相应的整数的步骤:

⑴将补码按位取反加1。

⑵将步骤1得到的二进制数转换成十进制数,然后加上负号即可。

例如:

1000000000000000

按位取反力I1

0111111111111111

1000000000000000

转换成十进制:1X215_32768

加负号:T2768

几个特殊的带符号整数:

1000000000000000-32768

011111111111111132767

1111111111111111-1

3.23.无符号整数:只有正整数,没有负整数,最高位不表示符号位,每一位均

参与转换。

二进制带符号整数无符号整数

1111111111111111-165535

1000000000000000-3276832768

例2T2:若有:inta=-l;unsignedb=65535很!I

printf(“%d,%u,%d,%u”,a,a,b,b);输出结果是:T,65535,-1,65535

数据益出问题:

例2T3:若有inta=32767;则a=a+1的结果是:

-32768

例2T4:若有unsignedb=65536;则b的值是:0

分析:32767:01111111111111111

+1

100000000000000

将100000000000000按照带符号数转为十进制为-32768

65535:1111111111111111

+1

1111111111111111

+1

10000000000000000

65536

unsignedb=655536;而b属于无符号整型,在内存中只占两字节,所以

只能包括16位。

标准C没有具体要求规定各类型数据所占内存的字节数,现以这次考试标

准viusalc+^.0为例,说明各类型变量所占的位数。

类型所占位所占字类型所占位所占字节

数节数数数

short162unsignedint324

int324unsignedlong324

long324float324

unsignedshort162double648

3.3实型数据(浮点数)

3.31.实型常量

(1)小数形式:由数字和小数点组成,必须有小数点,小数点的某一侧可以没有

数字。如:.23,123.876,123.

⑵指数形式:用“e”或“E”后接一个整数,表示以10为底的幕数。

注意:“e”或"E”之前之后必须有数字,且之后的数字必须是整数。他们和

前后的数字之间不能有空格。

例如:

例2-15:下列合法的常量是0。

A.-32169B.O128C.0XDEFGD.13E0.5

例2-16:下列合法的实型常量是()。

(A)OXff(B)124E(O1.23E5.0(D)3.E2(E)1.25E+2(F).23e+02

3.32.实型变量

单精度型float占4字节

双精度型double占8字节

长双精度longdouble占16字节(较少用)

4.表达式与运算符

4.1算术运算符及其表达式:+-*/%

%:(求余运算)

注意:

(1)%而边必须是整型数据。12.0%3表达式是错误的。

(2)求余(%)的方法是:忽略符号,求出余数,再将所得余数的符号定为与被

除数相同。

例如:17%3结果是:2

17%-3结果是;2,-17%3结果是;-2,-17%-3结果是;-2

4.2强制类型转换

强制类型表达式:(类型名)表达式

注意:类型名(表达式)这种形式是C++的强制类型表达方式。

5.赋值运算符及其表达式

5.1.赋值运算符二

格式:变量名二表达式

功能:将表达式的值赋给左边的变量。

注:

⑴赋值运算符左边只能是一个变量,不能是常量,也不能是表达式。

a+b=34=3是非法的表达式

a=6a+(b=3)都是合法的表达式

a=b=20a=(b=10)/(c=2)都是合法的表达式

(2)实型数据赋给整型变量时,小数部分被舍去,整型数据赋给实型变量时,系

统自动将整型数据转换为实型数据。

例如:floata;intb;

表达式a=10%3的值是LO

表达式b=a=10%3的值是1

5.2.复合赋值运算符及其表达式:+=-=*二/二%二&二»=

例如:a+=3相当于a=a+3,a/=b+4相当a/=(b+4)或a=a/(b+4)

例:若a=12,则执行表达式a+二a-=a+a后a的值是多少?

分析:a+=a-=(a+a)/*a的值是12*/

a+=a-=24/*a的值是12*/

a+=a=a-24/*a的值是12*

a+=a=-12/*a的值是12*

a+=-12/*a的值是-12*/

a=a+(-12)/*a的值是T2*/

a=-24/*a的值是-24*/

5.3.自增、自减运算符及其表达式

++

注意:

⑴只能用于变量,不能用于常量和表达式。

如:6++(a+b)—都是错误的。

⑵当它们用于变量名前时,表达式的值为变量的值加一或减一。当位于变量名

后时,表达式的值为变量原来的值。不论位于变量名前还是变量名后,只要进

行了白增、自减运算,变量的值都会在原来的基础上加1或减1。

如I:a=3则a++表达式的值是3运算之后变量的值是4

a=3贝忏+a表达式的值是4之后变量的值是4

a=3则a-表达式的值是3之后变量的值是2

a=3则-a表达式的值是2之后变量的值是2

⑶口诀:

尸iH;这个表达式是先引用后增值。即:先把i的初始值给变量工然后i再

自加1。

j*i;这歌表达式是先增值后引用。即:i先自加L然后再将我们自加后的

值赋值给变量jo

但是记住它们是一起执行的,就是说:例如产i++先引用后增值实际上是一

起执行的,它们之间不存在先后关系,我们只是位了好记才用到了上面的方法。

老师在上课的时候先不要说,但是你们必须知道。j=i-j—i和上面j=i++,j*i

的方法是一样。

5.4逗号运算符及其表达式

1.格式:表达式1,表达式2,…,表达式n

注意:1.逗号表达式的值是整个逗号表达式中最后一个表达式的值。

2.求值顺序是从左到右依次求解。

例如:a=(3,b=l)的值是1运算结束后a的值是1,b的值是1。

四.相关试题

1.2008年4月相关试题

(11)以下叙述中正确的是

A)C程序中的注释只能出现在程序的开始位置和语句的后面

B)C程序书写格式严格,要求一行内只能写一个语句

C)C程序书写格式自由,一个语句可以写在多行上

D)用C语言编写的程序只能放在一个程序文件中

(12)以下选项中不合法的标识符是

A)printB)FORC)&aD)_00

(13)以下选项中不属于字符常量的是

A)'C'B)HCnC),xCCO'D)'\072'

(14)设变量已正确定义并赋值,以下正确的表达式是

A)x=y*5=x+zB)int(15.8%5)

C)x=y+z+5,++yD)x=25%5.0

填空⑺设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】。

2.2007年9月相关试题

(1DC语言源程序名的后缀是

A).exeB).CC),objD).cp

(12)可在C程序中用作用户标识符的一组标识符是

A)andB)DateC)HiD)case

2007y-m-dDr.TomBigl

(13)以下选项中,合法的一组C语言数值常量是

A)028B)12.0.177D)0x8A

・5e-30Xa234el.510,000

-Oxf4.5e0Oabc3.e5

(14)以下叙述中正确的是

A)C语言程序将从源程序中第一个函数开始执行

B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执

OC语言规定必须用main作为主函数名,程序将从此开始执行,在此结

D)main可作为用户标识符,用以命名任意一个函数作为主函数

(16)以下关于long、int和short类型数据占用内存人小的叙述中正确的是

A)均占4个字节B)根据数据的大小来决定所占内存的

字节数

0由用户自己定义D)由C语言编译系统决定

(17若变/到已正确定义并赋值,以下合法的C语言赋值语句是

Ax=y==5;Bx=n%25;C、+n=i,DY=S=4+1;

3.2007年4月相关考题

(12)下列叙述中错误的是(D)

A)计算机不能直接执行用C语言编写的源程序

B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件

0后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件

D)后缀为.obj和.exe的二进制文件都可以直接运行

(13)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)

A)大写字母B)连接符C)数字字符D)下划线

(14)以下叙述中错误的是(C)

A)C语言是一种结构化程序设计语言

B)结构化程序有顺序、分支、循环三种基本结构组成

0使用三种基本结构构成的程序只能解决简单问题

D)结构化程序设计提倡模块化的设计方法

(15)对于一个正常运行的C程序,以下叙述中正确的是(A)

A)程序的执行总是从main函数开始,在main函数结束

B)程序的执行总是从程序的第一个函数开始,在main函数结束

C)程序的执行总是从main函数开始,在程序的最后一个函数中结束

D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

(19)有以下程序,其中加表示按无符号整数输出(B)

main()

{unsignedintx=0xFFFF;/*x的初值为十六进制数*1

printfCt%u\n,,,x);

}/*注意:x是占两个字节*/

程序运行后的输出结果是

A)-lB)65535C)32767D)0xFFFF

第二章顺序结构

一.教学重点、难点

知识点所占分考核几率专家点评

C语句分类0-130%简单识记

字符输出函数putcharO1-270%难度适中,重点掌握

字符输入函数getchar()1-270%难度适中,重点掌握

格式输入函数printf()3-4100%难度适中,重点理解重点掌

格式输出函数scanf()3-4100%难度适中,重点理解重点掌

二.教学内容

1.捌

C语句共分为5类:

1.1控制语句

1.2函数调用语句:

printf(uthisisacstatement");

1.3表达式语句

卑言解的表达式后加上分号(;)就构成了表达式语句。

语句和表达式的区别:

表达式有唯一确定的值,而语句没有值。

1.4赋值语句

格式:赋值表达式;

i=l,j=2是逗号表达式

i=l;j=2;是两条赋值语句

i++;i-;++i;—i;都是赋值语句

等价于i=i+1;或i=iT;

1.5空语句:只有一个单独的分号构成的语句。如:;就是一条空语句。

1.6复合语句:用一对{}将若干语句括起来构成一条复合语句。

2.输入输出语句

在使用库函数时必须先用预编译命令#include(头文件名》或#include"头文件

名”将相应的头文件包含到源程序中。

如:#include<stdio.h>

2.l.printf()函数

格夫:printf(“格式控制”,输出列表);

功能:按格式控制指定的格式输出数据。

注意:格式控制包括以外开头的“格式说明符”和原样输出的普通字符。

如:printf("a=%d,a+b=%d”,30,4+7);

输出结果是:a=30,a+b=l1

(l)d格式

%d:按实际长度输出十进制整数。

%md:输出占m歹U,若小于m歹U,左边补空格,若大于m歹U,按实际输出。

%-md:输出占m列,若小于m歹!j,右边补空格,若大于m列,按实际输出。

%ld:输出长整型数据,输入输出长整型数据时必须用该格式。

例如:printf(“%d,%6d,%-6d,%ld”,386,1234,3456,12345L);

输出结果:386,1234,3456,12345

printf(“%2d”,12345);

输出结果:12345

(2)u格式

%u:以无符号十进制形式输出整数。

printf(w%u,\-l);65535

ptintf(M%u9\-32768);32768

(3)o格式

%():以无符号八进制形式输出整数,不输出前导符0。

printf(<t%d,%o,>1,177777

⑷x或X格式

%x或%X以无符号十六进制形式输出整数。不输出前导符Ox或0X,小写对小

写,大写对大写。

printf(“%d,%x,%X,%x”,・11,0xabc,0XAbe);

-l,ffiT,ABC,abc

注:若要输出十六进制和八进制的前导符,则要用%#o和%#X、%#X格式。

printf(M%#o,%#x,%#X,,,-l,-l,()xaBc);

0177777,Oxffff,OXABC

⑸c格式

%c用来输出一个字符,不输出单引号定界符。配和猊可以相互转换。

printf(,,%c,%d,,,,a,;a);a,97

printf(“%c,%d”,10(M00);d,10()

(6)s格式

用来输出一个字符串,不输出双引号和字符串结束符。

%s:输出字符串的有效字符。

printf(H%s,,,,,china\OyunnanH);china

%ms:输出占m歹lj,若小于m歹ij,左边补空格,大于m歹ij,按实际输出。

printf(n%5s,%-5s,%2s'\uswfc,,;'swfen,"swfcn);

swfc,swfc,swfc

额tns:输出占m歹!J,只输出字符串的左n个字符到m列的右端。

如:printf(,z%7.5s〃,〃yunnan〃);

yunna

(7)f格式:按小数形式输出实型数据。

%f:默认输出6位小数。

如:printfC%f,%f,z,543.12,5.4312e+2);

543.120000,543.120000

%m.nf:输出占m歹ij,其中有n位小数。若超过m列,确保n位小数后按实际

输出。注意四舍五入问题。

如:printf(a%7.3f,%~7.3f,%4.2f“,3.1415726,3.1415926,314.5926);

3.142,3,142,314.59

(8)e格式

以指数形式输出一个实数。小数点前只有一位非零数,5位小数,3位指数。

如:printf("%e,%e",123.4,123.45e-7);

234000e+002,l.234500e-005

⑼g格式

自动在%£和%e中选择较短的一种输出,对于小数部分不输出无意义的0。

如:printf(“施海”,123.45,123.45e-2);

123.45,1.2345

printf(“%g”,l23000000.0);

23e+08

小结:

(1)%%表示输出一个%。

如:printfC%%d=%d",10,10);

%d=10

⑵除了x,e,g大小写均可外,其它都只能小写。

如:printf(〃%d=%D〃,20,20);

20=%D

⑶输出格式说明符所能操作的数据类型必须与输出项的类型一致。

如:printf(“%d”,1.234);/*出@*1

2.2.scanf()函数

格式:scanf(“格式控制”,地址列表);

注意:

(1)可指定数据所占的列数,输入后由系统自动截取相应的位数。

如:scanf("%3d%2d”,&a,&b);

若输入:3863018

则:a的值是:386

b的值是:30

若输入:3863

a的值是:386

b的值是:3

scanf(n%3c%2d",&ch,&c);

若输入:3863018

则:ch的值是:'3'

b的值是:30

(2)%*md:表示跳过m列不读。

如:scanf("%*3d%3d%4d”,&a,&b);

若输入:123456

则:a的值是:456

b的值是:原来的值。

(3)不能在scanf)函数中指定输入数据的小数位数。

如:scanfC%7.5f〃,&a);/*出错*1

在scanf()函数中,输入时普通字符原样输入。

如:scanf(rta=%d,b=W,&a,&b);

若要给a赋值5,b赋值10,正确的输入是:a=5,b=10

scanf(M%d*,%d#,%du,&a,&b,&c);

若要让a,b,c分别得到1,2,3,正确的输入是:1*,2#,3<回车>

若两个格式说明符之间没有其它字符,则在输入数据时,两数据之间要用回车

或空格分隔,回车或空格可以是多个。但是,猊格式除外。

如:scanf&a,&b);

若想让a的值为5,b的值为10。则正确的输入是:

5空格10<回车>或5〈回车》

10<回车〉

或5空格空格空格10〈回车》

⑹多个猊格式之间没有其它字符,仍然不能用回车或空格来分隔。

如:scanf(M%c%c%cn,&a,&b,&c);

若输入:a空格b空格c〈回车)

a的值是'a",b的值是空格,c的值是'b'。

(7)格式说明符所能操作的数据类型必须与对应变量的类型相同。

如:inta;scanf(,&a);/*出错*1/

总结:

L普通字符原样输入,原样输出。

2.对于%d格式,指定宽度小于输出宽度,原样输出。

3.%#o,耕x,%#X表示要输出八进制的前导符数字0,和十六进制的前导符

0x,0Xo

4.%x,%X格式,小写对小写,大写对大写。

5.%*md:表示跳过相应的输入项。

6.注意进制间的转换,以及无符号数和带符号数之间的转换。

7.在scanf()函数中,给double类型变量输入数据时,应该使用%1啖型说明

符,而输出时,可以用%f,也可以用%£。

三.试题分析

1.2008年4月试题分析

(16)有以下程序段

charch;intk:

ch=*a';k=12;

printf(''%c,%dj,ch,ch,k);printf("k=%d\nM,k);

已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是

A)因变量类型与格式描述符的类型不匹配输出无定值

B)输出项与格式描述符个数不符,输出为零值或不定值

C)a,97,12k=12

D)a,97,k=12

2.2007年9月试g分析

(15)若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,

贝I」能正确执行的语句是

A)scanf(H%d",a,b,c);B)scanf(H%d%d%dn,a,b,c);

C)scanf(”%d”,p);D)scanf(%d",&p)

(18)有以下程序段

floaty;charname[50];

scanf(H%2d%f%sn,&j,&y,name);

当执行上述程序段,从键盘上输入555667777abc后,y的值为

A155566.0B)556.007777.0D)566777.0

填空⑹执行以下程序时输入1234567<CR>,则输出结果是[6】。

#include<stdio.h>

main()

inta=l.b;

scanf(H%2d%2dH,&a,&b);printf(M%d%d\nu,a,b);

3.2007年4月试题分析

(16)设变量均已正确定义,若要通过scan("%d%c%d%c”,&al,&cl,&a2,&c2);

语句为变量al和a2赋数值10和20,为变量cl和c2赋字符X和Y。以下所示

的输入形式中正确的是(注:□代表空格字符)(D)

A)10QXO20QY(回车〉B)10口乂20口丫<回车〉

010QX<回车〉D)10X〈回车〉

20DY〈回车>20Y〈回车)

填空(6)执行以下程序后的输出结果是

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

第三章选择结构

.教学重点、难点

知识点所占分值考核几率专家点评

关系运算符及优先次序0-140%简单识记

关系表达式0-150%简单,属重点识记知识点

逻辑运算符及优先级1-250%简单识记

逻辑表达式1-250%简单,属重点识记知识点

if语句的几种形式1-2100%简单识记

if语句的嵌套1-2100%难度适中,重点掌握

条件运算符0-1100%难度适中,重点掌握

switch语句2-4100%简单,重点掌握重点理解

语句标号0-110%偏难,不是重点

goto1-210%简单识记

二.教学内容

L关系运算与逻辑运算

1.1逻辑值

真(非零值)假(零)

1.2关系运算符及其表达式

<<=〉>==!=

关系运算符优先级别低于算术运算符,高于赋值运算符。

«<=>>=)优先级别高于(=!二)

如:a>b+c等价于a>(b+c)

a==b<c等价于a=(b<c)

a二b〈c等价于a=(b<c)

4-4表达式的值为“真”。

4=4表达式不合法

关系表达式的值只有1和。其中1表示“真”,0表示“假”。

1.3逻辑运算符及其表达式

&&逻辑“与”逻辑“或”!逻辑“非”

优先级别:!》皴》II

运算规则:

逻辑&&:遇假则假

逻辑II:遇真则真

逻辑!:真假互换

逻辑萎达式的值:1(真)、0(假)

例如:3>4结果是:0

3&&4结果是:1

13M4结果是:0

Q|]

注意:在求解逻辑与(&&)表达式时,若&&运算符左边表达式的值为0(假),

则不再进行&&右边表达式的运算,且将整个&&表达式的值定为0;在求解逻

辑或(H)表达式时,若I左边表达式的值为非0值(真),则不再进行右边表达

式的运算,且将整个逻辑表达式的值定为1(真)。

2.if语句

2.1.if语句格式:

1)if(表达式)2)if(表达式)

语句1;语句1;

else

语句2;

称为:全if单if

注意:

(Dif后的表达式必须用()括起,else后没有表达式。

⑵if和else都只能控制紧跟它的一条语句,若要控制多条语句,必须用一对

{}括起构成一条复合语句。

2.2执行方式:

2.21if语句的执行方式:首先判断表达式的值是否为“真”,若“真”,则执

行语句部分。如果表达式的值为“假〃,则十心T'语句部分执行if语句后面的

其它语句。

2.22ifdse语句的执行方式:首先判断表达式的值是否为“真",若“真"

则执行四部分。如林达式的值^“假”,则执行else帝诟面的的。

例1:main()

{intm=5;

if(m++>5)printf("m=%d”,m);

elseprin皿“m=%d”g・);

例2:main。

{intm=5;

if(4-+m>5)printf(um=%d,,,m);

elseprintfi[€€m=%d\n,,,m-);

printf卜m=%d\m);

2.3if语句的嵌套

if(表达式1)

if(表达式2)语句1;

else语句2;

else

if(表达式3)语句3;

else语句4;

else总是与前面最近的且未配对的if语句配对,组成一对if-else语句。

if(表达式1)

if(表达式2)语句1;

else

if(表达式3)语句2;

else语句3;

第一个else语句有的同学会把它误以为和第一个if配对,但是实际的情况是和

第二个if语句配对,即:

if(表达式表

if(表达式2)语句1;

else

if(表达式3)语句2;

else语句3;

例1.请分析下列程序的输出结果。

niain()

{ints[a,b;

sanf(M%d%d,,,&a,&b);

s=1;t=1;

if(a>O)s=s+1;

if(a>b)t=s+l;

elseif(a==b)t=s;

elset=2*s;

printfT%d\n'',t);

若运行时输入510叵车,则程序的执行结果是?

main()

{ints,t,a,b;

sanf(H%d%dH,&a,&b);

s=l;t=l;

if(a>0){s=s+l;

if(a>b)t=s+l;)

elseif(a==b)t=s;

elset=2*s;

printf,(M%d\n,,,t);

若运行时输入510回车,则输出结果是?

例2.分析下列程序的输出结果

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

printf(H%d%d%d'n”,a,b,c);

main()

{inta=4,b=3,c=5,t=0;

if(a<b){t=a;a=b;b=t;)

if(a<c){t=a;a=c:c=t;}

printf(H%d%d%d^nn,a,b,c);

联想交换的思想:若要交换a和b的值,通常的做法是:

{t=a;a=b;b=t;}

3.条件运算符和条件表达式

条件运算符:?:

是唯一一>但目运算符。优先级别高于赋值运算,结合方向自右向左。

格式:表达式1?表达式2:表达式3

执行方式:先求“表达式1”的值,若其值为“真”,求出“表达式2”的值作

为整个条件表达式的值;若其值为“假”,求出“表达式3”的值作为整个表达

式的值。

例如:max=a>b?a:b;

相当于:if(a>b)

max=a;

else

max=b;

a>b?a:c>d?c:d

相当于a>b?a:(c>d?c:d)

注意:表达式1、2、3的值不要求具有相同的类型,最后结果的类型为表达式2、

3中较高类型的一种。如:(x=6)>(尸5)?1:1.5表达式的值是l.Olhj不是1。

4.switch语句

格式:

switch(表达式)

{case常量表达式1:语句1;break;

case常量表达式2:语句2;break;

case常量表达式n:语句n;break;

default:语句n+1;break;

说明:

(1)switch>case、defaultbreak都是关键字,花括号里面的语句叫做switch

语句体。Switch语句体中可以没有break语句和default部分。

(2)Switch语句的圆括号中表达式的值必须是整型或是字符型,不能为实型。

case后的表达式可以是求得整型量的常量表达式,但是常量表达式中不

能含有变量。

(3)执行Switch语句时,首先计算Switch后圆括号的表达式的值,然后将这

个值与语句体中case后的常量表达式的值相比较,如果某个常量表达式

的值与之相等,则执行该case后的语句块;如果没有任何一个常量表达

式的值与之相等,则执行default后的语句块。

(4)在执行的时候如果遇到break语句,则跳出switch语句。如果执行完一

个case或者default语句块后没有遇到break,则继续顺序往下执行,知

道遇到break语句或者语句体被执行完毕为止。

(5)default最多只能有一个,通常出现在switch语句的最后部分,但也可以

出现在case之间或所有的caso之前。

U!I.试题分析

1.2008年4月试题分析:

(17)己知字母A的ASC1【代码值为65,若变量kk为char型,以下不能正确判断出

kk中的值为大写字母的表达式是

A)kk>='A'&&kk<='Z'B)!(kk>=,A'kk<='Z')

C)(kk+32)>='a'&&(kk+32)<=,z'D)isalpha(kk)&&(kk<91)

(18)当变量c的值不为2、4、6时,值也为“真”的表达式是

A)(c==2)|((c==4)||(c==6)B)(c>=2&&c<=6)|I(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=l)

(19)若变量已正确定义,有以下程序段

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!=a)c=b;

priiilf(,,%d,%d,%d\n',,a,b,u);

其输出结果是

A)程序段有语法错B)3,5,303,5,5D)3,5,7

(20)有以下程序

#includc<stdio.h>

main()

{intx=l,y=O,a=O,b=O;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

case2:a++;b++;break;

case3:a++;b++;

printf("a=%d,b=%d\n”,a,b);

程序的运行结果是

A)a=l,b=0B)a=2,b=2

C)a=l,b=lD)a=2,b=1

2.2007年9月试题分析

(20)有以下计算公式

4(x^o)

(x<0)

若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程

序段是

A)if(x>=0)y=sqrt(x);B)y=sqrt(x);

elsey=sqrt(-x);if(x<O)y=sqrt(-x);

C)if(x>=0)y=sqrt(x);D)y=sqrt(x>=0?x:-x);

if(x<0)y=sqrt(-x);

(21)设有条件表达式:(EXP)?i++J,则以下表达式中与(EXP)完全等价

的是

A)(EX

温馨提示

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

评论

0/150

提交评论