C语言概述与数据类型_第1页
C语言概述与数据类型_第2页
C语言概述与数据类型_第3页
C语言概述与数据类型_第4页
C语言概述与数据类型_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

图1-1程序从编辑到运行的过程1.1.3认识简单的C程序1.函数C语言源程序由函数构成,函数又由程序设计语言提供的具有一定功能的语句构成。一个源程序其中必不可少且只能有一个的是主函数(main函数),程序从主函数开始运行。在第3章之前针对仅包含主函数的程序进行讨论。为了说明C语言源程序结构的特点,先看一个简单的程序,以便读者了解C语言源程序基本组成结构。#include<stdio.h>main(){printf("Hello!");}以上例子是一个可以编译运行的最简单的C语言程序,仅包括一个主函数,其功能是把字符串“Hello!”送到显示器并显示。printf函数调用语句的功能就是显示(或称为输出)。C语言的函数由三部分组成:(1)使用输出库函数时要用到头文件stdio.h,源文件开头应有以下预编译命令:#include<stdio.h>(2)函数首部:由函数名——main和一对括号()构成。(3)函数体:由一对{}和其中的一条或多条语句构成。2.语句程序(或函数)的基本组成是语句。语句一般有输入、输出、赋值或控制等功能,是3.书写格式C语言函数体中的每一个语句都是以“;”分号为结束符的。它们的书写非常自由,可以在一行的任意位置开始写程序语句,一个语句可写成多行,一行可以写多个语句。从便于阅读理解和维护的角度出发,在书写程序时应遵循:每个语句占一行。4.注释注释是供编程人员阅读的,与程序的运行没有任何关系。注释的格式为“/*…*/”。注释语句可以出现在程序的任意位置,在C++语言环境下也可以用“//…”注释格式,只能出现在语句的行尾或独立为一行。例如:#include<stdio.h>main(){printf("Hello!");/*输出*/}或{/*输出*/printf("Hello!");}或{printf("Hello!");//输出}1.2C语言基本数据类型前面已经讨论程序的主要功能就是处理数据,C语言能够处理哪些类型的数据?计算机是如何表示和存储数据呢?下面进行介绍。1.2.1计算机中数据存储基础1.存储空间的单位计算机存储数据的电器元件多数是二态的,因此计算机的指令和数据都是以二进制进行存储的。一个电器元件的存储量定义为位(b),是存储的最小单位。1b能表示2个状态,可以表示数值0和1;2b能表示4个状态,可以表示数值0(00),1(01),2(10),3(11)…计算机存储的基本单位是字节(B),1B=8b,能表示28=256个状态,可以表示数值0,1,2,…,255。00000000表示0,00000001表示1,00000010表示2,…,11111111表示255。2.二进制转十进制十进制是满十进一,所以1236=1000+200+30+6=1×103+2×102+3×101+6×100同样的道理,二进制是满二进一,所以二进制转化为十进制过程如下:二进制0001001=23+20=9,二进制00011010=24+23+21=263.十进制转二进制十进制数1236÷10=123…6,123÷10=12…3,12÷10=1…2,1÷10=0…1,从后向前余数就是这个十进制数1236。同样的道理,十进制转化为二进制的过程如下:26÷2=13…0,13÷2=6…1,6÷2=3…0,3÷2=1…1,1÷2=0…1,从后向前余数就是26的二进制数表示11010。数据都是以二进制形式存储在计算机中的,关于计算机中数据的存储这里就介绍这么多,更多的知识在计算机导论课程中介绍。1.2.2数据类型首先,C程序设计语言可以存储和处理的数据类型如图1-2所示。图1-2数据类型表1.2.3数据类型的作用通过数据类型的定义,决定了该类型数据的存储空间的大小和存储方式,进而决定了该类数据的取值范围和精度;另外数据类型还决定了数据运算(操作)的规则,这一点在1.2.6节介绍运算符时会详细说明。1.数据存储举例(1)unsignedshort类型数据占2字节,16位全部存储数值,如:1000000000000001表示215+20=32769。【问题思考】思考unsignedshort类型的数据最小值、最大值各是多少?(2)short类型数据占2字节,最高位存储符号,0表示正数,1表示负数;其余15位存储数值,如:0100000000000001表示214+20=16385。1111111111110110表示–10的补码。数值是以补码表示的:正数的补码和原码相同。负数的补码:将该数的绝对值的二进制形式按位取反再加1。例如,求–10的补码:10的原码:0000000000001010按位取反:1111111111110101再加1,得–10的补码:1111111111110110由此可知,左面的第一位是表示符号的。【问题思考】思考short类型的数据最小值、最大值各是多少?(3)float类型数据占4字节(32位)内存空间,按指数形式存储。实数3.14159在内存中的存放形式如下:+3.141591符号位小数部分指数最高位存储符号;小数部分占的位数愈多,数的有效数字愈多,精度愈高;指数部分占的位数愈多,则能表示的数值范围愈大。2.数据的取值范围和精度整型数据在取值范围内都是精确存储,不同整数类型的数据取值范围如表1-1所示。表1-1整数表名称数据类型描述符字节数取值范围有符号整数int2(C编译系统下)4(VisualC++编译系统下)–32768~+32767–2147483648~2147483647短shortshortint2–32768~+32767长longlongint4–2147483648~2147483647无符号整数基本型unsignedunsignedint2(C编译系统下)4(VisualC++编译系统下)0~655350~4294967295短unsignedshort20~65535长unsignedlong40~4294967295实型数据由于小数的存储空间有限,不能精确存储,不同类型的数据取值范围和精度(有效数字)如表1-2所示。表1-2实数表名称类型描述符字节数取值范围有效数字(十进制的位)单精度实型float4±(10–37~1038)6~7位双精度实型double8±(10–307~10308)15~16位长双精度longdouble16±(10–4931~104932)18~19位例如,在计算机中123456789123456789.0存储为123456789123456784.03.123456789123456789存储为3.12345678912345681这就是表1-2中所描述的有效位。注意:当数据超出范围(称为“数据溢出”)时,其他高级程序设计语言输出的结果以*代表,提示程序设计人员改写程序中的数据类型。C语言的输出方式,不容易发现这类错误,因输出为–32768。显然输出的结果与真实结果完全背离,因此在编程时一定要认真分析实际问题中数据可能的范围,并依此来选择数据类型。3.数据类型与运算关于运算的细节在1.2.6节表达式中详细讲解,这里仅就数据运算与数据类型密切关系进行介绍。(1)C语言限定求余运算只对整数进行,C语言对整数的求余运行符为“%”。(2)C语言规定同类型数据运算结果类型不变,如整数与整数运算的结果一定是整数,舍去小数。所以,4/5的运算结果为0,7/2的运算结果为3。(3)数据运算与数据类型相关的实例还有很多,在后面的学习过程中请读者自己总结。1.2.4数据表示——常量数据有两种基本表示形式,在程序中以常量和变量出现。常量是在程序运行过程中不可改变的量,其类型根据其书写形式和范围决定。1.整型常量整型常量由数字和常量后缀(L或l表示长整型数、U或u表示无符号数)构成,C语言的整型常量有八进制、十六进制和十进制三种:十进制整数(基本数字0~9):110456139L32769U233445(为长整型)等。八进制整数(以0打头,基本数字0~7):037010L–0260776等。十六进制整数(以0X打头,基本数字0~9,而10至15记为A至F):0X3310X00X3AC0–0XAF等。2.实型常量(常量后缀F或f表示浮点数)实型常量也称为实数或浮点数。在C语言中规定,实数只采用十进制,实型常数不分单、双精度,都按双精度double型处理。实型常量由数字、小数点和常量后缀(F或f表示浮点数)构成。它有两种表示形式:十进制小数形式和指数形式。(1)十进制小数形式:由数码0~9和小数点组成(后缀为f或F表示该数为浮点数),如0.0、25.0、5.789、0.13、–456.789、234F、67f等均为合法的实数。特别地,123.0可以表示为123.、0.123可以表示为.123。(2)指数形式:由尾数(a)和阶码(En或en)组成。数学表达式a×10n的C语言表达式为aEn(a为十进制数,n为十进制整数)。其中,尾数a为十进制数;e或E为指数标志;n为阶数,只能为整数,可以带符号。例如:2.1E5(等于2.1*105)、3.7E–2(等于3.7*10–2)、1E5(等于105)、0.5E7(等于0.5*107)、–2.8E–2(等于–2.8*10–2)。以下不是合法的实数:345(无小数点或浮点数后缀)。E7(无尾数)。53.–E3(负号位置不对)。7E(无阶码)。注意:(1)数学意义上的常量在程序设计语言中不一定是常量,如1/2、π、e(自然数)等。特别是23%,在程序设计语言中既不是常量,也不是后面将介绍的表达式。(2)实型常量为双精度型,有效位为15~16位,超出部分进行四舍五入。3.字符常数1)一般字符常数字符常数就是单个字符,字符可以是键盘上的任意一个可显示的字符,程序中字符常量写在一对单引号内(单引号称为定界符)。例如,'*'、'A'、'7'、'&'等。2)特殊字符特殊字符包括不可显示字符和在C语言中具有特殊意义的字符(如'为字符常量的定界符)。为了表示这些特殊字符,C语言提供了转义字符来表示他们。转义字符包括反斜线、被转义的字符和一对单引号。例如,'\n'将n转义为不可显示的回车换行字符。'\''将定界符'转义为普通的单引号字符。它们被当作一个单字符,也是字符常数。常用转义字符如表1-3所示。表1-3转义字符表符号序列名称符号序列名称\n回车换行\'单引号\t水平制表\''双引号\b退格\\反斜线\r回车不换行\ddd八进制ASCII码值(0~377)\f换页\xdd十六进制ASCII码值(0~F9)3)以ASCII码值显示字符除了表中提供的特殊字符,其他不可显示字符可以用相应的八进制或十六进制ASCII码值表示,表示方式如表1-3中的后两项,同样需要单引号作为定界符。例如,'\t'也可以表示为'\11'(Tab键的八进制ASCII为11)。每个转义字符均被看做一个单字符常量,当然一般字符常数也可以这样表示,只是可读性差。4)字符的存储程序中字符常量写在一对单引号内(单引号称为定界符),定界符不存储,只存储字符对应的ASCII码值(参见附录D)。每个字符占1字节,字符0的ASCII码是48,存储它占一个字节。数值类型也是按类型分配存储空间的,整型的0、48、197和1297等都是占2字节。5)字符的操作字符类型与数值类型的操作方式是有区别的。大多数程序设计语言规定,字符类型的数据只是一个符号,不能参与算术运算。但在C语言中允许字符以ASCII码值参与算术运算,其结果以字符格式或数值格式输出。例如,'A'的ASCII码为65。“printf("%d",'A'+3);”的输出结果为68("%d"表示按十进制整型操作)。printf("%c",'A'+3);的输出结果为D("%c"表示按字符型操作)。又如“printf("%d",'0'+3);”的输出结果为51,“printf("%c",'0'+3);”的输出结果为3。4.字符串常数字符串常量是一个字符序列,且被括在双引号中(双引号称为定界符)。字符串的语法形式是characters。characters可以是零个或多个字符集中的字符,包括任意转义字符。其中若出现双引号、反斜线或回车换行符必须用其转义字符(\",\\,\n)表示。例如,"123Cprogram","11.11%","123\nabc"等都是合法的字符串常量。特别地,定界符中没有字符时,""称为空串。字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字符的个数加1。增加的一个字节中存放字符"\0"(ASCII码为0),这是字符串结束的标志。例如,字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。'a'在内存中占一个字节,存储为:a"a"在内存中占二个字节,存储为:a\0"\"a\""在内存中占四个字节,存储为:"a"\0和字符一样,字符串定界符也不存储。1.2.5数据表示——变量1.变量和变量名表面上理解“变量”就是可以改变的量。就其实质,变量就是数据的存储空间。之所以变量能改变,是因为变量存储空间中的数据是可以更改的。变量的存储空间是开辟在内存中的,无须清楚它具体的物理地址,只要知道变量的逻辑名称——变量名就可以使用它了。变量名是对数据存储空间的一个抽象名称,一方面代表存储空间(其地址表示方式:&变量名,&为C语言的地址符);另一方面又代表其中存储的数据(表示方式:变量名本身),因此通过变量名就可以对它空间中的内容进行改变或引用。C语言的变量名命名规则是,“以字母或下划线开头的,字母、数字或下划线的序列”。变量名可以是任意长度,但编译器只识别31个或更少(因编译系统不同而不同)。C语言的关键词是不可以作为变量名,参见附录A中有关标识符的内容。注意:在对变量名命名时应注意:(1)所有语言都允许26个英文大小字母出现在变量名中,特别要注意C语言认为A与a是不同的变量,即C语言的变量名是区分大小写的。(2)变量名最好与其所存储的数据意义有关,这样可增加程序的可读性。例如,“累加和”用sum或s做变量名,“姓名”用name或xm做变量名,圆周率(3.1415926)用pi做变量名等。(3)变量名最好不要用到字母l(小写L)、o、z或I(大写i)等易与数字混淆的字母。2.变量定义变量需先定义后使用。所谓变量定义就是说明变量类型,其功能是为说明的每一个变量按类型开辟存储空间(编译系统在对程序进行“编译时”,根据变量定义的类型为其分配逻辑空间,运行时分配物理的内存空间)。从而决定其存储数据的范围精度和参与运算的种类等。变量定义的格式如下:类型描述符变量表;其中,变量类型描述是指C语言允许使用的有效类型(见表1-1和表1-2),变量表是由一个或多个被定义的变量名组成,若定义多个变量,则变量之间用逗号‘,’分隔,如“inti,j,k;”。注意:(1)变量类型的选择是根据其所存储数据的逻辑意义决定的。例如,工资一般是实型数据又不会太大,相关变量应该定义为float型;年龄,身高等数据一般为整型且不会很大,相关变量应该定义为int型。当有些整型数据或其运行结果较大时,可以考虑定义为长整型。当整型意义的数据或运算结果很大时,如n!、1+2+22+23+…+2n等,在不考虑精度的情况下,应考虑用实型变量存储数据或运算结果。(2)还可以加注释语句,说明变量的意义,这样对程序以后的维护也很有好处。例如:floata,b,c; /*三角形的三条边*/3.变量赋值变量=算术表达式;(=称为赋值号,不是等号)称为赋值语句,操作过程为先计算表达式的值,然后将计算结果存储在变量中。例如:shorta; /*定义*/a=8; /*赋值*/a=9; /*赋值*/a=a+9; /*计算后赋值*/执行这些语句的功能是,先为变量a开辟2字节的整型数据存储空间,然后存入8,变量值为8;再将9存入变量a,以前存入的8被覆盖,变量值为9。第三个赋值语句,右面是一个表达式,要先计算其值:取变量a的值为9,9+8等于17,将17存入变量a,变量的值就变成17了。4.变量赋初值在定义变量的同时,还可以对其中全部或部分的变量赋初始值,例如:inti,j,k=1,s=0,n=k+6,m;注意:变量除了需要先定义后使用外,还必须先赋值后引用。看程序段:inti;i=i+1;经过定义后的变量i,可以存储数据了,但在计算i+1时,其他程序设计l语言认为这是语法错误,在编译时会指出“变量没有赋初始值”的错误,只有改正后程序才能通过编译,然后运行。C语言“不做错误指示”,即可以通过编译,那么它又是怎么运行的呢?很简单,C语言就是将i空间“原有”的值加1后再赋给i。那么“原有的”值是什么呢?又是从哪儿来的?有计算机基础的人都知道,当删除一个文件时,这个文件其实并没有真正被删除,只是在文件目录中对该文件做一个删除“标记”,文件内容(“尸体”)仍保持在原来的空间中。若该文件空间没有被占用,只需去掉删除“标记”就可将文件恢复。前一个程序运行时要进入内存,执行完就“退出”内存。后一个程序运行时,可能正好被分配到这部分内存空间,这些空间确实是可用的,但不是真正意义的“空白空间”,和文件空间一样原来程序的内容并没有被清0,所以变量“原有”的值就是在该程序之前占用此空间的软件代码或数据的“尸体”,无法知道它具体是什么值。因此一定要注意:“变量必须先定义,后赋值,再引用”。5.常变量C语言还可以定义一种常变量,即程序中不可改变其值的变量。其定义的格式如下:const变量类型描述符变量表;由于程序中不能改变变量的值,所以一般常变量都是要赋初值的。例如:constfloatpi=3.1415926,r=1.234;6.变量的作用初学者往往不明白什么时候用常量表示数据,什么时候就该用变量方式表示数据。举几个简单的例子说明。下面的程序是求半径为1.234567厘米的圆周长和面积。printf()若不用变量的程序如下。程序1:#include<stdio.h>main(){printf("L=%f",2*3.1415926*1.234567);printf("s=%f",3.1415926*1.234567*1.234567);}程序1不但书写麻烦,易出错,读起来也不好懂。使用变量后,再看程序2。程序2:#include<stdio.h>main(){floatpi=3.1415926,r=1.234567;printf("L=%f",2*pi*r);printf("s=%f",pi*r*r);}像数学上的代数一样,引入变量后程序简洁明了,克服了程序1的缺点。再来看程序3的改进。程序3:#include<stdio.h>main(){floatpi=3.1415926,r=1.234567,temp;temp=pi*r;printf("L=%f",2*temp);printf("s=%f",temp*r);}程序中引入临时变量temp,用来记录pi*r的值,这样在以后的程序中就减少了重复的乘法运算。当然,由于临时变量的引入同时降低了程序的可读性,鉴于现代计算机运行速度的提高和计算机资源的普及,读者在程序书写时可以在时间效率和可读性之间权衡利弊。其次若不引入变量,以上程序都只能求半径为1.234567的圆的周长和面积,而不方便对其他半径的圆进行求解。引入变量并通过键盘输入语句,可以使程序得到优化——增强程序的通用性,程序4如下。程序4:#include<stdio.h>main(){floatpi=3.1415926,r;scanf("%f",&r);printf("L=%f",2*pi*r);printf("s=%f",pi*r*r);}这个程序在执行到“scanf(“%f”,&r);”语句时,程序暂停执行,等待用户从键盘输入圆的半径,用户输入任何半径程序都能计算出相应的周长和面积。这几个例子并不能概括变量的全部作用,但至少可以理解:(1)引入变量可以减少对常量的录入,不但提高了编写程序的效率,还可能减少录入错误。因为编译系统不可能发现常量的拼写错误,而变量拼写错误系统会因没有进行说明而报错。(2)对某些数据不直接使用常量,而引入变量通过键盘输入语句为其赋值,可以使程序通用性更强。(3)引入临时变量来记录运算的中间结果,可减少运算,从而提高程序运行的时间效率。1.2.6数据运算——表达式程序设计语言中的表达式种类很多,有算术表达式、关系表达式、逻辑表达式、字符串表达式等。下面主要介绍算术表达式。算术表达式是最直接地“指挥”计算机对数据进行运算的形式,算术表达式由运算符、数据(常量或变量)、函数和括号组成,并有一定的优先级规则。1.算术运算符C语言的运算符不仅具有不同的优先级,而且还有一个结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。C语言的算法运算符如表1-4所示(多数运算符的结合性是自左向右进行运算,不标结合性的都是自左向右)。表1-4运算符表运算符作用注意事项结合性+加法+一元运算符时是正号可以省略自右向左–减法–一元运算符时是负号自右向左*乘法/除法%求余(模)只针对整型数据运算––自减1只针对变量运算++自加12.标准库函数为了减少编程人员的工作量,提高程序设计的效率,满足不同用户对程序设计语言功能的需求,程序设计语言为用户提供了丰富的标准库函数,如数学类函数、字符串类函数、图形类函数等。为了使C语言的编译系统在编译时方便找到所要调用的函数,在使用函数时要知道函数所在的头文件(可查阅附录C),并在文件开头用预编译文件包含命令(详见4.2.6节)链接。例如#include<math.h>或#include"math.h"前者只在系统目录中查找,后者先在当前目录中查找若没有才在系统目录查找。然后就可以调用所需要的函数了。在使用时,有一些共同需要注意的问题如下:(1)函数及参数的单位,三角函数参数或函数值的单位一般为“弧度”,如sin(3.1415926/7),sin(3.1415926*7/180)(=sin70°,写成sin70或sin(70)都是错误的)。(2)函数及参数的类型、顺序,如pow(2,6)(=26),pow(6.0,2.0)(=62)参数和函数值(表达式的值)都是double型。(3)函数及参数的范围,如log(),log10()函数的参数必须大于0,log(–2)是非法的。又如tan(3.1415926/2)的值是要“溢出”的。函数的应用方式也是多样的:(1)可以单独引用,例如:intt;t=sqrt(50);/*开平方*/(2)可以出现在表达式中,例如:intt;t=3*sqrt(50)+90*pow(2,3)(3)可以嵌套引用,例如:intt=90;log(sin(70*3.1415926/180));3.算术表达式1)算法表达式的表示算术表达式由运算符、数据(常量或变量)、函数和括号组成,并有一定的优先级规则。单个的常量、变量、函数可以看作是表达式的特例。例如,a+b、(a*2)/c、(x*y)/6-(a-b)/9、a、9、sin(3.14/8)都是算术表达式。2)算法表达式的值和类型一个表达式有一个值及其类型,即计算表达式所得结果的值和类型。图1-3类型自动转换的规则表达式求值按运算符的优先级和规定的结合方向进行,参见附录A。基本算术运算符图1-3类型自动转换的规则例如,3+6*5结果为33。对表达式类型C语言规定:(1)同类型数据运算结果类型不变,如整数与整数运算的结果一定是整数,舍去小数。所以,4/5的运算结果为0,7/2的运算结果为3。(2)C语言支持不同类型数据的混合运算,运算结果类型由参与运算的数据决定。不同类型数据运算时,运算结果取高一级的数据类型,如图1-3所示。注意:注意计算结果服从规则(2),但计算过程中仍服从规则(1)。算式1/2*2.22的值为0.0,而非1.11;而1.0/2*2.22或2.22/2的值才为1.11。3)算法表达式的意义算术表达式就是要指导计算机进行计算,相当于数学中的公式,当然语法上要符合语言的要求。例如,今天是周二,100天后是周几?程序如下:#include<stdio.h>main(){printf("%d\n",(100+2)%7);}【问题思考】(1)今年是兔年,50年后是什么生肖?(2)方程ax2+bx+c=0两个解的算术表达式。(3)求一个四位数a的个位和千位。注意:(1)算术表达式类似数学上的公式,所以总有人把算术表达式误写成对应的数学式子。例如:3x+2y(少了乘号*)。(2)以上的错误并不可怕,因为程序设计语言的编译系统会在编译时发现它们,改正后就能通过编译并运行了。可怕的是,表达式错误地表示了数据计算的实际意义而造成的逻辑错误,如“a+b/c*d”与“(a+b)/(c*d);”的运算意义是完全不同的。(3)不能有运算符或数据以外的符号,如π、β、ξ等。又如程序中将e视为变量,而不是数学领域认为的“自然数”;在程序中可以用函数调用exp(1)表示自然数e。(4)23%在程序设计语言中既不是常量,也不是表达式,在程序中只能用0.23表示或23.0/100等形式表示(注意23/100的结果是0)。(5)利用括号可改变运算的优先级,但有时即使无须改变运算的优先级也可利用括号使算术表达式的运算次序清晰直观。例如,表达式A/B/C,就不如A/(B*C)更容易理解。(6)C语言支持不同类型数据的混合运算,但计算机在计算时实质要将低精度的类型转换为高精度后才运算。考虑到运行效率,应尽可能地减少这种转换。例如,“floata,b=3;a=b/2;”就不如“floata,b=3.0;a=b/2.0;”效率高。(7)为了易读写,数学中会把1000000写成106,但有的初学者在程序中将它写成指数函数pow(10,6),那么计算机将要做不必要指数运算,如果用科学记数法写成常量1.0e6,则不需要任何计算。(8)利用中间变量记录需要重复计算的表达式,可以提高运行效率,例子见1.2.5(9)书写表达式时要考虑计算结果的精度,特别是在较大的实数之间进行运算时。当a、b、c都是较大的实型数时,要计算算术表达式a*b/c的值,若先计算a*b,则有可能会发生数据溢出或损失一些精度,但若将表达式写成a/c*b,则可避免溢出或精度的损失。习题11.选择题(1)能将C语言编写的源程序转换为目标程序的软件是()。A.编辑程序 B.汇编程序 C.编译程序 D.解释程序(2)以下叙述中正确的是()。A.C语言的源程序不必通过编译就可以直接运行B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令C.C源程序经编译形成的二进制代码可以直接运行D.C语言中的函数不可以单独进行编译(3)A.c B.obj C.exe D.bas(4)下列四个描述中,错误的是()。A.一个C源程序必须有只能有一个主函数B.一个C源程序可以含一个或多个子函数C.在C源程序中注释说明必须位于语句之后D.C源程序的基本结构是函数(5)C语言中基本的数据类型包括()。A.整型、实型、逻辑型 B.整型、实型、字符型C.整型、字符型、逻辑型 D.整型、实型、逻辑型、字符型(6)以下选项中不正确的整型常量是()。A.12L B.–10 C.1900 D.(7)下面4个选项中,均是合法整型常量的选项是()。A.120 B.–0xcdf C.–01 D.–0x48a –0xffff 01a 986012 2e5 011 0xe 0668 0x(8)以下符合C语言语法的实型常量是()。A.1.2E0.5 B.3.14159E C.5E–3 D.E15(9)下面4个选项中,均是不合法浮点数的选项是()。A.160. B.123 C.–.18 D.–e30.12 2e4.2 123e4 .234e3 .e5 0.0 1e3(10)()是不正确的字符常量。A.'n' B.'1' C."a" D.'\101'(11)已定义ch为字符型变量,以下赋值语句中错误的是()。A.ch='\' B.ch=62+3 C.ch=0 D.(12)已定义c为字符型变量,则下列语句中正确的是()。A.c=98; B.c='98'; C.c="98" D.c="b"(13)能用作变量名字的标识符是()。A.union B.double C.ab–1 D._123cd(14)以下4组用户定义标识符中,全部合法的一组是()。A._main B.If

C.txt D.intenclude

–max

温馨提示

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

评论

0/150

提交评论