单元测试之一C语言概述.docx
- 文档编号:7733770
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:25
- 大小:30.05KB
单元测试之一C语言概述.docx
《单元测试之一C语言概述.docx》由会员分享,可在线阅读,更多相关《单元测试之一C语言概述.docx(25页珍藏版)》请在冰豆网上搜索。
单元测试之一C语言概述
单元测试之一C语言概述
一、选择题
1.C语言属于下列哪一类语言()。
C
A.机器语言B.汇编语言
C.面向过程的语言D.面向对象的程序设计语言
2.一个C语言程序总是从()开始执行。
C
A.书写顺序的第一个函数B.书写顺序的第一条执行语句
C.主函数mainD.不确定
3.把已经编译好的源程序翻译成二进制的目标代码的是下面哪一个步骤()。
B
A.编辑B.编译C.连接D.执行
4.在C语言程序中,main()的位()。
C
A.必须作为第一个函数B.必须作为最后一个函数
C.可以任意D.必须放在它所调用的函数之后
5.C语言中的标识符只能由字母,数字和下划线组成且第一个字符()。
C
A.必须为字母B.必须为下划线
C.必须为字母或下划线D.可以是字母,数字或下划线中任一种6.一个C程序的执行是从()。
A
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
7.C语言中允许的基本数据类型包括()。
B
A.整型、实型、逻辑型
B.整型、实型、字符型
C.整型、字符型、逻辑型
D.整型、实型、字符型、逻辑型
8.以下叙述错误的是哪个()。
D
A.分号是C语句的必要组成部分
B.C程序的注释可以写在语句的后面
C.函数是C程序的基本单位
D.主函数的名字不一定用main表示
9.以下叙述错误的是哪个()。
C
A.一个C源程序必须有且只能有一个主函数
B.一个C源程序可以含零个或多个子函数
C.在C源程序中注释说明必须位于语句之后
D.C源程序的基本结构是函数
10.下列属于C语言合法的字符常数是()。
C
A.’\97’B.”A”C.’\t’D.”\0”
B和D显然不是字符,是字符串。
A应当用8进制,即'\097'才对,因此选C,C是控制字符,
11.标示符命名规则规定,标示符的合法字符不能是以下哪个()。
D
A.下划线B.数字C.字母D.空格
12.在C语言中,合法的长整型常数是()。
A
A.0LB.4962710C.0412765D.0xa34b7fe
13.若有以下定义语句charc1=’b’,c2=’e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是()。
B
A.2,MB.3,EC.2,E
D.输出项与相应的格式控制不一致,输出结果不确定
14.在以下一组运算符中,优先级最高的是()。
D
A.<=B.==C.%D.++
15.在C语言中,以下表达式哪个得出的结果为0?
()C
A.3.0%4B.3%4C.3/4D.3.0/4
16.x=3.6,a=7,y=5.5,表达式x+a%3*(int)(x+y)%2/4的结果是多少?
()A
a%3=1(int)(x+y)=1212%2=00/4=0结果是3.6
A.3.6B.4.6C.3.85D.4.85
17.下面程序的输出是()。
D
main()
{
intk=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A.k=11,k=12,k=13
B.k=11,k=13,k=13
C.k=11,k=013,k=oXb
D.k=11,k=13,k=b
【解析】主要考察printf的输出格式和进制问题,输出的格式控制部分,只需用对应的变量值替代即可%d十进制就是13%o八进制就是015%x十六进制就是0xd(但是打印不会打印0,0x前缀)
18.以下合法的C语言赋值语句是哪个?
()B
A.a=b=58
B.k=int(a+b);
C.a=58,b=58
D.i;
19.以下程序的输出结果是()。
C
main()
{intx=10,y=3;
printf(“%d\n”,y=x/y);
}
A.0B.1C.3D.不确定
20.若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是()。
D
A.read(a,b,c);
B.scanf(“%d%d%d”,a,b,c);
C.scanf(“%D%D%D”,%a,%b,%c);
D.scanf(“%d%d%d”,&a,&b,&b);
21.执行下面程序段后,c3中的值是()。
A
intc1=1,c2=2,c3;
c3=c1/c2;
A.0B.1/2C.0.5D.1
22.若执行以下程序段,其输出结果是()。
B
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d\n”,a,b,c);
A.3,0,-10B.0,0,3C.-10,3,-10D.3,0,3
3、a-=a-5;//执行前,a=0,执行后,a-=-5,a=5;c=a;//c=5;005
23.若有以下定义和语句:
inta=5;
a++;
此处表达式a++的值是()。
C
A.7B.6C.5D.4
24.在C语言中,如果下面的变量都是int类型,则输出结果是()。
A
sum=pad=5;
pad=sum++,pad++,++pad;
printf("%d\n",pad);
A.7B.6C.5D.4
25.以下程序的输出结果()。
B
#include
main()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
结果9,100开头表示八进制i=010转换成十进制是8++i是先让i的值加1也就是9,然后再返回也就是10j--是先返回j的值10,然后再减1也就是9.选B
A.11,10B.9,10C.010,9D.10,9
26.若有定义和语句:
chars[10];s="abcd";printf("%d\n",s);则结果是()。
D
A.输出abcdB.输出aC.输出adcbD.编译不能通过
原因是chars[10];这里的s是一个数组包含10个char的首地址。
它只可以在初始化的时候用chars[10]="abcd";或chars[]="abcd";或char*s="abcd";上面的写法都是正确的,但是都是初始化的时候使用,就是不可以,在后面的赋值语句中使用s="abcd";这个写法就不正确。
27.若有定义:
intx,y;chara,b,c;并有以下输入数据(此处
12
ABC
则能给X赋整数1,给Y赋数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()。
C
A.scanf("x=%dy=%d",&x,&y);a=getchar();c=getchar();
B.scanf("%d%d",&x,&y);a=getchar();b=getchar();c=getchar();
C.scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);
D.scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
28.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。
A
main()
{
intx;
scanf("%d",&x);
if(x++>5)printf("%d",x)
elseprintf("%d\n",x--);
}
A.7和5B.6和3C.7和4D.6和4
x++跟x--都是先执行当前语句然后再加减的~例如:
if(x++>5)这个语句是先之行(x>5)再执行(x=x+1)的相同的printf("%d\n",x--)是先输出来x再进行x=x-1;的~所以输入6时先判断6>5正确然后6+1=7然后输出输入4时先判断4>5错误然后输出x输出之后4-1=3;(注意是先输出来4再运算变成3的)
29.若执行下面的程序从键盘输入3和4,则输出是()。
B
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s=s*s;
printf("%d\n",s);
}
A.14B.16C.18D.20
30.设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为()。
B
A.100<空格>765.12<回车>
B.i=100,f=765.12<回车>
C.100<回车>765.12<回车>
D.x=100<回车>,y=765.12<回车>
31.以下程序的输出结果是()。
B
#include
main()
{
printf("%d\n",NULL);
}
A.不确定B.0C.–1D.1
stdio.h这个头文件中有预处理:
#defineNULL0。
。
NULL就表示0
31.printf("f=%3.2f%%",3.478);的输出结果是()。
A
A.f=3.48%B.f=3.5%C.f=3.48%%D.f=347.8%
32.printf("%c,%d",'a','a');的输出结果是()。
A
A.a,97B.a97C.97,aD.97a
33.scanf("%c",&a);若要给变量输入大写字母A,则以下正确的输入是()。
D
A.'A'
C."A"
34.若一个int类型的数据占2字节,则程序段:
intx=-1;printf("%u,%d",x,x);的输出结果是()。
A
A.65535,-1B.-1,65535C.32767,32768D.32768,32767
分析:
在内存中数据是以2进制来表示的,%u表示以无符号十进制形式输出整数,输出65535,;%d表示以带符号的十进制形式输出整数,
35.在TC中,getchar、putchar、printf、scanf四个函数,均包含在头文件()中。
B
A.math.hB.stdio.hC.stbio.hD.stdlib.h
36.复合语句是用()括起来的语句组。
C
A.()B.[]C.{}D.<>
37.下列格式符中,哪一个可以用于以八进制形式输出整数()。
C
A.%dB.%8dC.%oD.%ld
38.下列格式符中,哪一个可以用于以十六进制形式输出整数()。
B
A.%16dB.%8xC.%d16D.%d
39.a是int类型变量,c是字符变量,下列输入语句中哪一个是错误的()。
B
A.scanf("%d,%c",&a,&c);B.scanf("%d%c",a,c);
C.scanf("%d%c",&a,&c);D.scanf("d=%d,c=%c",&a,&c);
40.要使doublex;longa;的数据能正确的输出,输出语句应是()。
D
A.printf("%d,%f",a,x);B.printf("%d,%1f",a,x);
C.scanf("%1d,%1f",&a,&x);D.printf("%1d,%lf",a,x);
41.逻辑运算符两侧运算对象的数据类型()。
D
A.只能是0或1B.只能是0或非0正数
C.只能是整型或字符型数据D.可以是任何类型的数据
42.下关于运算符优先顺序的描述中正确的是()。
C
A.关系运算符<算术运算符<赋值运算符<逻辑与运算符
B.逻辑运算符<关系运算符<算术运算符<赋值运算符
C.赋值运算符<逻辑与运算符<关系运算符<算术运算符
D.算术运算符<关系运算符<赋值运算符<逻辑与运算符
43.下列运算符中优先级最高的是()。
B
A. = 44.能正确表示"当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是()。 C A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210) C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210),||的确有一个满足1就成立 45.判断char型变量ch是否为大写字母的正确表达式是()。 C A.'A'<=ch<='z'B.(ch>='A')&(ch<='z') C.(ch>='A')&&(ch<='z')D.('A'<=ch)AND('z'>=ch) 46.设有如下定义: inta=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式: (m=a>b)&&(n=c>d)后,n的值为()。 D A.1B.2C.3D.0 先计算a>b,值为0,赋给m的值为0,表达式m=a>b的值也是0。 对于&&逻辑运算,不管后面(n=c>d)的值如何,都不影响(m=a>b)&&(n=c>d)的最终结果,因此,C语言不再对表达式n=c>d进行计算。 因而n的值没有改变! ! 47.以下程序输出结果是()。 C main() {intm=5; if(m>5)printf(“%d\n”,m); elseprintf(“%d\n”,m--); } A.7B.6C.5D.4 48.假定w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4; m=(w w: x;m=(m m: y;m=(m m: z; 则该程序运行后,m的值是()。 D A.4B.3C.2D.1 m=w=1;m=m=1;m=m=1 D 49.以下不正确的if语句形式是()。 c A.if(x>y&&x! =y);A是空语句 B.if(x==y)x+=y; C.if(x! =y)scanf("%d",&x)elsescanf("%d",&y);少了一个分号 D.if(X 50.请阅读以下程序: main() {inta=5,b=0,c=0; if(a=b+c)printf("***\n"); e1seprintf("$$$\n"); } 以上程序: ()。 D A.有语法错不能通过编译B.可以通过编译但不能通过连接 C.输出***D.输出$$$ 51.以下程序的输出结果是()。 C main() {inta=5,b=4,c=6,d; printf("%d\n",d=a>b? (a>c? a: c): (b)); } A.5B.4C.6D.不确定 52.假定所有变量均已正确说明,下列程序段运行后x的值是()。 B a=b=c=0;x=35; if(! a)x--; elseif(b);if(c)x=3; elsex=4; A.34B.4C.35D.3 53.若w=1,X=2,y=3,z=4,则条件表达式w w: y y: z的值是: ()。 D A.4B.3C.20D.1 54.执行以下程序段后、变量a,b,c的值分别是()。 B intx=10,y=9; inta,b,c; a=(--x==y++)? --x: ++y; b=x++; c=y; A.a=9,b=9,c=9B.a=8,b=8,c=10 C.a=9,b=10,c=9D.a=1,b=11,c=10 a=(--x==y++)? --x: ++y;先判断--x==y++是否为真,--x,将x的值减1,取其值,结果是9,y++先取y的值为9,然后其值加1,y=10所以--x==y++为真,所以a=--x=8b=x++;先取x的值8,再将其值加1,所以b=8,x=9c=y=10所以最后结果就是8810主是理解前增(前减)和后增(后减)区别,++x和x++的区别在于++x先把x的值加1,再取其值,而x++是先取其值,再把值加1a? b: c的意思是a成立,则执行b,否则执行c 若w,x,y,z,m均为int型变量,则执行下面语句后的m值是()。 A w=1;x=2;y=3;z=4; m=(w w: x; m=(m m: y; m=(m m: Z; A.1B.2C.3D.4 56.转换说明符%x的输出形式是()。 C A.十进制B.八进制C.十六进制D.二进制 57.若x、y、z均为int型变量,则执行下列语句后的z值为()。 A x=1;y=2;z=3;z=(x>y)? z: y;z=(z z: x; A.1B.4C.2D.3 59.下面标识符中,合法的用户标识符为()。 D A.P#AdB.12aC.charD._int 因为: 标识符由字母、下划线、数字这三个方面组成,但开头必须是字母或下划线。 且关键字不能是标识符。 A中出现#符号,B中以数字开头C中char为关键字,故而选D._int 60.‘A’+3的结果是()。 B A.’A’B.’D’的ASCⅡ码C.65D.3 61.将int型变量n转换成float型变量的方法是()。 B A.floatnB.(float)nC.float(n)D.21个字符 62.下列程序 main() {intx,y,z; x=y=2;z=3; y=z++-1; printf(“%d\t%d\t”,x,y); y=++x-1; printf(“%d\t%d\n”,x,y); y=z---1; printf(“%d\t%d\t”,z,y); y=--z-1; printf(“%d\t%d\n”,z,y); } 运行后输出的数据为()。 C A.3142B.3133C.2232D.2132 2413242233211312 63.一个C语言的源程序中,()。 A A.必须有一个主函数B.可以有多个主函数 C.必须有主函数和其他函数D.可以没有主函数 64.下列数据中,为字符串常量的是()。 B A.‘A’B.“house”C.Howdoyoudo.D.’$abc’ 65.若有定义: inta=8,b=5,c;,执行语句c=a/b十0.4;后,c的值为()。 A.1.4B.1C.2.0D.2 66.设有intx=11;则表达式(x++*l/3)的值为()。 A A.3B.4C.11D.12 A后自增比乘除优先级高,所以先预算自增,但是因为是后自增,所以先使用x与*1得11除二为3,再使x增一,所以表达式的值是3 67.执行x=5>1+2&&2||2*4<4-! 0后,x的值为()。 C A.-lB.OC.1D.5 你说的等式中有三种运算符,算术运算符(+、-、*、/),关系运算符(>、<、==),逻辑操作符(&&、||、! )和赋值运算符(=),这三种运算符优先级依次递减,逻辑操作符中优先级(! >&&>||)。 所以上面式子运算顺序为X={【5>(1+2)】&&2}||【(2*4)<(4-! 0)】 =1&&2||0(运算顺序从左到右) =1||0 =1 68.以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子: (x)/(y×z)的c语言表达式是()。 A A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z 69.假定w、x、y、z、m均为int型变量;有如下程序段: w=1;x=2;y=3;z=4; m=(w w: x;m=(m m: y;m=(m m: z; 则该程序段执行后,m的值是()。 D A.4B.3C.2D.1 二、填空题 1.常量分为____常量与____常量。 字符型数值型 2.八进制整数以___开头,十六进制整数以___开头。 00x 3.合法的标示符首字母可以包括____、____。 下划线字母 4.若有以下定义语句: intu=010,v=0x10,w=10;printf(“%d,%d,%d\n”,u,v,w);则输出结果是____。 8,16,10 5.若有以下定义语句: inta=5;printf(“%d\n”,a++);则输出结果是_____。 5 6.若t为double型变量,表达式t=1,t+5,t++的值是______。 1.0 7.设x为int型变量,执行以下语句,x=10;x+=x-=x-x;x的值为______。 20 8.y是int型变量,请写出判断y为奇数的关系表达式______。 y%2==1 9.复合语句在语法上被认为是______,空语句的形式是______。 一个语句; 10.如果想输出字符“%”,则应该在“格式控制”字符串中用______表示。 连续两个百分号% 11.printf函数的“格式控制”包括两部分,他们是______和______。 格式说明普通字符 12.符号’&’是______运算符,&a是指______。 地址a在内存中的地址 13.复合语句是由一对______括起来的若干语句组成的。 花括号 14.getchar函数的作用是______。 向终端输入一个字符 15.putchar函数的作用是______。 向终端输出一个字符 16.scanf函数中的“格式控制”后面应当是______,而不是______。 变量地址变量名 17.分析下面程序: main() {intx,y; x=16;y=(x++)+x;printf(“%d\n”,y); x=15;printf(“%d,%d\n”,++x,x); x=20;y=x--+x;printf(“%d\n”,y); x=13;pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元测试 之一 语言 概述