第6章 C语言的标识符、关键字和数据类型

第6章 C语言的标识符、关键字和数据类型
第6章 C语言的标识符、关键字和数据类型

第6章 C语言的标识符、关键字和数据类型

6.1 标识符和关键字

标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不要使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符最长可达255个字符,但只有前面32个字符在编译时有效,因此在编写源程序时标识符的长度不要超过32个字符,这对于一般应用程序来说已经足够了。C语言是大小写敏感的一种高级语言,如果我们要定义一个时间“秒”标识符,可以写做“sec”,如果程序中有“SEC”,那么这两个是完全不同定义的标识符。

关键字则是编程语言保留的特殊标识符,有时又称为保留字,它们具有固定名称和含义,在C语言的程序编写中不允许标识符与关键字相同。与其他计算机语言相比,C语言的关键字较少,ANSI C标准一共规定了32个关键字,见表6-1。

关键字用途说明

auto 存储种类说明用以说明局部变量,缺省值为此

break 程序语句退出最内层循环体

case 程序语句switch语句中的选择项

char 数据类型说明单字节整型数或字符型数据

const 存储类型说明在程序执行过程中不可更改的常量值continue 程序语句转向下一次循环

default 程序语句switch语句中的失败选择项

do 程序语句构成do…while循环结构

double 数据类型说明双精度浮点数

else 程序语句构成if…else选择结构

enum 数据类型说明枚举

extern 存储种类说明在其他程序模块中说明了的全局变量float 数据类型说明单精度浮点数

for 程序语句构成for循环结构

goto 程序语句构成goto转移结构

if 程序语句构成if…else选择结构

int 数据类型说明基本整型数

long 数据类型说明长整型数

register 存储种类说明使用CPU内部寄存的变量

return 程序语句函数返回

short 数据类型说明短整型数

signed 数据类型说明有符号数,二进制数据的最高位为符号

sizeof 运算符计算表达式或数据类型的字节数

static 存储种类说明静态变量

struct 数据类型说明结构类型数据

switch 程序语句构成switch选择结构

typedef 数据类型说明重新进行数据类型定义

union 数据类型说明联合类型数据

unsigned 数据类型说明无符号数据

void 数据类型说明无类型数据

volatile 数据类型说明该变量在程序执行中可被隐含地改变while 程序语句构成while和do…while循环结构

表6-1 ANSI C标准一共规定了32个关键字

Keil C51编译器的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。在Keil C51开发环境的文本编辑器中编写C 程序,系统可以把保留字以不同颜色显示,缺省颜色为蓝色。表6-2为Keil C51编译器扩展的关键字。

关键字用途说明

bit 位标量声明声明一个位标量或位类型的函数

sbit 位变量声明声明一个可位寻址变量

sfr 特殊功能寄存器声明声明一个特殊功能寄存器(8位)

sfr16 特殊功能寄存器声明声明一个16位的特殊功能寄存器

data 存储器类型说明直接寻址的8051内部数据存储器

bdata 存储器类型说明可位寻址的8051内部数据存储器

idata 存储器类型说明间接寻址的8051内部数据存储器

pdata 存储器类型说明“分页”寻址的8051外部数据存储器xdata 存储器类型说明8051外部数据存储器

code 存储器类型说明8051程序存储器

interrupt 中断函数声明定义一个中断函数

reetrant 再入函数声明定义一个再入函数

using 寄存器组定义定义8051的工作寄存器组

表6-2 Keil C51编译器扩展的关键字

6.2 在51 MCU DEMO试验板上实现:使右侧4个LED数码管从左至右显示“1234”

6.2.1 实现方法

第1步:向P0口送“4”的字形码,向P2口送数0xfe以点亮个位数码管,延时2mS维持数码管点亮状态;第2步:向P0口送“3”的字形码,向P2口送数0xfd以点亮十位数码管,延时2mS维持数码管点亮状态;第3步:向P0口送“2”的字形码,向P2口送数0xfb以点亮百位数码管,延时2mS维持数码管点亮状态;第4步:向P0口送“1”的字形码,向P2口送数0xf7以点亮千位数码管,延时2mS维持数码管点亮状态。重复执行以上第1~4步,即可在数码管上得到稳定清晰的显示。

6.2.2 源程序文件

在D盘建立一个文件目录(CS6-1),然后建立CS6-1.uv2的工程项目,最后建立源程序文件(CS6-1.c)。输入下面的程序:

#include //1

unsigned char dis0=0x99; //2

unsigned char dis1=0xb0; //3

unsigned char dis2=0xa4; //4

unsigned char dis3=0xf9; //5

/*=====================6===============*/

void delay(void) //7

{ //8

unsigned int i,j; //9

for(i=0;i<2;i++) //10

{ //11

for(j=0;j<121;j++) //12

{;} //13

} //14

} //15

//=====================16===========

void main(void) //17

{ //18

while(1) //19

{ //20

P0=dis0; //21

P2=0xfe; //22

delay(); //23

P0=dis1; //24

P2=0xfd; //25

delay(); //26

P0=dis2; //27

P2=0xfb; //28

delay(); //29

P0=dis3; //30

P2=0xf7; //31

delay(); &,amp;nb, sp;//32

} //33

} //34

图6-1为keil c51软件编译时的界面,下部的输出窗口显示0错误、0警告。51 MCU DEMO试验板接通5V稳压电源,将生成的CS6-1.hex文件下载到试验板上的单片机89S51中,注意,标示“LEDMOD_DATA”及“LEDMOD_COM”的双排针应插上短路块。我们发现右侧4个LED数码管从左至右清晰显示“1234”。

图6-1 keil c51软件编译时的界面

6.2.3 程序分析解释

序号1:包含头文件REG51.H。

序号2:定义无符号字符型变量,其标识符为dis0,并赋初值0x99。

序号3:定义无符号字符型变量,其标识符为dis1,并赋初值0xb0。

序号4:定义无符号字符型变量,其标识符为dis2,并赋初值0xa4。

序号5:定义无符号字符型变量,其标识符为dis3,并赋初值0xf9。

序号6:程序分隔。

序号7:定义函数名为delay的延时子函数(延时长度约为2mS),其标识符为delay。

序号8:delay延时子函数开始。

序号9:定义两个无符号整形变量i,j。

序号10~14:两个for语句循环体,作用是延时。

序号15:delay延时子函数结束。

序号16:程序分隔。

序号17:定义函数名为main的主函数,其标识符为main。

序号18:main的主函数开始。

序号19:while循环语句,这里进行无限循环。

序号20:while循环语句开始。

序号21:将dis0变量(显示4)送往P0口。

序号22:P2口送数0xfe,目的是点亮个位数码管。

序号23:调用延时子函数模块,维持点亮时间,便于观察。

序号24:将dis1变量(显示3)送往P0口。

序号25:P2口送数0xfd,目的是点亮十位数码管。

序号26:调用延时子函数模块,维持点亮时间,便于观察。

序号27:将dis2变量(显示2)送往P0口。

序号28:P2口送数0xfb,目的是点亮百位数码管。

序号29:调用延时子函数模块,维持点亮时间,便于观察。

序号30:将dis3变量(显示1)送往P0口。

序号31:P2口送数0xf7,目的是点亮千位数码管。

序号32:调用延时子函数模块,维持点亮时间,便于观察。

序号33:while循环语句结束。

序号34:main的主函数结束。

可见我们定义的数据类型、函数、变量等均未与C语言的关键字发生冲突。

下面我们做一下修改,将dis0改为do,将delay改为switch。再进行编译、连接,结果出现了一大堆的错误(见图6-2)。因此切记,在程序编写中不允许标识符与C语言的关键字相同。

图6-2 出现了一大堆的错误

C语言程序设计第二章-常用数据类型

第二章常用数据类型 【学习目标】 本章将学习一些基本的程序概念,如程序结构、标识符、章的学习要 关键字和注释等。本点包括如下几点: (1)了解C语言的基本结构。 (2)分号、块和空白的使用。 (3)标识符的约束规则。 (4)C关键字。 (5 )直接量的认识。 (6)注释的使用。 【学习导航】 本章的在整个课程中的位置如图2-1所示。 图2-1 本章学习导航

2.1 C语言基本程序结构 任何一种程序设计语言都具有特定的语法规则和规定的表达方法。一个程序只有严格按 照语言规定的语法和表达方式编写,才能保证编写的程序在计算机中能正确地执行,同时也 便于阅读和理解。为了了解C语言的基本程序结构,请看【课堂案例2-1】。 【课堂案例2-1】在控制台输出“你好”。 【案例目标】会使用Xcode编辑器实现字符串输出 【案例知识要点】C语言的程序结构、基本输出语句 【案例程序代码】hello.c 1#i nclude 2 2mai n() 3{ 4printf(你好”); 5} 【案例代码说明】 第1行的作用是进行相关的预处理操作。include成为文件包含命令,<>里的内容称为 头文件。头文件一般的扩展名为.ho stdio就是指“ sta ndard in put & output"(标准输入输出),所以,源代码中如用到标准输入输出函数时,就要包含这个头文件。 第2行是一个空行。空行不会影响程序的功能。空行起着分隔程序段落的作用,适当使用空行将使程序的布局更加清晰,提高程序的可读性。空行不会浪费内存,所以不要舍不得 用空行。一般建议在头文件后插入一个空行。 第3行声明了一个main函数,main是函数名。关于函数的详细介绍在第七章。main 函数具有特殊意义,它是程序执行的入口,也就是说,程序都是从main函数开始执行的。 第4—6行定义了main函数的内容,称为函数体。以“{”开始,以“ }”结束。 第5行调用了在stdio.h中的格式化输出函数printf,其作用是向终端(显示器、控制台)输出字符。在这一行结束时,需要加上(;)。在C语言中,一行代码由分号(;)终止。 图2-2是程序hello.c的执行结果: 图2-2 Simple.c程序输出结果 知识链接一编程规范 在hello.c程序中,要注意以下的编程规范: 【规则1-1】用#“clude 格式来引用标准库的头文件。 【规则1-2】包含头文件时一般不使用绝对路径名。 【规则1-3】在头文件和main函数之间使用空行隔开。 【规则1-4】函数体里面的内容(即{ }里面的内容),需要水平缩进四个空格。如第5行所示。hello.c

C语言的标识符和关键字

1、标识符 标识符使用来标识源程序中的某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。 C语言规定:一个标识符由字母、数字和下划线组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,所以在编写C语言程序时,最好不要使用以下划线开头的标识符。但是下划线可以用在第一个字符以后的任何位置。 标识符的长度不要超过32个字符,尽管C语言规定标识符的长度最大可达255个字符,但是在实际编译时,只有前面32个字符能够被正确识别。对于一般的应用程序来说,32个字符的标示符长度足够用了。 C语言对大小写字符敏感,所以在编写程序时要注意大小写字符的区分。例如:对于sec和SEC这两个标识符来说,C语言会认为这是两个完全不同的标识符。 C语言程序中的标识符命名应做到简洁明了、含义清晰。这样便于程序的阅读和维护。例如在比较最大值时,最好使用max来定义该标识符。 2、关键字 在c语言编程中,为了定义变量、表达语句功能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字。 关键字已被编译系统本身使用,所以用户编写程序时不能够使用这些关键字来作为标识符。C语言中关键字主要有以下三类: ?类型说明符:用来定义变量、函数或其他数据结构的类型,如unsigned char,int,long等 ?语句定义符:用来标示一个语句的功能,如if,for等 ?预处理命令字:用来表示预处理命令的关键字,如include,define等

标准C语言有32个关键字,c51编译器又扩充了一些关键字,这些关键字在编程时需要注意,绝对不能使用这些关键字来定义标识符。

C语言数据类型习题及答案

第二章数据类型,运算符与表达式 一.选择题 1.不合法的字符常量是(B)。 A)‘\t’B) “A” C)‘a’D)’\x32’ 2、合法的字符常量是(D)。 A)‘\084’B) ‘\84’ C)‘ab’D)’\x43’ 2.(B)是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 3.在以下各组标识符中,合法的标识符是(4)。 (1)A)B01 B)table_1 C)0_t D)k% (2)A)Fast_ B)void C)pbl D) (3)A)xy_ B)longdouble C)*p D)CHAR (4) A) sj B)Int C)_xy D)w_y23 4.属于合法的C语言长整型常量的是(B)。 A)5876273 B)0L C)2E10 D)(long)5876273 5.下面选项中,不是合法整型常量的是(B)。 A)160 B)-0xcdg C)-01 D)-0x48a 6.判断int x = 0xaffbc;x的结果是(B)(turbo c 版本)。 A)赋值非法B)溢出C)为affb D)为ffbc 7.下面选项中,均是合法浮点数的是(B)。 A)+1e+1 B)-.60 C)123e D)-e3 A)5e-9.4 B)12e-4 C)1.2e-.4 D).8e-4 A)03e2 B)-8e5 C)+2e-1 D)5.e-0 8.在C语言中,要求参加运算的数必须是整数的运算符是(C)。A)/ B)* C)% D) = 9.在C语言中,字符型数据在内存中以(D)形式存放。 A)原码B)BCD码C)反码D)ASCII码 10.下列语句中,符合语法的赋值语句是(C)。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=(7+b,b++,a+7);D)a=7+b,c=a+7; 11.(B)是非法的C语言转义字符。 A)‘\b’B)‘\0xf’ C)‘\037’ D)‘\’’ 12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中(B),是正确的。A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 13.与代数式(x*y)/(u*v) 不等价的C语言表达式是(A)。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 14.在C语言中,数字029是一个(D)。 A)八进制数B)十六进制数C)十进制数D)非法数 15.C语言中(Turbo C环境)整数-8在内存中的存储形式为(A)。A)1111111111111000 B)1000 C)1000 D)1111111111110111 16.对于char cx=’ \039’;语句,正确的是(A)。 A)不合法B)cx的ASCII值是33 C)cx的值为四个字符D)cx的值为三个字符

C语言第二章习题带答案

1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.2.5e-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数 7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B.100000000000 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03f 16.下面4个选项中,均是合法浮点数的选项是( B )。 A.+1e+1,5e-9.4,03e2 B.-.60,12e-4,-8e5 C.123e,1.2e-.4,+2e-1 D.-e3,.8e-4,5.e-0

C语言第三章数据类型和运算符及表达式复习题

数据类型、运算符和表达式复习题一.选择题 1. 以下不合法的用户标识符是:() a) f2_G3 b) If c) 4d d) _8 2. 以下选项中合法的用户标识符是:() a) long b) _2Test c) 3Dmax d) A.dat 3. 以下可用作用户标识符的是:() a) 12_a b) signed c) t-o d) _if 4. 以下不是关键字的标识符是:() a) continue b) char c) If d) default 5. C语言提供的合法的关键字是:() a) swicth b) cher c) Case d) void 6. 以下选项中不合法的int整型常数是() a) 32768 b) -56 c) 03 d) 0xAF 7. 以下合法的长整型常量是() a) 2L b) 49627 c) d) 213& 8. 以下正确的实型常量是() a) 1.2E b) . c) 1.2e0.6 d) 8 9. 以下选项中合法的实型常数是() a) 5E2.0 b) E-3 c) .2E0 d) 1.3E 10. 以下合法的八进制数是() a) 0135 b) 068 c) 013.54 d) o7 11. 以下合法的十六进制数是() a) 0x b) 0x4de c) 0x1h d) ox77 12. 以下选项中非法的数值常量是() a) 019 b) 0L c) 0xff d) 1e1 13. 若变量已正确定义,以下合法的赋值表达式是() a) a=1/b=2 b) ++(a+b) c) a=a/(b=5) d) y=int(a)+b 14. 若变量已正确定义,以下非法的表达式是() a) a/=b+c b) a%(4.0) c) a=1/2*(x=y=20,x*3) d) a=b=c 15. 设x为int类型,其值为11,则表达式(x++*1/3)的值是: a) 3 b) 4 c) 11 d) 12 16.设a,b均为double型,且a=5.5;b=2.5;则表达式 (int)a+b/b的值是() a) 6. b) 6 c) 5. d) 6. 17.若a为int型,且其值为3,则执行完表达式: a+=a-=a*a后,a的值是() a) -3 b) 9 c) -12 d) 6 18.设k和x均为int型变量,且k=7;x=12;则能使 值为3的表达式是() a) x%=(k%=5) b) x%=(k-k%5) c) x%=k-k%5 d) (x%=k)-(k%=5)

《明解C语言》第2章 运算和数据类型练习题答案

【个人观点】 练习2-1 #include int main(void) { int no1,no2; printf("请输入两个整数:"); scanf("%d%d",&no1,&no2); printf("前者是后者的%.0f%%\n",((double)no1/ no2) * 100); return (0); } 【note】(1)no1/ no2是整数,因此要对其中一个浮点化,使得该结果为小数;(2)((double)no1/ no2) * 100的结果是:小数点后的位数为0 练习2-2 #include int main(void) { int vx,vy; puts("请输入两个整数。"); printf("整数vx:");scanf("%d",&vx); printf("整数vy:");scanf("%d",&vy); printf("它们的和是%d,积是%d\n",vx + vy,vx * vy); return (0); } 练习2-3 #include int main(void) { double no; puts("请输入一个实数:"); scanf("%lf",&no); 1

printf("您输入的实数是%f\n",no); return (0); } 练习2-4 #include int main(void) { int n1,n2,n3,n4; double d1,d2,d3,d4; n1 = 5 / 2; n2 = 5.0 / 2.0; n3 = 5.0 / 2; n4 = 5 / 2.0; d1 = 5 / 2; d2 = 5.0 / 2.0; d3 = 5.0 / 2; d4 = 5 / 2.0; printf("n1 = %d\n",n1); printf("n2 = %d\n",n2); printf("n3 = %d\n",n3); printf("n4 = %d\n",n4); printf("d1 = %f\n", d1); printf("d2 = %f\n",d2); printf("d3 = %f\n",d3); printf("d4 = %f\n",d4); return (0); } 练习2-5 #include int main(void) { int no1,no2; printf("请输入两个整数:"); 2

C语言的基本数据类型及其表示

3.2C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1常量与变量 1.常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.410-38~3.41038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows98",可用下面两个宏定义命令: #define PAI3.1415927 #define W"Windows98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

C语言的基本数据类型及其表示

3.2 C语言的基本数据类型及其表示 C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。 3.2.1 常量与变量 1. 常量 常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对 象之一。C语言提供的常量有: 以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.4 10-38~3.4 1038。 需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。 2.符号常量 在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。 C语言中用宏定义命令对符号常量进行定义,其定义形式如下: #define 标识符常量 其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows 98",可用下面两个宏定义命令: #define PAI 3.1415927 #define W "Windows 98" 宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows 98。因此,符号常量通常也被称为宏替换名。 习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。 例3-1:已知圆半径r,求圆周长c和圆面积s的值。

c语言第三、四章(习题册答案)

第三章数据类型、运算符和表达式 一、选择题: 1、以下选项中,不正确的C 语言浮点型常量是(C)。 A. 160. B. 0.12 C. 2e4.2 D. 0.0 2、以下选项中,(D)是不正确的C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" 3、在C 语言中,字符型数据在计算机内存中,以字符的(C)形式存储。 A. 原码 B. 反码 C. ASCII 码 D. BCD码 4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。 x=(i=4,j=16,k=32) A. 4 B. 16 C.32 D.52 5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 6、表达式!x||a==b 等效于(D)。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) 7、设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是(B)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 8、设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a 的值是(B)。 A. 3 B. 0 C. 9 D. -12 9、在以下一组运算符中,优先级最低的运算符是(D)。 A. * B. != C. + D. = 10、设整型变量i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。 A. 6 B. 12 C. 15 D. 表达式出错 11、若已定义x 和y为double 类型,则表达式x=1,y=x+3/2 的值是(C)。 A. 1 B. 2 C. 2.0 D. 2.5 12、设a=1,b=2,c=3,d=4,则表达式:a10 && a<15 D. !(a<=10) && !(a>=15) 14、设f是实型变量,下列表达式中不是逗号表达式的是(D)。 A. f= 3.2, 1.0 B. f>0, f<10 C. f=2.0, f>0 D. f=(3.2, 1.0) 15、表达式18/4*sqrt(4.0)/8值的数据类型是(C)。 A. int B. float C. double D. 不确定 16、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句 C2=’A’+’6’-‘3’;后c2中的值是(A)。 A. D B. 68 C. 不确定的值 D. C 17、以下用户标识符中,合法的是(B)。 A. int B. nit C. 123 D. a+b 18、C 语言中,要求运算对象只能为整数的运算符是(A)。

C语言数据类型与表达式习题及答案

第一章数据类型,运算符与表达式 一.选择题 1.不合法的常量是A。 A)‘/2’B) “”C)‘’D)“483” 2. B 是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 3.在以下各组标识符中,合法的标识符是(1)A,(2) C ,(3) D 。 (1)A)B01 B)table_1 C)0_t D)k% Int t*.1 W10 point (2)A)Fast_ B)void C)pbl D) Fast+Big abs fabs beep (3)A)xy_ B)longdouble C)*p D)CHAR 变量1 signed history Flaut 4. 不属于合法的C语言长整型常量的是 C 。 A)5876273 B)0L C)2E10 D)(long)5876273 7.下面选项中,均是合法浮点数的是 B 。 A)+1e+1 B)-0.60 C)123e D)-e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0 8.在C语言中,要求参加运算的数必须是整数的运算符是 C 。 A)/ B)* C)% D) = 9.在C语言中,字符型数据在内存中以 D 形式存放。 A)原码B)BCD码C)反码D)ASCII码10.下列语句中,符合语法的赋值语句是 C 。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=7+b,b++,a+7;D)a=7+b = c=a+7; 11. B 是非法的C语言转义字符。 A)‘\b’B)‘\0xf’C)‘\037’D)‘\’’12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, B 是正确的。 A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 13.与代数式x y u v ? ? 不等价的C语言表达式是A。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 14.在C语言中,数字029是一个 D 。 A)八进制数B)十六进制数C)十进制数D)非法数 16.对于char cx=?\039?;语句,正确的是A。 A)不合法B)cx的值是?\03? C)cx的值为四个字符D)cx的值为三个字符 17.若int k=7,x=12;则能使值为3的表达式是 D 。 A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 18.为了计算s=10!(即10的阶乘),则s变量应定义为 C 。 A)int B)unsigned C)long D)以上三种类型均可

C语言基本数据类型及运算题库

第二章基本数据类型及运算 一、选择题 1. 若以下选项中的变量已正确定义,则正确的赋值语句是。 A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3; 答案:C 2. 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是。 A) x=x*100+0.5/100.0 B) x=(x*100+0.5)/100.0 C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0 答案:C 3. 下列C语言中运算对象必须是整型的运算符是。 A) %= B) / C) = D) *= 答案:A 4. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。 A) 0 B) 0.5 C) 1 D) 2 答案:A 5. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是。 A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 答案:D 6. 下列变量定义中合法的是。 A)short_a=1-.le-1; B)double b=1+5e2.5; C)long do=0xfdaL; D)float 2_and=1-e-3; 答案:A 7. 以下4个选项中,不能被看作是一条语句的是。 A) {;} B) a=0,b=0,c=0; C) if (a>0); D) if (b==0)m=1;n=2; 答案:D 8. 设x=1,y=-1,下列表达式中解为8的是。 A)x&y B)~x│x C)x^x D)x<<=3 答案:D 9. 在C语言中不合法的整数是。 A)20 B)0x4001 C)08 D)0x12ed 答案: C 10. 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e0.2 C)-77.77 D)456e –2 答案:B) 11.若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7 B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B) 12.以下十六进制数中不合法的是 A)oxff B)0Xabc C)0x11 D)0x19

数据类型与标识符

《程序设计语言 C1》随机作业题 做作业时间:2013-4-20 8:00:00至2013-5-20 8:00:00 1、在C语言中,不正确的int类型的常数是 (3分) A A、B、C、D、 A、32768 B、0 C、037 D、0xAF 2、以下选项中不属于C语言的类型的是 (3分) D A、B、C、D、 A、signed short int B、unsigned long int C、unsigned int D、long short 3、在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是(3分) D A、B、C、D、 A、a=20000+20000; B、a=4000*10; C、a=30000+10000; D、a=4000L*10L; 4、以下程序的输出结果是 main( ) { int k=17; printf("%d,%o,%x \n",k,k,k);}

(3分) A、B、C、D、 D A、17,021,0x11 B、17,17,17 C、17,0x11,021 D、17,21,11 5、以下选项中合法的字符常量是(3分) A、B、C、D、 B A、"B" B、'\010' C、68 D、 D 6、假定x和y为double型,则表达式x=2,y=x+3/2的值是(3分) A、B、C、D、 D A、3.500000 B、3 C、2.000000 D、3.000000 7、下列变量名合法的是( ) (3分) A、B、C、D、 D A、#1 B、$567 C、a-b D、m_number 8、C语言提供的合法的数据类型关键字是: (3分) A、B、C、D、 B A、Double B、short C、integer D、Char 9、若有以下定义: char a; int b;

第2章 基本数据类型-习题(C语言)

第2章基本数据类型 一.选择题 1.不合法的字符常量是【】。 A) ‘\t’B) “B” C) ‘a’ D)’\x32’ 2.合法的字符常量是【】。 A) ‘\084’ B) ‘\84’ C) ‘ab’ D)’\x4A’ 3.C语言提供的合法的数据类型关键字是【】。 A) Float B) Signed C) integer D)char 4.属于合法的C语言长整型常量的是【】。 A)2736 B)0L C)2E10 D)(long)5876273 5.下面选项中,不是合法整型常量的是【】。 A)160 B)-0xcdg C)-01 D)-0x48a 6.以下所列的C语言常量中,错误的是【】。 A)0xFF B)1.2e0.5 C)2L D)’\72’ 7.下面四个选项中,均是不正确的8进制数或16进制数的选项是【】。 A)016 0x8f 018 B)0abc 017 0xa C)010 -0x11 0x16 D)0a12 7ff -123 8.下选项中不属于C语言的类型是【】。 A)signed short int B)unsigned long int B)unsigned int D)long short 9.判断int x = 0xaffb1。x的结果是【】。 A)赋值非法 B)溢出 C)为affb D)为ffbc 10.下面选项中,是合法浮点数的是【】。 A)+1e0.5 B)-.60 C)123e D)-e3 11.在C语言中,要求参加运算的数必须是整数的运算符是【】。 A)/ B)* C)% D) = 12.在C语言中,字符型数据在内存中存放形式是【】。 A)原码 B)BCD码 C)反码 D)ASCII码

C语言第二章习题带答案说课讲解

学习资料 仅供学习与参考练习2-1答案 选择题 1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.2.5e-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数 7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B.100000000000 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03f 16.下面4个选项中,均是合法浮点数的选项是( B )。 A.+1e+1,5e-9.4,03e2 B.-.60,12e-4,-8e5 C.123e,1.2e-.4,+2e-1 D.-e3,.8e-4,5.e-0

第6章 C语言的标识符、关键字和数据类型

第6章 C语言的标识符、关键字和数据类型 6.1 标识符和关键字 标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不要使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符最长可达255个字符,但只有前面32个字符在编译时有效,因此在编写源程序时标识符的长度不要超过32个字符,这对于一般应用程序来说已经足够了。C语言是大小写敏感的一种高级语言,如果我们要定义一个时间“秒”标识符,可以写做“sec”,如果程序中有“SEC”,那么这两个是完全不同定义的标识符。 关键字则是编程语言保留的特殊标识符,有时又称为保留字,它们具有固定名称和含义,在C语言的程序编写中不允许标识符与关键字相同。与其他计算机语言相比,C语言的关键字较少,ANSI C标准一共规定了32个关键字,见表6-1。 关键字用途说明 auto 存储种类说明用以说明局部变量,缺省值为此 break 程序语句退出最内层循环体 case 程序语句switch语句中的选择项 char 数据类型说明单字节整型数或字符型数据 const 存储类型说明在程序执行过程中不可更改的常量值continue 程序语句转向下一次循环 default 程序语句switch语句中的失败选择项 do 程序语句构成do…while循环结构 double 数据类型说明双精度浮点数 else 程序语句构成if…else选择结构 enum 数据类型说明枚举 extern 存储种类说明在其他程序模块中说明了的全局变量float 数据类型说明单精度浮点数 for 程序语句构成for循环结构 goto 程序语句构成goto转移结构 if 程序语句构成if…else选择结构 int 数据类型说明基本整型数 long 数据类型说明长整型数

标识符

标识符 标识符:用于名命程序中的实体(如:变量名,常量名,函数,数组,类型等)有效字符统称序列。 标识符只能由大小写的英文字母,数字和下划线组成,并且不能以数字开头。 标识符的长度是任意的,不同编译器要求不同。 标识符是区分大小写的(ABC与abc,Abc,aBC等不同)。 尽量见名知意(如:sum\student\age等比abc更直观)。 数据类型 不同类型的数据在内存中的储存方式不同,所占的字节数不同,所对应的运算方式也不同。 实验室C++ 1MB(兆)=1024Kbyte 1Kbyte=1024Byte 1Byte=8bit Bit计算机中最小单位 Stdio.h 输入输出库 Void 不返回任何值 <<左移符 >>右移符(左移为乘,右移为除) 1001=9

&&判断前后条件是否成立 ()&&()的前后俩个条件都成立才会成立 //前后俩个值其中一个值成立那么整个式子成立 !(1)不成立(1)成立 !(3)=0成立3≠0成立 常量和变量 (1)常量:在程序运行过程中,其值不能被改变的量(整型,浮点型,字符型,及字符串常量等)。 整型常数的后缀表示:常整型的后缀为L或(I):如89L(89I),-234L(-234I),0L(0I);无符号的后缀为U或(u):如56U(56u);无符号长整型后缀为ul或UL或UI或ui。(注:无S或s 作为后缀) (2)整型常量:直接用整数(没小数部分)形式给出的量。如34,25,4678等默认为int型。 (3)实型常数:由整数和小数部分组成,只有十进制表示有两种表示形式:小数形式和科学计数法。 十进制小数形式:整数和小数部分加小数点构成如果一部分为0可以省略它,但不能同时省略两部分。如3、24,-34、89,29、,、77,0、0等。

数据结构习题集(C语言版严蔚敏)第一二三章

第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 1.5 试画出与下列程序段等价的框图。 (1) product=1; i=1; while(i<=n){ product *= i; i++; } (2) i=0; do { i++; } while((i!=n) && (a[i]!=x)); (3) switch { case x

数据类型与标识符

班级: 104031009课程: 程序设计语言 C1 章节: 数据类型与标识符本次作 业考试时间:2011-3-7 8:00:00 本次作业截止时间: 单选题: 1、执行下列程序时输入:123 < 空格 > 456 < 空格 > 789 < 回车 >,输出结果是 main() { char s[100]; int c, i; scanf("%c",&c); scanf("%d",&i); scanf("%s",s); printf("%c,%d,%s \n",c,i,s); } A.123,456,789 B.1,456,789 C.1,23,456,789 D.1,23,456 学生答案: B 参考答案: D 2、以下选项中属于C语言的数据类型是 A.复数型 B.逻辑型 C.双精度型 D.集合型 学生答案: B 参考答案: C 3、在C语言中,不正确的int类型的常数是 A.32768 B.0 C.037 D.0xAF 学生答案: D 参考答案: A 4、下列描述中不正确的是 A.字符型数组中可以存放字符串 B.可以对字符型数组进行整体输入、输出 C.可以对整型数组进行整体输入、输出 D.不能在赋值语句中通过赋值运算符"="对字符型数组进行

整体赋值 学生答案: B 参考答案: C 5、以下程序的输出结果是 main( ) { int k=17; printf("%d,%o,%x \n",k,k,k); } A.17,021,0x11 B.17,17,17 C.17,0x11,021 D.17,21,11 学生答案: D 参考答案: D 6、若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是 A.a的值是字符C B.a的值是浮点型 C.不允许字符型和浮点型相加 D.a的值是字符‘A’的ASCII值加上1 学生答案: A 参考答案: D 7、以下程序的输出结果是 main( ) { int k=17; printf("%d,%o,%x \n",k,k,k);} A.17,021,0x11 B.17,17,17 C.17,0x11,021 D.17,21,11 学生答案: D 参考答案: D 8、在C语言中,合法的长整型常数是 A.OL B.4962710 C.324562& D.216D

相关文档
最新文档