云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 浙江大学C语言总复习题—基本数据类型和运算

浙江大学C语言总复习题—基本数据类型和运算

  • 62 次阅读
  • 3 次下载
  • 2026/4/26 14:00:07

第2章 基本数据类型和运算

学习和解题要点 1. 数据类型

C 语言中的数据类型比别的语言丰富。要学好这部分内容,首先要掌握C 语言的数据在内存中的表示。

整型数据:以二进制的形式表示 (1) int 类型

正数: 如 123 (+123)用 16 位二进制(二个字节)表示 原码 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 符号位0表示正 反码(原码同) 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1

0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 补码(原码同) 最大正整数 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

215-1=214+213+212+211+210+29+2827+26+25+24+23+22+21+20=32767 负数:如 –123

1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 原码

符号位1表示负 反码(符号位不动,其它取反) 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 补码(补码加 1) 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1

已知补码求原负数 符号位不动,其它取反加 1 取反 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 加1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 最大负整数

-215=32768 因为 -215 < -(215-1) 所以用 -215 而不用 -(215-1) (2) unsigned (int) 类型

称为无符号整数,它不是指不带“+ 或 -”号的整数,而是指内存表示这类数时没有符号位,16 位二进制都用来表示数,因此 最大数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

215+214+213+212+211+210+29+2827+26+25+24+23+22+21+20=65535 最小数 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (3) long (int) 类型 用 32 位二进制(四个字节)表示,其他同 int 型 (4) short 类型

有的计算机(小型、中型、大型机)int 即是 long ,而short用16 位二进制(二个字节)表示。因此C语言中,short一定是短整型,long一定是长整型,而int因不同的系统而不同。PC 586 机int即short,所以一般不用short 。 (5) 在C语言中,整型常量有三种形式的写法: 十进制整数(0 - 9)表示。通常整数的写法。

八进制整数(0 - 7)表示。在整数的前面加数字0。 十六进制整数(0 - f)表示。在整数的前面加0x。 长整型常量表示方法:在整数的后面加L或 l。

字符型数据:以二进制的形式表示

char 型 用 8位二进制(一个字节)表示

如 ?a? ,在程序中要用单引号表示,输出时无单引号,内存中表示为

6+25+20=97 即ASCII 码 97 20 1 1 0 0 0 0 1 实型数据:以二进制的形式表示 (1) float 类型

如 123.45 (+123.45)用 32 位二进制(四个字节)表示为 0.12345×103 32位 n位 32-n位 0 .12345 的二进制表示 0 3的二进制表示 数符 小数部分 指数符 指数 + 0.12345 + 103 不同的系统,n的位数有不同,n长,精度高,但可表示的指数小,能表示的数的范围小。反之,则能表示的数的范围大,但精度低。float 类型又称为“浮点” 类型,把实数的小数点都看成在第一位,而用指数位“浮动”小数点。 (2) double 类型

与float同只不过用 64 位二进制(八个字节)表示。因此精度高,称双精度。 2. 变量的概念

C语言中的变量可以理解成计算机内存的一个空间,它必须有一个名字(标识符),可放什么样的数据类型(如定义时前面加int 、float 、char 等),它是开辟在内存的一般数据区(又称静态数据区)还是开辟在内存的堆栈区(又称动态数据区),这可由程序中用static或auto(可缺省)来规定。同时,一个变量有它的有效的使用范围,称之为作用域。最后,每个变量都有地址,这在指针类型时要用到。变量可以一边定义一边赋初值,在程序运行时可以使它发生变化,因此称之为变量。 3. 运算符的注意事项

(1) 双目运算符 % 的两边一定是要整数,运算结果是整除后的余数,也是整数,注意 2%5 得2而不是 0。

(2) 双目运算符 / 的两边如果是整数,则结果也是整数,5/2 结果为 2而不是 2.5 ,即使是 float x; x=1/2; x 中也只有 0.0 , 要人为的写成 x=1/2.0 或 x=1.0/2 ,x中才是0.5 。

(3) 单目运算符 ++ -- 放在运算对象的前面时,称为“先加(减) 1,后使用”,这一般不会搞错。当放在运算对象的后面时,称为“先使用,后加(减) 1”,这时要注意什么时候“使用”。

如 i=3; (i++)+(i++)+(i++) 结果是9而不是12,这里,三个i相加是“使用”,使用后才三次加1,i成为6,“使用”是以整个表达式为准。

而 i=3; (++i)+(++i)+(++i) 结果是18而不是15,这里,三个i依次加1 成为6,然后再“使用”。也是以整个表达式为准。

又如 i=1; if(i--) printf(“%d”,i); 输出是0而不是1。这是因为if()中i-- 是整个表达式,先用i为1,用于“判断”成立,这算“使用”了,然后i减1成为0,输出时i已为0。同理 char c=?A?; switch(c++) { case ?A?: printf(“%c”,c);break;………},

输出为B。

(4). 算术自反赋值运算符中,注意 = 赋值号右边是一个整体,如 c%=a-3 是c=c%(a-3)而不是 c=c%a-3。

(5). 关系运算符中,注意等于比较运算符 “==” 与赋值运算符 “= ”容易疏忽,二者是绝然不同的,不然会引起很大的错误。如:i=0; if(i==1) 判断得结果应该是不成立,若写成:if(i=1) 则变成给i赋予1,赋值表达式的结果也是1,判断结果是成立的。 (6). 应该熟记运算符及其优先级汇总表,熟记运算符之间的运算次序及结合方向。 4. 表达式注意的问题

(1). 在算术表达式中应注意各类数值型数据间的混合运算问题,如下:

double float float 型一定先转换成double型参加运算。

long 运算对象不同时转换方向。 unsigned

int char, short char, short型一定先转换成int型参加运算。

(2). C语言无“真假值”,判断成立则结果为1,不成立则结果为0。而当表达式的值为非0则认为“真”,当表达式的值为0则认为“假”。

(3). 关系表达式中,数学上的 0

(4). 在 “&&” 连接的逻辑表达式中,当左边表达式的值为0,则C语言不再计算右边表达式,因为无论右边表达式的值为什么,整个逻辑表达式的值都为0。同样,在 “||” 连接的逻辑表达式中,当左边表达式的值为非0,则C语言不再计算右边表达式,因为无论右边表达式的值为什么,整个逻辑表达式的值都为1 。

如:int a=b=m=n=1; (m=a!=b)&&(n=a!=b) a!=b不成立为0,m得0,n仍为1 int a=b=m=n=0; (m=a==b)||(n=a==b) a==b成立为1,m得1,n仍为0

(5). C语言中,赋值号 “=” ,逗号“,”都是运算符。a=10是赋值表达式,a=10;是赋值语句,sum=0,i=0是逗号表达式,它是由二个赋值表达式用逗号运算符连起来的逗号表达式。 练习题

一、 单项选择题

1.下列数据中属于 字符串常量 的是(A)。 A.”a” B. {ABC} C. ?abc\\0? D. ?a? 2.下列数据中属于“字符串常量”的是(B)。 A.ABC B. “ABC” C. ?abc? D. ?a? 3. 在PC机中,?\\n?在内存占用的字节数是(1)。 A. 1 B. 2 C. 3 D. 4

4. 在PC机中,”a\\xff” 在内存占用的字节数是(c)。// \\0XX \\xhh \\xh 转译符 A. 5 B. 6 C. 3 D. 4 5. 字符串”ABC”在内存占用的字节数是(b)。 A. 3 B. 4 C. 6 D. 8 6. 字符串”\\”ABCD\\””在内存占用的字节数是( )。 A. 4 B. 6 C. 7 D. 8

7. 在C语言中,合法的长整型常数是(A)。 A. 0L B. 4962710 C. 0.054838743 D. 2.1869e10 8.在C语言中,合法的短整型常数是(D)。 A. OL B. 0821 C. 40000 D. 0x2a 9.下列数据中不属于“字符常量”的是(c)。 A. ?\\a? B. ?\\160? C. ?070? D. 070 10.char型常量在内存中存放的是(A)。 A. ASCII代码值 B. BCD代码值 C. 内码值 D. 十进制代码值 11.设整型变量m,n,a,b,c,d均为0,执行( m= a==b )||(n=c==d)后,m,n的值是(C)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1

12.设整型变量m,n,a,b,c,d均为1,执行“(m= a>b )&&(n=a>b)”后,m,n的值是(B)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 13.设int a为2,执行下列语句后,float b的值不为0.5的是(B)。 A. b=1.0/a B. b=(float)(1/a) C. b=1/(float)a D. b=1/(a*1.0) 14.设a为5,执行下列语句后,b的值不为2的是(C)。 A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3 ? 2:8 15. 执行语句“x=(a=3,b = a--)”后,x,a,b的值依次为(C)。 A. 3,3,2 B. 3,2,2 C. 3,2,3 D. 2,3,2 16. int b=0,x=1; 执行语句“if(x++) b=x+1;”后,x,b的值依次为(A)。 A. 2,3 B. 2,0 C. 3,0 D. 3,2 17.设有语句int a=3;,则执行了语句a+=a-=9;后,变量a的值是(D)。 A. 3 B. 0 C. 9 D. -12 18.设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a的值是(B)。 A. 3 B. 0 C. 9 D. -12

19. int a=4,b=3,c=-2,d=2; 逻辑表达式a>0 && b && c<0 && d>0的值是(A)。 A. 1 B. 0 C. -1 D. 出错 20.在以下一组运算符中,优先级最高的运算符是(C)。 A. <= B. = C. % D. &&

21.设整型变量i的值为3,则计算表达式i-- -i后表达式的值为(A)。//A=*P++ +*P A. 0 B. 1 C. 2 D. 表达式出错 22.设整型变量i,j=3; 则计算表达式i=j++ +j后i,j的值为(D)。 A. 4,4 B. 6,6 C. 4,6 D. 6,4 23.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是(A)。 A. 6 B. 9 C. 8 D. 表达式出错 24.设整型变量i值为2,表达式(++i)+(++i)+(++i)的结果是(C)。// VS A. 6 B. 12 C. 15 D. 表达式出错 25.设整型变量i,j值均为3,执行了“j=i++,j++,++i”后,i,j的值是(B)。 // 逗号运算优先级最低 A. 3,3 B. 5,4 C. 4,5 D. 6,6 26.若已定义x和y为double类型,则表达式;x=1,y=x+3/2的值是(C)。 A. 1 B. 2 C. 2.0 D. 2.5 27.sizeof(double)的结果值是(A)。//(编译环境)INT 4 SHORT 2 CHAR 1 A.8 B. 4 C. 2 D. 出错 28. 表达式“1?(0?3:2):(10?1:0)” 的值是(B)。

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第2章 基本数据类型和运算 学习和解题要点 1. 数据类型 C 语言中的数据类型比别的语言丰富。要学好这部分内容,首先要掌握C 语言的数据在内存中的表示。 整型数据:以二进制的形式表示 (1) int 类型 正数: 如 123 (+123)用 16 位二进制(二个字节)表示 原码 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 符号位0表示正 反码(原码同) 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 补码(原码同) 最大正整数 0 1 1 1 1 1 1 1 1 1 1

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com