📄 练习(一).txt
字号:
C语言概述
一、单项选择题:
1、一个C/C++程序的执行是从( )
(A)本程序的main函数开始,到main函数结束。
(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
(C)本程序的main函数开始,到本程序文件的最后一个函数结束。
(D)本程序文件的第一个函数开始,到本程序main函数结束。
2、以下叙述正确的是( )
(A)在C/C++程序中,main函数必须位于程序的最前面。
(B)C/C++程序的每行中只能写一条语句。
(C)C/C++语言本身没有输入输出语句。
(D)在对一个C/C++程序进行编译的过程中,可发现注释中的拼写错误。
3、以下叙述不正确的是( )
(A)一个C/C++源程序可由一个或多个函数组成。
(B)一个C/C++源程序必须包含一个main函数。
(C)C/C++程序的基本组成单位是函数。
(D)在C/C++程序中,注释说明只能位于一条语句的后面。
4、C/C++语言规定:在一个源程序中,main函数的位置( )
(A)必须在最开始。
(B)必须在系统调用的库函数的后面。
(C)可以任意。
(D)必须在最后。
5、一个C/C++程序是由( )
(A)一个主程序和若干子程序组成。
(B)函数组成。
(C)若干过程组成。
(D)若干子程序组成。
二、填空题:
6、C/C++源程序的基本单位是( )。
7、一个C/C++源程序中至少应包括一个( )。
8、在一个C源程序中,注释部分两侧的分界符分别为( )和( )。
9、在C语言中,输入操作是由库函数( )完成的,输出操作是由库函数( )完成的。
数据类型、运算符与表达式
一、单选题:
1、在C语言中,5种基本数据类型的存储空间长度的排列顺序为( )
(A)char<int<long int<=float<double
(B)char=int<long int<=float<double
(C)char<int<long int=float=double
(D)char=int=long int<=float<double
2、若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( )
x=(i=4,j=16,k=32)
(A) 4 (B) 16 (C) 32 (D) 52
3、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )
(A) 7 (B) 8 (C) 6 (D) 2
4、下列四组选项中,均不是C语言关键字的选项是( )
(A) define (B) getc (C) include (D) while
IF char scanf go
type printf case pow
5、下列四组选项中,均是C语言关键字的选项是( )
(A) auto (B) switch (C) signed (D) if
enum typedef union struct
include continue scanf type
6、下面四个选项中,均是不合法的用户标识符的选项是( )
(A) A (B) float (C) b-a (D) _123
P_0 la0 goto temp
do _A int INT
7、C/C++中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )
(A)必须为字母 (B)必须为下划线
(C)必须为字母或下划线 (D)可以是字母、数字和下划线中的任一种字符
8、下面四个选项中,均是合法整型常量的选项是( )
(A) 160 (B) -0xcdf (C) -01 (D) -0x48a
-0xffff 01a 986,012 2e5
011 0xe 0668 0x
9、下面四个选项中,均是不合法的整型常量的选项是( )
(A) --0f1 (B) -0Xcdf (C) -018 (D) -0x48eg
-0xffff 017 999 -068
0011 12,456 5e2 03f
10、下面四个选项中,均是不合法的浮点数的选项是( )
(A) 160. (B) 123 (C) -.18 (D) -e3
0.12 2e4.2 123e4 .234
e3 .e5 0.0 1e3
11、下面四个选项中,均是合法的浮点数的选项是( )
(A) +1e+1 (B) -.60 (C) 123e (D) -e3
5e-9.4 12e-4 1.2e-.4 .8e-4
03e2 -8e5 +2e-4 5.e-0
12、下面四个选项中,均是合法转义字符的选项是( )
(A) '\'' (B) '\' (C) '\018' (D) '\\0'
'\\' '\017' '\f' '\101'
'\n' '\"' 'xab' 'x1f'
13、下面四个选项中,均是不合法转义字符的选项是( )
(A) '\"' (B) '\1011' (C) '\011' (D) '\abc'
'\\' '\' '\f' '\101'
'\xf' '\a' '\}' 'x1f'
14、下面正确的字符常量是( )
(A) "c" (B) '\\'' (C) 'W' (D) '\abc'
15、下面四个选项中,均是不正确的八进制数或十六进制数的选项是( )
(A) 016 (B) 0abc (C) 010 (D) 0a12
0x8f 017 -0x11 7ff
018 0xa 0x16 -123
16、下面四个选项中,均是正确的八进制数或十六进制数的选项是( )
(A) -10 (B) 0abc (C) 0010 (D) 0a12
0x8f -017 -0x11 -0x123
-011 0xc 0xf1 -0xa
17、下面四个选项中,均是正确的数值常量或字符常量的选项是( )
(A) 0.0 (B) "a" (C) '3' (D) +001
0f 3.9E-2.5 011 0xabcd
8.9e 1e1 0xff00 3e2
'&' '\"' 0a 50.
18、下面不正确的字符串常量是( )
(A) 'abc' (B) "12'12" (C) "0" (D) " "
19、对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是( )
代数式 C语言表达式
(A) (e的(x*x/2)次方)÷(2π的开方) exp(x*x/2)/sqrt(2*3.14159)
(B) (ax+(a+x)/4a)/2 1.0/2.0*(a*x+(a+x)/(4*a))
(C) ((sin x)的2.5次方)的开方 sqrt((pow(sin(x*3.14159/180),2.5))
(D) x*x-e的5次方 x*x-exp(5.0)
20、若有代数式3ae÷bc,则不正确的C语言表达式是( )
(A) a/b/c*e*3 (B) 3*a*e/b/c
(C) 3*a*e/b*c (D) a*e/c/b*3
21、已知各变量的类型说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合C语言语法的表达式是( )
(A) x%(-3) (B) w+=-2
(C) k=(a=2,b=3,a+b) (D) a+=a-=(b=4)*(a=3)
22、已知各变量的类型说明如下:
int i=8,k,a,b;
unsigned long w=5;
double x=1.42,y=5.2;
则以下符合C语言语法的表达式是( )
(A) a+=a-=(b=4)*(a=3) (B) a=a*3=2
(C) x%(-3) (D) y=float(i)
23、以下不正确的描述是( )
(A) 在C程序中,逗号运算符的优先级最低
(B) 在C程序中,APH和aph是两个不同的变量
(C) 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变。
(D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。
24、以下正确的叙述是( )
(A) 在C程序中,每行中只能写一条语句
(B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
(C) 在C程序中,无论是整数还是实数,都能被准确无误地表示
(D) 在C程序中,%是只能用于整型数运算的运算符
25、以下符合C语言语法的赋值表达式是( )
(A) d=9+3+f=d+9 (B) d=9+e,f=d+9
(C) d=9+e,e++,d+9 (D) d=9+e++=d+7
26、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为( )
(A) D (B) 68 (C) 不确定的值 (D) C
27、在C语言中,要求运算数必须是整型的运算符是( )
(A) / (B) ++ (C) != (D) %
28、若以下变量均是整型,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为( )
(A) 7 (B) 8 (C) 9 (D) 10
29、在C语言中,int、char和short三种类型树木在内存中所占用的字节数( )
(A) 由用户自己定义 (B) 均为2个字节
(C) 是任意的 (D) 由所用机器的机器字长决定
30、若有说明语句:char c='\72';则变量c( )
(A) 包含一个字符 (B) 包含2个字符
(C) 包含3个字符 (C) 说明不合法,c的值不确定
31、若有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )
(A) 2.500000 (B) 2.750000
(C) 3.500000 (D) 0.000000
32、sizeof(float)是( )
(A) 一个双精度型表达式 (B) 一个整型表达式
(C) 一种函数调用 (D) 一个不合法的表达式
33、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( )
(A) int (B) float (C) double (D) 不确定
34、下面四个选项中,均是非法常量的选项是( )
(A) 'as' (B) '\\' (C) -0x18 (D) 0xabc
-0xfff '\01' 01177 '\0'
'\0xa' 12,456 0xf "a"
35、若有代数式:((y的x次方)+㏒y)的开方,则正确的C语言表达式是( )
(A) sqrt(fabs(pow(y,x)+log(y)))
(B) sqrt(abs(pow(y,x)+log(y)))
(C) sqrt(fabs(pow(x,y)+log(y)))
(D) sqrt(abs(pow(x,y)+log(y)))
36、若有代数式:|x*x*x+㏒x|,则正确的C语言表达式是( )
(A) fabs(x*3+log(x))
(B) abs(pow(x,3)+log(x))
(C) abs(pow(x,3.0)+log(x))
(D) fabs(pow(x,3.0)+log(x))
37、在C语言中,char型数据在内存中的存储形式是( )
(A) 补码 (B) 反码 (C) 原码 (D) ASCII码
38、设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )
(A) n=(n*100+0.5)/100.0 (B) m=n*100+0.5,n=m/100.0
(C) n=n*100+0.5/100.0 (D) n=(n/100+0.5)*100.0
39、表达式18/4*sqrt(4.0)/8值的数据类型为( )
(A) int (B) float (C) double (D) 不确定
40、设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为( )
(A) 0~255 (B) 0~32767
(C) 0~65535 (D) 0~2147483647
41、设有说明:char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为( )
(A) float (B) char (C) int (D) double
42、若有以下定义,则能使值为3的表达式是( )
int k=7,x=12;
(A) x%=(k%=5) (B) x%=(k-k%5)
(C) x%=k-k%5 (D) (x%=k)-(k%=5)
43、设以下变量均为int类型,则值不等于7的表达式是( )
(A) (x=y=6,x+y,x+1) (B) (x=y=6,x+y,y+1)
(C) (x=6,x+1,y=6,x+y) (D) (y=6,y+1,x=y,x+1)
二、填空题
44、在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为________;一个int型数据在内存中所占字节数为________。
45、在C语言中(以16为PC机为例),一个float型数据在内存中所占的字节数为________;一个double型数据在内存中所占字节数为________。
46、若有如下定义,则计算表达式y+=y-=m*=y后的y值是________。
int m=5,y=2;
47、设C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为______。
48、在C语言中的实型变量分为两种类型,他们是________和________。
49、C语言所提供的基本数据类型包括:单精度型、双精度型、________、________和________。
50、若s是int型变量,则下面表达式的值为________。
s%2+(s+1)%2
51、若a是int型变量,则下面表达式的值为________。
(a=4*5,a*2),a+6
52、若x和a均是int型变量,则计算表达式(1)后的x值为________,计算表达式(2)后的x值为________。
(1) x=(a=4,6*2)
(2) x=a=4,6*2
53、若a、b和c均是int型变量,则计算表达式后,a值为________,b值为________,c值为________。
a=(b=4)+(c=2)
54、若a是int型变量,且a的初值为6,则计算表达式后a的值为________。
a+=a-=a*a
55、若a是int型变量,则计算表达式后a的值为________。
a=25/3%3
56、若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为________,n的值为________。
x+=n++
57、若有定义:int b=7; float a=2.5,c=4.7; 则下面表达式的值为________。
a+(int)(b/3*(int)(a+c)/2)%4
58、若有定义:int a=2, b=3; float x=3.5, y=2.5; 则下面表达式的值为________。
(float)(a+b)/2+(int)x%(int)y
59、若有定义:char c='\010'; 则变量c中包含的字符个数为________。
60、若有定义:int x=3, y=2; float a=2.5, b=3.5; 则下面表达式的值为________。
(x+y)%2+(int)a/(int)b
61、若x和n均是int型变量,且x的初值为12,n的初值为5,则计算表达式后x的值为________。
x%=(n%=2)
62、假设所有变量均为整型,则表达式(a=2, b=5, a++, b++, a+b)的值为________。
63、C语言中的标识符只能由三种字符组成,它们是________,________和________。
64、已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为________。
65、把以下多项式写成只含七次乘法运算,其余皆为加、减运算的表达式为________。
5X^7+3X^6-4X^5+2X^4+X^3-6X^2+X+10
66、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为________。
67、若有定义:int e=1, f=4, g=2; float m=10.5, n=4.0, k; 则计算赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是________。
68、表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为________。
69、表达式pow(2.8,sqrt(double(x)))值的数据类型为________。
70、假设m是一个三位数,从左到右用a、b、c表示各位数字,则从左到右各个数字是bac的三位数的表达式是________。
位运算
一、选择题
1、以下运算符中优先级最低的是( ),优先级最高的是( )。
(A) && (B) & (C) || (D) |
2、若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是( )
(A) sizeof,&=,<<,^ (B) sizeof,<<,^,&=
(C) ^,<<,sizeof,&= (D) <<,^,&=,sizeof
3、在C语言中,要求运算数必须是整型的运算符是( )
(A) ^ (B) % (C) ! (D) >
4、在C语言中,要求运算数必须是整型或字符型的运算符是( )
(A) && (B) & (C) ! (D) ||
5、sizeof(float)是( )
(A) 一种函数调用 (B) 一个不合法的表示形式
(C) 一个整型表达式 (D) 一个浮点表达式
6、表达式a<b||~c&d的运算顺序是( )
(A) ~,&,<,|| (B) ~,||,&,<
(C) ~,&,||,< (D) ~,<,&,||
7、以下叙述中不正确的是( )
(A) 表达式a&=b等价于a=a&b
(B) 表达式a|=b等价于a=a|b
(C) 表达式a!=b等价于a=a!b
(D) 表达式a^=b等价于a=a^b
8、表达式0x13&0x17的值是( )
(A) 0x17 (B) 0x13 (C) 0xf8 (D) 0xec
9、请读程序片段:
char x=56;
x=x&056;
printf("%d,%o\n",x,x);
以上程序片段的输出结果是( )
(A) 56,70 (B) 0,0 (C) 40,50 (D) 62,76
10、若x=2,y=3则x&y的结果是( )
(A) 0 (B) 2 (C) 3 (D) 5
11、在执行完以下C语句后,B的值是( )
char Z='A';
int B;
B=((241&15)&&(Z|'a'));
(A) 0 (B) 1 (C) TRUE (D) FALSE
12、表达式0x13|0x17的值是( )
(A) 0x13 (B) 0x17 (C) 0xE8 (D) 0xc8
13、若a=1,b=2则a|b的值是( )
(A) 0 (B) 1 (C) 2 (D) 3
14、若有以下程序段:
int x=1,y=2;
x=x^y;
y=y^x;
x=x^y;
则执行以上语句后x和y的值分别是( )
(A) x=1,b=2 (B) x=2,y=2 (C) x=2,y=1 (D) x=1,y=1
15、请读程序片段:
unsigned t=129;
t=t^00;
printf("%d,%o\n",t,t);
以上程序片段的输出结果是( )
(A) 0,0 (B) 129,201 (C) 126,176 (D) 101,145
16、表达式0x13^0x17的值是( )
(A) 0x04 (B) 0x13 (C) 0xE8 (D) 0x17
17、请读程序片段:
int x=20;
printf("%d\n",~x);
上面程序片段的输出结果是( )
(A) 02 (B) -20 (C) -21 (D) -11
18、表达式~0x13的值是( )
(A) 0xFFEC (B) 0xFF71 (C) 0xFF68 (D) 0xFF17
19、在位运算中,操作数每右移一位,其结果相当于( )
(A)操作数乘以2 (B) 操作数除以2
(C)操作数除以4 (D) 操作数乘以4
20、在位运算中,操作数每左移一位,其结果相当于( )
(A)操作数乘以2 (B) 操作数除以2
(C)操作数除以4 (D) 操作数乘以4
21、设有以下语句:
char x=3,y=6,z;
z=x^y<<2;
则z的二进制值是( )
(A) 00010100 (B) 00011011
(C) 00011100 (D) 00011000
22、请读程序
struct bit
{
unsigned a_bit:2;
unsigned b_bit:2;
unsigned c_bit:1;
unsigned d_bit:1;
unsigned e_bit:2;
unsigned word:8;
};
void main()
{
struct bit *p;
unsigned int modeword;
printf("Enter the mode word(HEX): ");
scanf("%x",&modeword);
p=(struct bit*) & modeword;
printf("\n");
printf("a_bit: %d\n",p->a_bit);
printf("b_bit: %d\n",p->b_bit);
printf("c_bit: %d\n",p->c_bit);
printf("d_bit: %d\n",p->d_bit);
printf("e_bit: %d\n",p->e_bit);
}
若运行时从键盘输入:96〈回车〉
则以上程序的运行结果是( )
(A)a_bit: 1 (B)a_bit: 2 (C)a_bit: 2 (D)a_bit: 1
b_bit: 2 b_bit: 1 b_bit: 1 b_bit: 2
c_bit: 0 c_bit: 0 c_bit: 1 c_bit: 2
d_bit: 1 d_bit: 1 d_bit: 0 d_bit: 0
e_bit: 2 e_bit: 2 e_bit: 2 e_bit: 1
23、设有以下说明:
struct packed
{
unsigned one:1;
unsigned two:2;
unsigned three:3;
unsigned four:4;
}data;
则以下位段数据的引用中不能得到正确数值的是( )
(A) data.one=4 (B) data.two=3
(C) data.three=2 (D) data.four=1
24、设位段的空间分配由右到左,则以下程序的运行结果是( )
struct packed_bit
{
unsigned a:2;
unsigned b:3;
unsigned c:4;
int i;
}data;
void main()
{
data.a=8;
data.b=2;
printf("%d\n",data.a+data.b);
}
(A) 语法错 (B) 2 (C) 5 (D)10
二、填空题
25、在C语言中,& 运算符作为单目运算符时表示的是________运算;作为双目运算符时表示的是________运算。
26、与表达式a&=b等价的另一书写形式是________。
27、与表达式x^=y-2等价的另一书写形式是________。
28、请读程序片段:
int a=1,b=2;
if(a&b) printf("***\n");
else printf("$$$\n");
以上程序片段的输出结果是________。
29、设有char a,b; 若要通过a&b运算屏蔽掉a中的其它位,只保留第2和第8位(设右起为第1位),则b的二进制数是________。
30、测试char型变量a第六位是否为1的表达式是________(设最右位是第一位)。
31、设二进制数x的值是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是________。
32、请读程序片段:
int a=-1;
a=a|0377;
printf("%d,%o\n",a,a);
以上程序片段的输出结果是________。
33、设x是一个整数(16bit),若要通过x|y使x低8位置1,高8位不变,则y的八进制数是________。
34、设x=10100011,若要通过x^y使x的高4位取反,低4位不变,则y的二进制数是________。
35、请读程序片段:
int m=20,n=025;
if(m^n) printf("mmm\n");
else printf("nnn\n");
以上程序片段的输出结果是________。
36、请读程序片段:
int x=1;
printf("%d\n",~x);
以上程序片段的输出结果是________。
37、以下程序的运行结果是________。
void main()
{
unsigned a,b;
a=0x9a;
b=~a;
printf("a: %x\nb: %x\n",a,b);
}
38、以下程序的运行结果是________。
void main()
{
char a=-8; unsigned char b=248;
printf("%d,%d",a>>2,b>>2);
}
39、以下程序的运行结果是________。
void main()
{
unsigned char a,b;
a=0x1b;
printf("0x%x\n",b=a<<2);
}
40、请读程序片段:
unsigned a=16;
printf("%d,%d,%d\n",a>>2,a=a>>2,a);
以上程序片段的输出结果是________。
41、若x=0123,则表达式(5+(int)(x))&(~2)的值是________。
42、下面程序的运行结果是________。
void main()
{
unsigned char a,b;
a=0x9d;
b=0xa5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -