计算机等考二级C语言课后练习题及答案.docx
《计算机等考二级C语言课后练习题及答案.docx》由会员分享,可在线阅读,更多相关《计算机等考二级C语言课后练习题及答案.docx(38页珍藏版)》请在冰豆网上搜索。
计算机等考二级C语言课后练习题及答案
2011计算机等级二级C语言课后练习题及答案
(1)
一、单项选择题
1.C语言程序的执行,总是起始于【】。
A)程序中的第一条可执行语句
B)程序中的第一个函数
C)main函数
D)包含文件中的第一个函数
分析:
在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。
本题正确答案为C。
2.下列说法中正确的是【】。
A)C程序书写时,不区分大小写字母
B)C程序书写时,一行只能写一个语句
C)C程序书写时,一个语句可分成几行书写
D)C程序书写时每行必须有行号
分析:
C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。
本题正确答案为C。
3.下面对C语言特点,不正确描述的是【】。
A)C语言兼有高级语言和低级语言的双重特点,执行效率高
B)C语言既可以用来编写应用程序,又可以用来编写系统软件
C)C语言的可移植性较差
D)C语言是一种结构式模块化程序设计语言
分析:
C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。
本题正确答案为C。
4.C语言源程序的最小单位是【】。
A)程序行B)语句C)函数D)字符
分析:
程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。
本题正确答案为D。
5.以下四项中属于C语言关键字的是【】。
A)CHARB)defineC)unsignedD)return
分析:
C语言有32个关键字(或称保留字),它们都有特定的含意,并且由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的错误拼写。
本题正确答案为C。
6.十进制数2403转换成十六进制数为【】。
A)963B)369C)953D)359
分析:
十进制数化成十六进制数的方法是:
不断除以16,商0为止,倒取余数。
本题正确答案为A。
7.二进制数00110101转换成八进制数是【】。
A)055B)065C)056D)152
分析:
二进制数化成八进制数的方法是:
从右向左划分,将每3位二进制数书写成1位八进制数。
本题正确答案为B。
8.将二进制数1011011.011转换成十进制数是【】。
A)91.75B)91.375C)91.125D)91.25
分析:
二进制数化成十进制数的方法是:
各数字乘以权重再相加,题中整数部分为:
(1011011)2=1×26+1×24+1×23+1×21+1×20=64+16+8+2+1=91,小数部分为:
(0.011)2=0×2-1+1×2-2+1×2-3=0.25+0.125=0.375,再将两者合在一起得91.375。
本题正确答案为B。
9.计算机内部运算使用的数是【】。
A)十进制数B)十六进制数C)二进制数D)八进制数
分析:
在实际生活中找不到具有十个稳定状态的物理元件,而具有两种稳定状态的元件到处可见,如一个开关具有通电和断电两个稳定状态,计算机内部的元件正是以"1"代表通电,以"0"代表断电的,所以计算机内部运算使用的数是二进制数,至于八进制数和十六进制数是对二进制数的人为缩写。
本题正确答案为C。
10.一个字长的二进制位数是【】。
A)2个BYTE,即16个bitB)3个BYTE,即24个bitC)4个BYTE,即32个bitD)随计算机系统不同而不同
分析:
一个二进制位也称做1bit,八个二进制位称做1个BYTE,即所说的一个字节,BYTE和bit有固定的换算关系,但是计算机中的字长WORD和字节BYTE没有固定的换算关系,字长WORD是随CPU型号而异的。
本题正确答案为D。
11.在C语言系统中,假设int类型数据占2个字节,则double、long、unsignedint、char类型数据所占字节数分别多少【】。
A)8,2,4,1B)2,8,4,1C)4,2,8,1D)8,4,2,1
分析:
由上题知CPU字长决定了分配给各种类型变量多少个字节,当int类型占2个字节时,double、long、unsignedint、char型所占的字节分别为8、4、2、1个字节。
本题正确答案为D。
12.下面程序段执行结果是【】。
inti=5,k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k,i);
A)24,8B)21,8C)21,7D)24,7
分析:
k=(++i)+(++i)+(i++)表达式中,"++"号在i前面的有两个,所以在计算k之前,i要先增两次,即i变为7,然后再将3个7相加,使k得21,表达式中"++"号在i后面的有1个,所以得出k的值以后i又增1次变为8。
本题正确答案为B。
13.下面程序段执行结果是【】。
inti=5;
printf("%d,%d,%d",i,(++i)+(++i)+(i++),i);
A)8,20,5B)8,21,5C)5,20,8D)5,21,8
分析:
此题不能看作将12题中的k=(++i)+(++i)+(i++)代入printf函数,因为函数处理参数的顺序是从右向左,所以(++i)+(++i)+(i++)表达式的值不再是求7+7+7,而是为8+7+5=20。
本题正确答案为A。
14.下面程序段的输出结果是【】。
inti=32769;
printf("%d\\n",i);
A)32769B)32767C)-32767D)输出不是确定的数
分析:
int型变量表示数据的范围是-32768~+32767,赋值时比-32768小或比+32767大,都会发生溢出,溢出后存放的数值是:
正向溢出时,为该数减去模65536,负向溢出时,为该数加上模65536,所以本题输出为32769-65536=-32767。
本题正确答案为C。
15.下面的程序运行后输出为【】。
main()
{inta=-32769;
ptintf("%8U\\n",a);
}
A)32769B)%8UC)32767D)-32767
分析:
格式字符必须小写,题中的"%8U"不会当作格式控制符,而是原样输出,变量a将没有对应的格式说明,也不会送出。
本题正确答案为B。
二、填空题
1.若以下程序的输出结果是13,请填空。
main()
{intx=016;
printf("%d\\n",【1】);}
分析:
在C语言中以0开头的数字是八进制数,016相当于十进制数14,执行printf语句时,输出项应为x的值减1。
本题正确答案为【1】--x或x-=1。
2.下面程序段的输出结果是【2】。
intk=10;
floata=3.5,b=6.7,c;
c=a+k%3*(int)(a+b)%2/4;
分析:
本题考查运算符的优先级概念,式中要先算(a+b)的值,再算强制类型变换,*、/、%是同级的要从左到右计算,最后算加法和赋值。
本题正确答案为【2】3.500000
3.若执行下面程序段后的输出为:
3,4,5,请填空。
inta,b=3,c=5;
a=b printf("%d,%d,%d",a,b,c);
分析:
本题考查条件运算符和增量运算符的概念,题中b 本题正确答案为【3】b++。
4.C语言中的运算符,优先级最低的是【4】。
分析:
与其它高级语言相比,在C语言中赋值号并不是优先级最低的,C语言中优先级最低的运算符是逗号运算符。
本题正确答案为【4】逗号运算符。
5.若下面程序的输出结果是4,请填空。
main()
{inti,j,k;
k=0;i=j=-2;
k+=-i--【5】;
printf("%d\\n",k);
}
分析在C语言中当3个加号或3个减号连在一起时,中间的符号归属左边的变量,即-i---j相当于-(i--)-j。
本题正确答案为【5】-j。
2011计算机等考二级C语言课后练习题及答案
(2)
一、单项选择题
1.下面叙述不正确的是【】。
A)C语句末尾必须有分号
B)C语言中无论是整数还是实数都能准确的表示
C)运算符“%”只能用于整数运算
D)乘除运算符优先级高于加减运算符
2.以下叙述正确的是【】。
A)C语句前面必须有行号
B)C程序中每行只能写一条语句
C)C语言本身没有输入输出语句
D)注释必须跟在一行语句的后面
3.复合语句应用【】括起来。
A)小括号B)方括号C)大括号D)尖括号
4.将二进制数101101101111转换成十六进制数是【】。
A)5557B)B6FC)7555D)F6B
5.将十进制数0.625转换成二进制数是【】。
A)0.111B)0.101C)0.5D)0.A
6.C语言语句一行写不下时,可以【】。
A)用逗号换行B)用分号换行C)用回车换行D)在任意一空格处换行
7.C语言允许将一条语句写在两行上,下列语句不正确是【】。
A)inta,B)intaC)intD)inta,b
b;,b;a,b;;
8.下面程序的输出是【】。
(“□”表示一个空格)
inta=3366;
printf("|%-08d|",a);
A)|-0003366|B)|00003366|C)|3366□□□□|D)输出格式非法
9.若有说明语句:
inta;floatb;,以下输入语句正确的是【】。
A)scanf("%f%f",&a,&b);
B)scanf("%f%d",&a,&b);
C)scanf("%d,%f",&a,&b);
D)scanf("%6.2f%6.2f",&a,&b);
10.以下程序的输出结果是【】。
main()
{intx=11,y=11;
printf("%d%d\\n",x--,--y);
}
A)11,11B)10,10C)10,11D)11,10
11.将八进制数307转换成二进制数是【】。
A)100110011B)11000111C)1100000111D)111000011
12.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【】。
intx,y;
scanf("%d%d",&x,&y);
A)空格B)Tab键C)回车D)逗号
13.下面合法的语句是【】。
A)inta=8,b;
b=++a++;
printf("%d,%d",a,b++);
B)inta;
printf("\\"%d\\"",scanf("%d",&a));
C)chara;
scanf("%c",&a);
charb=scanf("b=%c",&b);
D)charc=getchar();
putchar((int)c);
14.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是【】。
inta;
floatb;
scanf("a=%d,b=%f",&a,&b);
A)25□2.5
B)25,2.5
C)a=25,b=5.5
D)a=25□b=2.5
15.与数学公式a•bx•y不等价的语句是【】。
A)a*b/x*y
B)a*b/x/y
C)a*b/(x*y)
D)a/(x*y)*b
二、填空题
1.表达式5%(-3)的值是【1】,表达式-5%(-3)的值是【2】。
2.在C语言中,格式输入库函数为【3】,格式输出库函数为【4】。
3.下面程序的输出结果是【5】。
intx=-32769;
printf("%d",x);
4.执行下列程序的输出结果是【6】。
main()
{
floata=1,b;
b=++a*++a;
printf("%f\\n",b);
}
5.执行下列程序的输出结果是【7】。
main()
{
intx=5,y;
y=++x*++x;
printf("y=%d\\n",y);
}
参考答案
一、选择题
(1)B
(2)C(3)C(4)B(5)B(6)D(7)D(8)C(9)C(10)D(11)B(12)D(13)D(14)C(15)A
二、填空题【1】2【2】-2【3】scanf【4】printf【5】32767【6】6.000000【7】49
2011计算机等考二级C语言课后练习题及答案(3)
一、单项选择题
1.下面不属于C语言的数据类型是【】。
A)整型B)实型C)逻辑型D)双精度实型
分析:
和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
2.C语言中,下列属于构造类型的是【】。
A)整型B)实型C)指针类型D)结构体类型
分析:
C语言中构造类型的数据有三种:
数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3.下列字符串不符合标识符规定的是【】。
A)SUMB)sumC)3cdD)end
分析:
标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4.下面能正确表示八进制数的是【】。
A)0x16B)029C)-114D)033
分析:
选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5.下面四个选项中,均是合法实数的选项是【】。
A)2e-4.2B)-0.50C)0.2e-.5D)-e5
分析:
实数有两种表示形式:
小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。
选项A)中的"2e-4.2",选项C)中的"0.2e-.5",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
6.C语言中,字符型数据在内存中存储形式是【】。
A)原码B)反码C)补码D)ASCII码
分析:
C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7.下列正确的字符型常量是【】。
A)"a"B)′\\\\′C)"\\r"D)277
分析:
字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
本题正确答案为B。
8.若有说明语句charch1=′\\x41′;则ch1【】。
A)包含4个字符B)包含3个字符C)包含2个字符D)包含1个字符
分析:
"\\x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。
本题正确答案为D。
9.下列程序段输出的字符串长度为【】。
printf("\\\\aaa\\′ccc\\bddd\\"");
A)11B)12C)13D)17
分析:
\\\\、\\′、\\b和\\"为转义字符,程序输出结果为:
\\aaa′ccddd"。
本题正确答案为A。
10.下列运算符中,要求运算对象必须是整数的是【】。
A)/B)*C)%D)!
分析:
题目中"/"、"*"、"!
"的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。
本题正确答案为C。
11.下面合法的赋值语句是【】。
A)x+y=2002;B)ch="green";C)x=(a+b)++;D)x=y=0316;
分析:
赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“++”不能用于表达式,选项C)也是错的。
本题正确答案为D。
12.已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为【】。
A)int型B)float型C)double型D)char型
分析:
不同类型数据混合运算的转换规律是:
运算前float型数据会自动转换为double型,char型数据会自动转换为int型。
运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。
本题正确答案为C。
13.执行以下程序段后的输出结果是【】。
intx=0xcde;
printf("M,%4o,%4x\\n",x,x,x);
A)3294,6336,cdeB)3294,6336,xcdeC)3294,06336,0xcdeD)3294,6336,0cde
分析:
0xcde是十六进制数,写成二进制数形式为:
110011011110,按八进制送出时,是从右向左3位二进制数写成1位,按十六进制形式送出时,是从右向左4位二进制数写成1位。
本题正确答案为A。
14.下面的程序运行后输出为【】。
#include
#include
main()
{inta,b;
floatc;
b=5;c=6;c=b+7;b=c+1;
a=sqrt((double)b+c);
printf("%d,%f,%d",a+6,c,b);
}
A)11.000000,12.000000,13.000000
B)11.000000,12.000000,13
C)11.0000000,12,13
D)11,12.000000,13
分析:
C语言允许将一种类型的数据赋给另一种类型的变量,但是变量的类型并不会因为赋值而发生改变,如本题中将b+7,即12赋给float型变量c,c值应为12.000000而不是整数12,同样a=sqrt((double)b+c),赋值号右边是双精度数,但由于a是整形变量,故a的值为5。
本题正确答案为D。
15.执行以下程序后x的值为【】。
unsignedintx=65535;
printf("%d\\n",x);
A)65535B)1C)有错误D)-1
分析:
题中将x定义成无符号整数,并且已初始化为:
111111*********1,若按%d格式输出,则最高位的1被当成了符号,111111*********1成了负数的补码,输出结果为-1。
本题正确答案为D。
二、填空题
1.下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。
charch;
scanf("%c",&ch);
ch=(ch>=′A′&&ch<=′Z′)?
(【1】):
ch
printf("【2】\\n",ch);
分析:
题目中条件运算为判断输入字母是否为大写,当ch>=′A′&&ch<=′Z′为真时,将其转换成对应的小写字母,需ASCII码值加上32,已知题意是将大写字母对应的小写字母ASCII值输出,所以printf语句中的输出格式应为十进制格式。
本题正确答案为【1】ch+32,【2】%d。
2.下面程序段的执行结果是x=【3】,y=【4】。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d",x,y);
分析:
此题考查逗号表达式的概念,因逗号运算符的优先级比赋值号还低,所以执行x=a+1,b+6时,x得到的是a+1的值。
本题正确答案为【3】4,【4】11。
3.下面程序执行后k的值为【5】。
inta=1,b=2,c=3,d=4,k;
k=a>b?
a:
c>d?
c:
d
分析:
因题中a>b的值为假,故求解表达式k=a>b?
a:
c>d?
c:
d相当于求k=a>b?
a:
(c>d?
c:
d)。
本题正确答案为【5】4。
4.已知:
inta=5;则执行a+=a-=a*a;语句后,a的值为【6】。
分析:
a+=a-=a*a的运算顺序是从右向左,相当于求a+=(a-=a*a),其中小括号内的运算得a=5-5*5即a=-20,下一步再求a+=a,即a=a+a,将-20代入得a=-40。
本题正确答案为【6】-40。
5.下面程序的运行结果是x=【7】,y=【8】。
main()
{floatx=4.9;inty;
y=(int)x;
printf("x=%f,y=%d",x,y);}
分析:
强制类型变换并不改变x的原值,x仍为4.9,而变换得到的是中间结果,此题将中间结果赋给了y,另外注意是舍弃小数部分,而不是四舍五入。
本题正确答案为【7】4.900000【8】4。
2011计算机等考二级C语言课后练习题及答案(4)
一、单项选择题
1.对if语句中表达式的类型,下面正确的描述是【】。
A)必须是关系表达式
B)必须是关系表达式或逻辑表达式
C)必须是关系表达式或算术表达式
D)可以是任意表达式
分析:
C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。
本题正确答案为D。
2.多重if_else语句嵌套使用时,寻找与else配套的if方法是【】。
A)缩排位置相同的if
B)其上最近的if
C)下面最近的if
D)同行上的if
分析:
多重if_else嵌套时,else总是与它上面最近的if配对。
本题正确答案为B。
3.以下错误的i