1.设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( D )。
A. float B. char C. int D. double
数据进行运算 数据类型由低字节转换成高字节 double类型字节最高
2.若有以下类型说明:char w; int x; float y, z; 则表达式w*x+z-y的结果为__A__类型。
A.float B.char C.int D.double
数据进行运算 数据类型由低字节转换成高字节 本题中float类型字节最高
3.假定下列 x 和 y 均为 int 型变量,则不正确的赋值为(D );
A. x+=y++ B. ++x=++y
C. x=++y D. x++=y++
x++只能作为右值,++x既可以做左值也可以作为右值
4.以下程序运行后输出的结果是___9___。
#include <stdio.h>
int main()
{
int k = 011;
printf("%d\n", k++);
return 0;
}
011是八进制数 8^1*1+8*0*1=9
5.请正确填写输出结果。
int main()
{
int a = 15; 0000 1111
int b = 20; 0001 0100
int c;
a && b = ? (1)
a & b = ? (2)
a || b ? (3)
a | b = ? (4)
a >> 2 = ? (5)
}
(1)___1___ (2)_0000 0100 (3)____1____ (4) 0001 1111 (5)_0000 0011__
6.为了表示“a和b都不等于0”应使用( D)。
A. (a!=0) || (b!=0) B. allb
C. !((a==0)&&(b==0)) D. a&&b
A表示a或b不等于0 B表示a或b C表示非(a=0且b=0)
7.设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为( 1 )
7>4真 4==4真 a||b+c不符合 b==c真
8. 已知 a = 13, a << 2的十进制数值为 ( 52 )
13=0000 1101 左移两位 0011 0100=52
9.int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为(3 )
!z=0 y>0=1 x+1=3
10.能正确表示a和b同时为正或同时为负的逻辑表达式是:(D )
A. (a >= 0 ll b >= 0) && (a < 0 ll b < 0)
a>=0或b>=0与a<0或b<0
B. (a>=0 && b>=0) && ( a < 0 && b < 0)
a>=0与b>=0且a<0与b<0不可能同时出现
C. (a + b > 0) && (a + b <= 0)
a+b>0 a+b<=0不能表示ab同时为正或负
D. a * b > 0
11.int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=____2____
2=1>2先算1>2 =0 2=0假 &&左侧为假 右侧不再进行计算 所以n仍=2
12.语句 printf("%d \n", 12 & 012); 的输出结果是:(B )
A. 12 B. 8 C. 6 D. 012
十进制12=0000 1100
八进制012=10=0000 1010
按位与结果为 0000 1000=8
13.有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 _-7_______
153越界 -103
-103=1110 0111
取反 1001 1000
补码 1001 1001
右移四位 补码 1111 1001 反码 1111 1000 原码 1000 0111=-7
14.以下所列的C语言常量中,错误的是:B
- 0.1f B. 1.0e0.1
C. 'z' D. '\110'
e表示科学计数法后面数字必须为整数
15.sizeof(float)是( B)。
A. 一个双精度型表法式 B. 一个整型表达式
C. 一个函数调用 D. 一个不合法的表达式
16. 一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?
char 无符号 0-255
有符号 -128-127
int 无符号 0-2^32
有符号 -2^31-2^31-1
17.下面的代码输出是什么,为什么? >6
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(">6") : puts("<=6");
}
- 20=1001 0100 原码
1110 1011反码
1110 1100 补码=236
6+236>6为真所以输出>6
18.按位或运算符(|) (深圳元征信息科技) 0x10 | 0x01 = ? 十六进制的结果是多少?
0x10=0001 0000
0x01=0000 0001
0001 0001
0x01
19.按位与运算符(&) (深圳元征信息科技) 0x10 & 0x01 = ? 十六进制的结果是多少?
0x10=0001 0000
0x01=0000 0001
0000 0000
0x00
20.关于条件的书写
判断year是不是闰年
if( year%4==0&&year%100!=0||year%400==0 )
判断num是偶数
if(num%2==0 )
判断num是一个三位数
if(num>=100&&num<1000)
判断字符ch是大写字母
if( ch>='A'&&ch<='Z')
判断字符ch是偶数数字字符
if( ch >= '0' && ch <= '9' && (ch - '0') % 2 == 0 )