第二章基本数据类型和运算
- 格式:doc
- 大小:53.50 KB
- 文档页数:5
C/C++程序设计第2 章数据类型及表达式计算机学院C/C++程序设计课程组C/C++程序设计第2章主要内容本章主要介绍:基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。
C/C++程序设计2.1 C 语言的数据类型使用高级语言编写程序,主要工作有两项:一是描述数据,二是描述数据加工的方法。
数据类型图 2.1C 语言的数据类型基本类型整型实型字符型带符号长整型(简称长整型)带符号整型无符号整型无符号整型无符号短整型无符号长整型单精度型双精度型空类型构造类型指针类型枚举类型数组类型结构体类型共用体类型C/C++程序设计2.2 常量常量是程序运行过程中其值不发生变化的数据。
2.2.1 整型常量表2.1 整型数据的表示方式2.2.2 实型常量3.14、.9999、-3.14159、834.、–0.666 、6.89E-52.2.3 字符常量’x’,’a’,’A’,’b’,’$’,’#’ ,printf("\tab\rcd\n\’ef\\g");2.2.4 符号常量#define 符号常量字符串#define PI 3.14159C/C++程序设计【例2.1】求一个圆柱体体积,用符号常量代替π。
#include <stdio.h>#define PI 3.14159 /*定义PI为符号常量*/void main(){float r,h,v;scanf("%f,%f",&r,&h);v=PI*r*r*h; /* PI相当于3.14159,参与运算*/printf("Volume=%f",v);}运行时输入:3,2↙运行结果为: Volume=56.548618C/C++程序设计2.2.5 字符串常量"\tab\rcd\n\’ef\\g“"I am a student" 、"x"、""注意:’\0’和’0’不同,’\0’是编码为0的字符,而’0’则是数字0,其编码为48。
第二章 数据类型、运算符、表达式一、数据类型C 语言中的数据类型比别的语言丰富。
基本类型的数据又可分为常量和变量,它们可与数据类型结合起来分类,即为整型常量、整型变量、实型(浮点型)常量、实型(浮点型)变量、字符常量、字符变量、枚举常量、枚举变量。
1、常量与符号常量常量:在程序执行过程中,其值不发生改变的量称为常量。
常量区分为不同的类型,如68、0、-12为整型常量,3.14,9.8为实型常量,‘a ’,‘b ’,‘c ’则为字符常量。
常量即为常数,一般从其字面即可判别。
符号常量:有时为了使程序更加清晰和便于修改,用一个标识符来代表常量,即给某个常量取个有意义的名字,这种常量称为符号常量。
如:#define PI 3.142、变量变量:程序执行过程中其值可以改变的量。
定义方法定义形式:数据类型 变量名1,变量名2,……变量名n ;整型(int )数据类型 基本类型 整型 单精度型(float )字符型(char )长整型(long )短整型(short )实型 双精度型(double )枚举类型(enum )共用体类型(union )构造类型结构体类型(struct )数组类型空类型(void )指针类型(*)如:char ch1, ch2; /* ch1,ch2为变量*/float x, y; /* x ,y 为实型变量*/int a, b, c; /* a,b,c 为整型变量*/在书写变量说明时,应注意以下几点:(1) 允许在一个类型说明符后,说明多个相同类型的变量。
各变量名之间用逗号间隔。
类型说明符与变量名之间至少用一个空格间隔。
(2) 最后一个变量名之后必须以“;”号结尾。
(3) 变量说明必须放在变量使用之前。
一般放在函数体的开头部分。
另外,也可在说明变量为整型的同时,给出变量的初值。
其格式为:类型说明符 变量名标识符1=初值1,变量名标识符2=初值2,...;3、数据在内存中的表示整型数据:以二进制的形式表示(1) int 类型正数: 如 123 (+123)用 16 位二进制(二个字节)表示原码 反码(原码同) 补码(原码同)最大正整数 215-1=214+213+212+211+210+29+2827+26+25+24+23+22+21+20=32767负数:如 –123原码补码(补码加 1)1取反加1 最大负整数-215=32768 因为 -215 < -(215-1) 所以用 -215 而不用 -(215-1)(2) unsigned (int) 类型称为无符号整数,它不是指不带“+ 或 -”号的整数,而是指内存表示这类数时没有符号位,16最大数215+214+213+2122+21+20=65535最小数 0 (3) long (int) 类型用 32 位二进制(四个字节)表示,其他同 int 型(4) short 类型有的计算机(小型、中型、大型机)int 即是 long ,而short 用16 位二进制(二个字节)表示。
第二章基本数据类型和运算一、单项选择题1.下列数据中属于“字符串常量”的是(A )。
A.”a”B.{ABC}C.‟abc\0‟D.‟a‟2.下列数据中属于“字符串常量”的是(B )。
A.ABCB.“ABC”C.‟abc‟D.‟a‟3.在PC机中,‟\n‟在内存占用的字节数是(A )。
A.1B.2C.3D.44.在PC机中,”a\xff”在内存占用的字节数是(C )。
A.5B.6C.3D.45.字符串“ABC”在内存占用的字节数是(B )。
A.3B.4C.6D.86.字符串”\‟ABCD\‟”在内存占用的字节数是(C )。
A.4B.6C.7D.87.在C语言中,合法的长整型常数是(A )。
A.0LB.4962710C.0.054838743D.2.1869e108.在C语言中,合法的短整型常数是(D )。
A.0LB.0821C.40000D.0x2a9.下列数据中不属于“字符常量”的是(C )。
A.…\xff‟B.‘\160’C.‟070‟D.07010.char型常量的内存中存放的是(A )。
A.ASCII代码值B.BCD代码值C.内码值D.十进制代码值11.若int类型数据字长为4,其最大值为(B )。
A.231B.231-1C.232-1D.23212.常数的书写格式决定了常数的类型和值,03322是(B )。
A.16进制int类型常数B.8进制int类型常数C.10进制int类型常数D.10进制long int类型常数13.“e2”是(D )。
A.实型常数100B.值为100的整型常数C.非法标识符D.合法标识符14.要为字符型变量a赋初值,下列语句中哪一个是正确的(A )。
A.char a=‟3‟;B.char a=”3”;C.char a=%;D.char a=*;15.要为float类型变量x、y、z赋同一初值3.14,下列说明语句哪一个是正确的( C )。
A.float x,y,z=3.14;B.float x,y,z=3*3.14;C.float x=3.14,y=3.14,z=3.14;D.float x=y=z=3.14;16.语句“float pi=3.1415926535;”将(D )。
A.导致编译错误B.说明pi为初值3.1415926535的单精度实型常数C.导致运行时的溢出错误D.说明pi为初值3.141593的单精度实型常数17.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B )。
A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算18.关系运算符中优先级最低的运算符是(C )。
A.“>=”和“<=”B.“>”和“<”C.“==”和“!=”D.“<=”和“<”19.逻辑运算符中,运算优先级按从高到低依次为(D )。
A.&&,!,‖B.‖,&&,!C.&&,‖,!D.!,&&,‖20.对C程序在作逻辑运算时判断操作数真、假的表述,下列哪一个是正确的(A )。
A.0为假非0为真B.只有1为真C.-1为假1为真D.0为真非0为假21.表达式x==0&&y!=0‖x!=0&&y==0等效于(A )。
A.x*y==0&&x+y!=0B.x*y==0&&(x+y==0)C.x==0‖y==0D.x*y=0‖x+y=022.表达式!x‖a==b等效于(D )。
A.!((x‖a)==b)B.!(x‖y)==bC.!(x‖(a==b))D.(!x)‖(a==b)23.设整型变量m,n,a,b,c,d均为0,执行(m=a==b)‖(n=c==d)后,m,n的值是(C )。
A.0,0B.0,1C.1,0D.1,124.设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是(B )。
A.0,0B.0,1C.1,0D.1,125.设a为2,执行下列语句后,b的值不为0.5的是(B )。
A.b=1.0/aB.b=(float)(1/a)C.b=1/(float)aD.b=1/(a*1.0)26.设a为5,执行下列语句后,b的值不为2的是(C )。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:227.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为(C )。
A.3,3,2B.3,2,2C. 3,2,3D.2,3,228.int b=0,x=1;执行语句if(x++) b=x+1;后,x,b的值依次为(A )。
A.2,3B.2,0C.3,0D.3,229.设有语句int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是(D )。
A.3B.0C.9D.-1230.设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a的值是(B )。
A.3B.0C.9D.-1231.int a=4,b=3,c=-2,d=2;逻辑表达式a>0&&b&&c<0&&d>0的值是(A )。
A.1B.0C.-1D.出错32.在以下一组运算符中,优先级最高的运算符是(C )。
A.<=B.=C.%D.&&33.设整型变量i值为2,表达式(++i)+(++i)+(++i)的结果是(C )。
A.6B.12C.15D.表达式出错34.设整型变量i,j值均为3,执行了j=i++,j++,++i后,i,j的值是(B )。
A.3,3B.5,4C.4,5D.6,635.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(C )。
A.1B.2C.2.0D.2.536.sizeof(double)的结果值是(A )。
A.8B.4C.2D.出错37.表达式1?(0?3:2):(10?1:0)的值是(B )。
A.3B.2C.1D.038.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果为(D )。
A.4B.3C.2D.139.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是(A )。
A.10<a<15B.a==11‖a==12‖a==13‖a==14C.a>10&&a<15D.!(a<=10)&&!(a>=15)40.int a=0;if(a=1) a+=10;结果的值是(B )。
A.0B.11C.10D.出错41.下列表达式中符合C语言语法的赋值表达式是(C )。
A.a=7+b+c=a+7B.a=7+b++=a+7C.a=(7+b,b++,a+7)D.a=7+b,c=a+742.设f是实型变量,下列表达式中不是逗号表达式的是(D )。
A.f=3.2,1.0B.f>0,f<10C.f=2.0,f>0D.f=(3.2,1.0)---赋值表达式43.下列表达式中,不正确的表达式是(B )。
A.a=1,b=1B.y=int(x)C.a=b=5D.i++44.int n;float f=13.8;执行n=((int)f)%3后,n的值是(A )。
A.1B.4C.4.333333D.4.645.用十进制数表示表达式“12|012”的运算结果是(C )。
A.1B.0C.14D.1246.设有整型变量a=35,表达式(a&15)&&(a|15)的值是(B )。
A.0B.1C.15D.3547.设字符型变量a=3,b=6,计算表达式c=(a^b)<<2后c的二进制值是(D )。
A.00011100B.00000111C.00000001D.0001010048.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的是(D )。
A.‟a‟&&‟b‟B.a<=bC.a‖b+c&&b-cD.!(a<b)&c49.设x,t均为int型变量,则执行以下语句后,t的值为(D )x=10;t=x&&x>10;。
A.不定值B.10C.1D.050.设x,y,z,t均为int型变量,则执行以下语句后,t的值为(C )。
x=y=z=1;t=++x‖++y&&++z;A.不定值B.2C.1D.051.设a是char型变量,其值字符为‘1’,则把其值变成整数1的表达式是(C )。
A.(int)aB.int(a)C.a=a-48D.a/(int)a52.设a是int型变量,其值为3,则把其值变成字符‘3’的表达式是(D )。
A.(char)aB.a=3C.a=a-48D.a=a+4853.设ch是char型变量,其值为‘A’,则下面表达式的值是(B )。
ch=(ch>=‟A‟&&ch<=‟Z‟)?(ch+32):chA.AB.aC.ZD.z54.设有整型变量i,j,k,i值为3,j值为6。
计算表达式k=i^j<<3;后,k的值是(B )。
A.56B.51C.40D.2755.设有无符号短整型变量i,j,k,i值为013,j值为0x13。
计算表达式k=~i|j>>3;后,k的值是(D )。
A.06B.0177776C.066D.017776656.设有无符号整型变量a值为331,计算表达式a=(a>>4)&~(~0<<4)后,a的值是(A )。
A.4B.15C.015D.01757.下列格式符中,哪一个可以用于以8进制形式输出整数(C )。
A.%dB.%8dC.%oD.%ld58.下列格式符中,哪一个可以用于以16进制形式输出整数(B )。
A.%16dB.%8xC.%d16D.%d59.a是int类型变量,c是字符变量。
下列输入语句中哪一个是错误的(B )。
A.scanf(”%d,%c”,&a,&c);B.scanf(”%d%c”,a,c);C.scanf(”%d%c”,&a,&c);D.scanf(”d=%d,c=%c”,&a,&c);60.字符变量ch=‟A‟,int类型变量k=25,语句printf(”%3d,%d3\n”,ch,k);输出(A )。
A.65,253B.65 253C.65,25D.2561.设a=1234,b=12,c=34执行printf(“|%3d%3d|\n”,a,b,c);的输出是(A )。