第二章 数据类型、运算符与表达式
一.选择题
1、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为(
)。
A、4 B、
【答案】C
2、若有变量说明:int
a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是( )。
A、a=9+b+c=a+9
B、a=9+b;c=a+9;
C、a=(9+b,b++)
D、a=9+b++=a+7
【答案】C
3、若有以下类型说明语句:char a; int b;float c; double d; 则表达式a*b-2*d+c的结果类型为( )。
A、float B、char C、int
D、double
【答案】D
4、下面四个选项中,均是合法浮点数的选项是( )。
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
【答案】B
5、下面四个选项中,均是合法转义字符的选项是( )。
A、'\'' '\\' '\n'
B、'\' '\017' '\"'
C、'\018' '\f' 'xab'
D、'\\0' '\101' 'xlf'
【答案】A
6、下面正确的字符常量是( )。
A、'\X17' B、'\80'
C、'\\'
D、"\n"
【答案】C
7、下面四个选项中,均是正确的数值常量或字符常量的选项是( )。
A、0.0
C、'3' 011
0xFF00
【答案】D
8、已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为( )。
A、D
B、68 C、一个不确定的值 D、C
【答案】A
9、若有定义:int x=7;float
a=2.5,b=4.7;则表达式a+x%3*(int)(a+b)%2/4的值是( )。
A、2.500000
B、2.7500000
C、3.500000
D、0.000000
【答案】A
10、sizeof(float)是( )。
A、双精度型表达式
B、一个整型表达式
C、一个函数调用 D、一个不合法的表达式
【答案】B
11、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( )。
A、0~255
B、0~65535
C、-32768~+32767
D、-256~+255
【答案】B
12、若有以下定义:int m=7,n=12;则能得到值为3的表达式是(
)。
A、n%=(m%=5)
B、n%=(m-m%5)
C、n%=m-m%5
D、(n%=m)-(m%=5)
【答案】D
13、若有说明:int a=1,b=2,c=3,d=4;则表达式a<b?a:c<d?c:d的值是( )。
A、4
B、
【答案】D
14、putchar函数可以向终端输出一个( )。
A、整型变量值
B、实型变量值
C、字符串
D、字符或字符型变量值
【答案】D
15、若运行以下程序时,从键盘输入25,13,10<回车>,则输出结果为( )。
main( )
{
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
printf("a1+a2+a3=%d\n",a1+a2+a3);
}
A、a1+a2+a3=48
B、a1+a2+a3=25
B、a1+a2+a3=10
D、不确定值
【答案】D
16.若有定义int a=2,b=9,k;k=a+b++/a++;则k的值是( )
A、6.5
B、
【答案】C
17.标有/* */语句的输出结果为( )
int x=20;
printf(“%d,%o,%x”,x,x,x);/*
*/
A、20,20,20
B、20,24,
【答案】B
18.
若x为float型变量,则以列程序段结果是( )。
x=1234.6789;
printf(“%
A、输出格式描述符的域宽度不够,不能输出 B、输出为1234.7
C、输出为1234.6
D、输出为-1234.6
【答案】B
19.
下列语句中,符合语法的语句式( )。
A、a+b=3 B、a=
【答案】D
20.
C语言中,逻辑“真”等价于( )。
A、大于零的数 B、大于零的整数
C、非零的数 D、非零的整数
【答案】C
21. 已知字母a的ASC||的十进制代码为97,则执行下列语句后输出为( )。
Char a=‘a’;
a--;
printf(“%d,%c\n”,a+‘
A、a,c
B、a—运算不合法,故有语法错误
C、98,c
D、)格式描述和输出项不匹配,输出无定值
【答案】C
22.
对于条件表达式(M)?(a++):(a--),其中的表达式M等价于( )。
A、M= =0 B、M= =
【答案】C
23. 在x值处于-2到2,4到8时值为“真”,否则为“假”的表达式是( )。
A、(2>x>-2)||(4>x>8)
B、((x<=-2)||(x>=2)||((x>4)||(x>=8))
C、(x<2)&&(x>=-2)&&(x>4)&&(x<8) D、(x>-2)&&(x>4)||(x<8)&&(x<2)
【答案】D
24. 定义a为整型,下列表达式a=3>6的运行后,a的值为( )。
A、0 B、
【答案】A
25. 若使用下述程序段将整数12和浮点数13.6分别赋给变量a和b,那么输入应该式( )。
int a;
float b;
scanf(“a=%d,b=%f”,&a,&b);
A、12 13.6 B、a=12,
b=
【答案】B
26.
以下程序段( )。
int x=1,y=4;
printf(x<y?”x=%d”:”y=%d”,x,y);
A、输出控制格式错误 B、输出:x=
【答案】C
27. 下面程序的输出是(
)。
main()
{
int x=10,y=3;
printf(“%d\n”,y=x%y);
}
A、0 B、
【答案】B
二.填空题
1.若有定义int m=5,y=2;,则执行表达式y+=y-=m*=y后y的值是____ __。
【答案】-16.
2. 能表达“10<x<200或x<
【答案】x>10&&x>200||x<0
3. 表达整型变量a能被3整除但不被5整除的表达式是____ __。
【答案】a%3==0&&a%5!=0
4.C语言中唯一的三元运算符是 。
【答案】?
5.设有:int
a=1,b=2,c=3,则!(a>b)&&!c||1的值为 。
【答案】1
6. Sizeof (float) 是
。
【答案】一个整型表达式
7. 当m=2,n=1,a=1,b=2,c=3时,执行完d = (m=a!=b) && (n=b>c)后;n的值为
,m的值为
。
【答案】0 1
8. 设I,J和K是int型变量,且I=3,J=4,K=5,则表达式!((I<J)&&!K||1)的值是 。
【答案】0
9. 判断char型变量c1是否为小写字母的正确表达式为
。
【答案】(c1>= ’a’) && (c1<= ’z’)
10. 若a=5,b=2,c=1,则表达式a-b<c
|| b = = c的值是
。
【答案】0
11.若a是int型变量,且a的初值是6,则计算表达式a+=a-=a*a后a的值__ ____。
【答案】-60
12. 假设x=5,y=6,则表达式x++*++y的值为______。
【答案】35
13.x2/(3x+5)的C表达式为
。
【答案】x*x/(3*x+5)
14.若有说明:int m=5,y=2;则执行表达式y+=y-+m*=y后的y值是
【答案】y=-16
15.在C语言中,表示逻辑“真”值用
【答案】非0数字
16.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的值是 。
【答案】1
17.若a是int型变量,则计算表达式a = 25/3%3后a的值为 。
【答案】 2
18.C语言提供的三种逻辑运算符是
、
和
。
【答案】 && || !
19.设ch是char类型变量,其值是A,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是
。
【答案】 a
20.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为
。
【答案】 2
21.设a=3,b=4,表达式a>b?b:a的值是
。
【答案】 3
22.表达式 (int)3.6*3的值为 。
【答案】9
23.标有/* */语句的输出结果为
。
int x=20;
printf(“%d,%o,%x”,x,x,x);/*
*/
【答案】20,24,14
24.
如果x、i、j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为______。
【答案】32
三.判断题:(正确:T;错误:F)
1.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
【答案】F
2.在C程序中,逗号运算符的优先级最低
【答案】T
3. 在C程序中,APA和apa是两个不同的变量
【答案】T
4.如果a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值保持不变。
【答案】T
5. 在C程序中,%是只能用于整数运算的运算符。
【答案】T
6. 代数式2lnxcosx/3x,正确的c语言表达式是2*log(x)*cos(x)/(3*x)
【答案】T
7.sizeof(float)是一个整型表达式
【答案】T
8. 有变量说明:int a=0,b=0,c=0;则表达式a=9+b++=a+7是符合c语言语法的赋值表达式。
【答案】F
四.简答-完善程序-分析程序
1、 c语言中不同数据类型的数据在运算是采用的规则是什么?
【答案】
c语言中,各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则为:总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度。
2、字符(char)型数据在微机内存中以什么形式存储?
【答案】
将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。
3、数据处理的最小单位是什么?
【答案】
数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。
4、若变量a是int类型,分析在执行了语句:a='A'+1.056;后a的值多少?
【答案】
在赋值表达式中,赋值符右边的值的类型会自动转换成赋值符左边的变量的类型。在本题中,先用"A"的ASCII码(65)值加上1.056得到66.056,将其强制转换成int型,实数的小数部分全部清除保留证书部分。所以a的值为66。
5、 c语言的基本类型数据有哪几种?
【答案】
[signed]char;unsigned char;[signed]short[int];unsigned short[int];[signed]long[int];unsigned
long[int];float;double.
6、分析下面程序的执行过程,给出输出结果。
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>c?(a>c?a:c):(b));
}
【答案】
本题最重要的语句在于d=a>c?(a>c?a:c):(b)),首先运算括号内的式子a>c?a:c,它的值是c的值6,即式子化成d=a>c?6:4。显然a=c,所以将4赋给d。
7、分析下面程序的执行过程,给出输出结果。
main()
{ int a=4,b=8,c;
c=("b==a)&&(a+b!=20);
printf("%d,%d,%d\n",a,b,c);
}
【答案】
如果在表达中出现多种运算符时,一定要按照他们的优先级别进行运算,否则其结果可能会产生错误。本题中,由于赋值表达中式c=(a/b==a)&&(a+b!=20)中有两个括号,而且两个括号是进行逻辑与运算。当第1个括号内的值为假时,不管后面括号内的值是否为假,两个括号内的值进行逻辑与(&&)运算时,其结果肯定为假。所以结果为:4,8,0