第1章C语言基础知识详解
- 格式:doc
- 大小:86.00 KB
- 文档页数:12
第一章数据结构与算法1.1 算法1.1.1算法:是指解题方案的准确而完整的描述。
规定了解决某类问题所需的操作语句以及执行顺序使其能通过有限的指令语句,在一定时间内解决问题算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。
算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。
1.算法特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限的步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。
2.算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构通常,计算机可以以执行的基本操作是以指令的形式描述的。
一个计算机系统能执行的所有指令的集合,称为计算机系统的指令系统。
(1)计算机系统中的基本运算和操作包括:算术运算+ - * /逻辑运算not and or关系运算< > ! =数据传输赋值输入与输出(2)算法的控制结构:顺序结构、选择结构、循环结构。
3.算法基本设计方法:列举法(列举所有解决方案)归纳法(特殊→一般)递推(已知→未知)递归(逐层分解)减半递推“减半”是指将问题的规模减半,而问题的性质不为,所谓“递推”是指重复“减半”的过程回溯法找出一个解决问题的线索,然后沿着这个线索逐步多次“探、试”1.1.2算法复杂度算法时间复杂度和算法空间复杂度(一个算法所要付出的代价)是衡理算法好坏的。
1.算法时间复杂度算法时间复杂度是指执行算法所需要的计算工作量。
(既算法的运算次数)含义:算法执行过程中所需要的基本运算次数影响计算工作量的主要因素:一、基本运算次数二、问题与规模2.算法空间复杂度是指执行这个算法所需要的内存空间。
一个算法所用的内存空间包括:1、算法程序所占的空间2、输入的初始数据所占的存储空间3、算法执行过程中的额外空间1.2 数据结构的基本基本概念数据:在计算机科学中指所有能输入到计算机中的并被计算机程序处理的符号的总称数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
《C语言程序设计》教学基本知识点第一章C语言基本知识1.C源程序的框架尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。
2.C语言源程序的书写规则:(1)C源程序是由一个主函数和若干个其它函数组成的。
(2)函数名后必须有小括号,函数体放在大括号内。
(3)C程序必须用小写字母书写。
(4)每句的末尾加分号。
(5)可以一行多句。
(6)可以一句多行。
(7)可以在程序的任何位置加注释。
3.语句种类语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。
(1)流程控制语句流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。
其中后两种结构要用特定的流程控制语句实现。
(2)表达式语句表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。
表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。
最常见的表达式语句是赋值语句。
(3)函数调用语句函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。
(4)空语句空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。
(5)复合语句复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。
注意复合语句中最后一个语句末尾的分号不能少。
复合语句右大括号后面没有分号。
4.运算符用来表示数据各种操作的符号称为运算符。
运算符实际上代表了一种类型数据的运算规则。
不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。
C语⾔各章节知识点总结第⼀部分“C语⾔基础知识”知识点1、C程序的基本结构C程序是由函数构成的。
每个程序由⼀个或多个函数组成,其中必须有且仅有⼀个主函数main( )。
main函数是⼀个可执⾏C语⾔程序的⼊⼝和正常出⼝,⽽不论其在整个程序中书写的位置如何。
在C语⾔中,⼤⼩写字母是有区别的。
(例如习惯使⽤⼩写字母定义变量,⽤⼤写字母定义常量)。
C程序的注释有两种⽅法,⼀种是⾏注释,使⽤“//”;另外⼀种是块注释,使⽤“/* */”,注意“/*”与“*/”不能嵌套使⽤。
C语⾔书写较为灵活,但是提倡采⽤缩进格式进⾏程序书写,以体现语句之间的层次感。
C程序每条语句以“分号”作为结束标志。
以下⼏种情况不得使⽤分号:(1)所定义的函数名称后不得使⽤分号;(2) if…else…语句是⼀个整体,中间不能使⽤分号将其分隔开;(3)预编译命令后不能使⽤分号。
2、C程序开发步骤C语⾔在计算机上的开发过程主要由以下四个步骤组成:第⼀步:编辑。
⽣成后缀名为“.c”的源⽂件第⼆步:编译。
⽣成后缀名为“.obj”的⽬标⽂件第三步:连接。
⽣成后缀名为“.exe”的可执⾏⽂件第四步:运⾏。
3、VC++6.0开发⼯具的使⽤按下功能键Ctrl+F7编译程序;按下功能键F7连接程序;按下功能键Ctrl+F5运⾏程序;若程序在编译和连接过程中有语法错误,则按下功能键F4定位错误所在⾏并根据错误提⽰信息改正错误(原则是先解决error,再解决warning)。
4、C语⾔中标识符的命名规则标识符由字母、数字、下划线组成;规定第⼀个字符必须为字母或下划线。
标识符定义的变量名、函数名、常量名等最好做到“见名知义”;⼤⼩写代表不同含义;不能使⽤关键字;最好不要与C语⾔的库函数同名。
5、C语⾔的数据类型C语⾔的数据类型由基本类型和复杂类型构成。
其中基本数据类型包括字符型(char)、整型(int,short,long)、实型(float,double);复杂数据类型包括指针类型、数组、结构体、联合体。
第一章C语言基础知识(C语言概述、算法、数据类型运算符表达式、位运算)一、判断题R1.在C语言中,逗号运算符的优先级最低。
2.在C语言可执行程序的开始执行点是程序中第一个函数。
3.“5ch”是合法的变量名。
R4.C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
5.当输入数据时,必须指明变量的地址,如scanf("%f",&f)N6.表达式i++与++i在任何场合功能完全相同。
7.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。
Float a; int b=1;a=b;R8.C语言程序中,语句以逗号结尾。
()9.在 C 程序中,APH 和aph 代表不同的变量。
( )10. a-=7等价于a=a-7。
( )N11. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按原字符长从左向右全部输出。
( )12.如果x>y为真或a<b为真,表达式(x>y)&&(a<b)就为真。
()13.C语言程序的变量必须先定义再使用。
( )14.若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。
( )15.程序的执行总是从main函数开始,在程序的最后一个函数中结束。
( )N16.变量的三个属性是指变量的名字、变量的值和变量在内存中的地址。
()17. 运算符优先顺序:赋值运算符<逻辑运算符<关系运算符<算术运算符()18.对应float类型的变量,也可以用等号“==”进行数值的判断。
()19.表达式:1 && 3.14 和 1 & 3 的值一样大。
()01&11=120. 为了正确计算表达式既要考虑运算符的优先级,也要考虑其结合性。
()21.任何C程序都是从main函数开始和结束;22. 在C程序中,使用分号“;”表示语句的结束。
C语言各章节知识点总结C语言是一种通用的高级编程语言,广泛应用于计算机软件开发。
下面是C语言各章节的知识点总结:第一章:C语言简介-C语言起源和发展-C语言的特点和优势-C语言的应用领域-C语言的编译和执行过程-编写第一个C语言程序第二章:C语言基础-C语言的基本数据类型-变量和常量-运算符和表达式- 控制语句(if语句、switch语句、for循环、while循环)-输入和输出-函数的定义和调用第三章:C语言数组-数组的定义和初始化-一维数组和多维数组-数组的应用(排序、查找、统计)- 字符串处理函数(strlen、strcpy、strcat)-字符串的输入和输出第四章:C语言指针-指针的概念和作用-指针变量和指针的运算-指针和数组的关系-指针作为函数参数-动态内存分配第五章:C语言函数高级特性-递归函数-函数指针和回调函数-变量的作用域和存储类别-预处理指令-多文件程序设计第六章:C语言结构体和共用体-结构体的定义和初始化-结构体的嵌套和数组-共用体的定义和应用-枚举类型的定义和使用- typedef的使用第七章:C语言文件处理-文件的概念和分类-文件的打开和关闭-文件的读取和写入-文件的定位和修改-错误处理和异常处理第八章:C语言位运算和位字段-位运算的概念和操作-位掩码和位移操作-位字段的定义和使用-位字段的对齐和优化-位操作的应用第九章:C语言高级编程技术-内存管理和动态内存分配-系统调用和库函数的使用-异常处理和错误处理-多线程编程和进程间通信-嵌入式系统开发技术总结:C语言是一门基础且强大的编程语言,掌握C语言的各章节知识点对于学习和使用C语言是非常重要的。
掌握C语言基础知识可以编写简单的程序,掌握指针和数组等知识可以处理更加复杂的数据结构和算法,掌握高级特性可以编写更加高效和模块化的程序。
通过学习C语言,可以为后续学习其他编程语言打下坚实的基础。
第一章 C语言基础知识一、选择题1.算法具有五个特性,以下选项中不属于算法特性的是______。
A)有穷性B)简洁性C)可行性D)确定性【答案】B【解析】本题考查的是算法的特性。
一个算法应当具有以下5个特性:有穷性;确定性;可行性;有零个或多个输入:由一个或多个输出。
简洁性不属于这5个特性,所以本题应该选择B。
2.以下叙述中错误的是A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识【答案】A【解析】本题考查C语言中标识符的概念。
用用户标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与C语言关键字相同。
所以本题应该选择A。
3. 以下4组用户定义标识符中,全部合法的一组是()A)_main B)If C)txt D)intenclude -max REAL k_2sin turbo 3COM _001【答案】A【解析】本题考核的知识点是C语言中的标识符命名规则。
标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名(例如,int是关键字,不是合法的用户标识符)。
选项B中-max不是字母、数字或下划线组成的字符序列,故选项B不正确;选项C中3COM 不是由字母或下划线开头,故选项c不正确;选项D中int为C语言中的关键字,故选项D不正确;选项A中全部为合法的标识符,所以,4个选项中选项A符合题意。
4. 以下选项中,合法的一组c语言数值常量是( )A)028 B)12. C).177 D)0x8a.5e-3 0Xa23 4e1.5 10,000-0xf 4.5e0 0abc 3.e5【答案】B【解析】本题考查的知识点是:数值常量。
数值常量分为整型和实型两类。
其中,整型有十进制、八进制和十六进制三种表示法;实型有小数形式和指数形式两种表示法。
十进制和书面使用的数据表示一样;八进制是以数字O开头,后面跟由0~7组成的八进制数组成;十六进制是以0x(或OX)开头,后面跟由0~9与A~F(或a~f)组成的十六进制数组成;小数形式由数字和小数点组成,其整数部分或小数部分如果为0可省略,但不能同时省略。
指数形式由小数形式或十进制形式开头,后面跟e(或E),再跟一个十进制整数组成。
选项A中,028是八进制形式,但后面跟的8不在0~7之内,所以非法;选项c中,4e1.5是指数形式,但e后面所跟的不是整数,所以非法;选项D中,10,000中不能有“,”,所以非法。
故本题应该选择B。
5. 以下叙述中正确的是()A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译【答案】B【解析】本题考核的知识点是C程序从编写到生成可执行文件的步骤。
C语言采用编译方式将源程序转换为二进制的目标代码,编写好一个C程序到完成运行一般经过以下几个步骤:编辑;编译,就是将已经编辑好的源程序翻译成二进制的目标代码,经编译后的得到的二进制代码还不能直接执行,因为每一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块链接后才能运行:链接,将各模块的二进制目标代码与系统标准模块经链接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件:执行,执行一个经过编译和链接的可执行的目标文件。
由以上定义可知,选项A)C)D均不正确。
所以,4个选项中选项B符合题意。
6.下列叙述中正确的是A)每个C程序文件中都必须要一个main()函数B)在C程序中main()函数的位置是固定C)C程序中所有函数之间都可以相互调用,与函数所在位置无关D)在C程序的函数中不能定义另一个函数【答案】D【解析】本题考查的知识点是函数。
每一个c程序中都必须有且只有一个main()函数但一个C程序可以由多个程序文件组成,所以并非每个c程序文件中都必须要有一个main()函数,故选项A不正确。
c语言并未对main()函数的位置作要求,因此选项B也是错误的。
C语言中,在一个函数被调用之前一定要先声明该函数,所以定义靠后的函数若在前面没有声明该函数的原型,是不能被定义靠前的函数所调用的,即除数函数数之间的调用并非与函数所在位置无关,所以选项C不正确。
故本题的正确答案应该为选项D。
7.下列叙述中错误的是( )A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行【答案】D【解析】本题考查的知识点是:c语言的基本概念。
c语言源程序经过c语言编译程序编译后,会生成一个二进制文件,后缀为.obj,称为目标文件。
然后还要经过“连接程序”,把此.obj文件与c语言提供的各种库函数连接起来,生成后缀为.exe的可执行文件,才能够运行。
故本题中只有选项D是错误的。
8. 以下叙述中错误的是( )A)C语言是一种结构化程序设计语言B)结构化程序有顺序、分支、循环三种基本结构组成C)使用三种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法【答案】c【解析】本题考查的知识点是:结构化程序设计。
结构化程序由3种基本结构组成:顺序结构、选择结构和循环结构。
已经得到证明,由3种基本结构组成的算法结构可以解决任何复杂的问题。
故本题中选项c是错误的。
9.用C语言编写的代码程序A)可立即执行 B)是一个源程序经过编译即可执行 D)经过编译解释才能执行【答案】B【解析】本题考核的知识点是c程序的基本概念。
c语言一种高级语言,c语言源程序经过c语言编译程序编译之后,生成一个后缀为.OBJ的二进制文件(称为目标文件),晟后还要由称为“链接程序”(Link)的软件,把此.OBJ文件与c 语言提供的各种库函数连接在一起,生成一个后缀.EXE的可执行文件。
显然c语言不能立即执行,故选项A错误;根据以上定义。
选项C和选项D错误,所以,4个选项中选项B符合题意。
10.结构化程序由三种基本结构组成,三种基本结构组成的算法A)可以完成任何复杂的任务 B)只能完成部分复杂的任务C)只能完成符合结构化的任务 D)只能完成一些简单的任务【答案】A【解析】本题考核的知识点是c程序的三种基本结构。
C程序由三种基本的结构组成,分别为顺序结构、选择结构和循环结构,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务,故选项B)选项c和选项D都不正确。
所以,4个选项中选项A符合题意。
11. C语言源程序名的后缀是( )A).exe B).C C).obj D).cp【答案】B【解析】本题考查的知识点是:c语言的基本概念。
c语言源程序的后缀为.c;经过编译得到的目标程序文件的后缀为.obj;再将目标程序文件链接后得到可执行文件的后缀为验证.exe。
故本题应该选择B。
12.以下叙述中错误的是A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D【答案】C【解析】本题考查了C语言中语句的一些概念。
C语句必须以分号结束,选项A是正确的。
复合语句在语法上被看作一条语句,选项B也是正确的。
空语句也算是一条语句,因此如果空语句出现在条件或者循环语句中,一样会被当作条件子句或者循环体来看待,所以选项C是错误的。
赋值表达式末尾加分号就构成赋值语句,选项D正确。
故本题应该选择c。
13.以下能正确定义且赋初值的语句是A)int n1=n2=10; B)char c=32; C)float f=f+1.1; D)double x=12.3E2.5;【答案】B【解析】本题考查的知识点是变量赋初值。
选项A中的语句只能起定义nl的作用,而n2=10是n1的初始值表达式,但因前面没有定义过n2,所以编译会报错“n2未定义”,故不正确。
选项B使用一个整数初始化一个字符变量是正确的,因为字符变量中保存的本来就是整数(某字符的ASCII码值)。
选项c定义的初始值表达式中出现了它自身,某些编译器能通过编译,但f在初始化之前是一个未知的值,用未知值来初始化也还是未知值,这是不可取的。
选项D的初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的2.5非法。
14.有以下程序main(){ char a1='M', a2='m';printf("%c\n", (a1, a2) ); }以下叙述中正确的是A)程序输出大写字母M B)程序输出小写字母mC)格式说明符不足,编译出错 D)程序运行时产生出错信息【答案】B【解析】本题考查的是逗号表达式。
因为整个逗号表达式的值为逗号表达式最后一个子表达式的值,所以本题输出的是a2的值‘m’。
故应该选择B。
15. 以下符合C语言语法的实型常量是()A)1.2E0.5 B)3.14.159E C).5E-3 D)E15【答案】C【解析】本题考核的知识点是实型常量和指数形式表示数的书写格式。
实型常量只能用十进制形式表示,不能用八进制或十六进制形式表示,实型常量可以用小数形式或指数形式表示,在C语言中,可以用指数形式将实型常量表示为数值和指数两部分,数值部分不能为空,指数部分只能为整数表示。
选项A中1.2和0.5都不是整数,故选项A不正确;选项B中3.14159也不是整数,故选项B不正确;选项D中数值分不能为空,故选项D也不正确;所以,4个选项中选项C符合题意。
16.若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3; B)1+2=x2 ;C)x3=0x12; D)x4=1+2=3;【答案】C【解析】本题考核的知识点是C语言中对变量赋值的应用。
赋值操作由赋值运算符“=”来完成,一般形式为变量=表达式,赋值的方向为由右向左,即将“=”右侧表达式的值赋给“=”左侧的变量,执行步骤是先计算再赋值。
选项A 中运算符“%”的运算对象必须为整数,而选项A中26.8不是整数,故选项A不正确;选项B将一个变量赋值给一个表达式,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个表达式,故选项D不正确;所以,4个选项中选项C符合题意。
17.设有以下定义int a=0;double b=1.25;char c=’A’;#define d 2则下面语句中错误的是()A)a++; B)b++ ;C)c++; D)d++;【答案】D【解析】本题考核的知识点是自加运算符的运算对象。