德州学院二级C语言期末复习题.docx
《德州学院二级C语言期末复习题.docx》由会员分享,可在线阅读,更多相关《德州学院二级C语言期末复习题.docx(18页珍藏版)》请在冰豆网上搜索。
德州学院二级C语言期末复习题
C语言练习题
一、单项选择题
1.以下选项中合法的标示符是()
A.1_1B.1-1C._11D.1__
2.若有以下类型说明语句:
chara;intb;floatc;shortintd;
则表达式(c*b+a)*d的结果类型是()。
A.charB.intC.doubleD.float
3.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为()。
A.算术运算、赋值运算、关系运算B.关系运算、赋值运算、算术运算
C.算术运算、关系运算、赋值运算D.关系运算、算术运算、赋值运算
4.多重if_else语句嵌套使用时,寻找与else配套的if方法是()。
A.缩排位置相同的if
B.其上最近的if
C.下面最近的if
D.同行上的if
5.有以下程序,其运行后的输出结果是()。
main()
{intx=1,y=2;
x=x+y,y=x-y;x=x-y;
printf("x=%d,y=%d\n",z);
}
A.12B.1,2C.0,1D.2,1
6.有以下程序,其中%u表示按无符号整数输出
main()
{unsignedshortx=0xFFFF;
printf("%u\n",x);
}
程序运行后的输出结果是()。
A.-1B.65535C.32767D.0xFFFF
7.以下合法的c语言语句是(B)。
A.x=int(x+0.5);B.++k;C.a=b=0D.a=1,
8.下面有关for循环的正确描述是(D)。
A.for循环只能用于循环次数已经确定的情况。
B.for循环是先执行循环体语句,后判断表达式。
C.在for循环中,不能用break语句跳出循环体。
D.for循环的循环体语句,可以包含多条语句,但必须用花括号括起来。
9.有以下程序,其运行后的输出结果是(C)。
main()
{intx=1,y=2,z;
z=x/y;
printf("%d\n",z);
}
A.1/2B.0.5C.0D.1
10.下列对字符串的操作正确的是(C)。
A.charc[3][4]={"ABCD"};B.charc[4]={'A','B','C','D'};
C.charc[4];scanf("%s",c);D.charc[4];c="ABCD";
11.若有说明inta[3][4];则对其数组元素的正确引用是(A)。
A.a[2][1+2]B.a
(2)(3)C.a[2,3]D.a[3][4]
12.在C语言程序中,以下正确的描述是(A)。
A.函数的定义可以嵌套,但函数的调用不可以嵌套。
B.函数的定义不可以嵌套,但函数的调用可以嵌套。
C.函数的定义和函数的调用均不可以嵌套。
D.函数的定义和函数的调用均可以嵌套。
13.执行下面程序的正确结果是( )。
main( )
{ float a=1.9;
switch(a)
{ case 0:
printf("0000");
case 1:
printf("1111");
case 2:
printf("2222");
}
printf("%f",a);}
A.1.900000B. 111122221.900000
C. 22221.900000D. 0000111122221.900000
14.若用数组名作为函数调用的实参,传递给形参的是(A)。
A.数组的首地址B.数组第一个元素的值
C.数组中全部元素的值D.数组元素的个数
15.以下叙述中错误的是()
A.计算机不能直接执行用C语言编写的源程序。
B.C程序经编译程序编译后,生成后缀为.obj的文件是一个二进制文件。
C.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件。
D.后缀为.obj和.exe的二进制文件都可以直接运行。
16.2.执行以下程序段后,w的值为()
intw=’A’,x=14,y=15;
w=((x||y)&&(w<’a’);
A.-1B.NULLC.1D.0
17.3.若有说明语句:
intw=1,x=2,y=3,z=4;
18.则表达试w>x?
w:
z>y?
z:
x的值是()。
A.4B.3C.2D.1
19.4.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和()等价。
A.k=(a>b)?
1:
0;B.k=a>b;
C.k=a<=b;D.a<=b?
0:
1;
20.若有定义:
intx=5,*p=&x;,则语句printf("%d\n",*p);的输出结果是(B)。
A.随机值B.5C.x的地址D.p的地址
21.以下判断两个字符串相等的正确方法是()。
A. if(str1=str2)B. if(str1==str2)
C. if(strcpy(str1,str2)=0)D.if(strcmp(str1,str2)==0)
22.设变量已正确定义并赋值,以下正确的表达式是()。
A.int(6.3%2)B.x=z*5=3C.i=j+5,++jD.k=20%3.0
23.有以下程序
#include
main()
{inti=5;
do
{if(i%3==1)
if(i%5==2){printf("*%d",i);break;}
i++;
}while(i!
=0);
printf("\n");
}程序运行结果是()
A.*7B.*3*5C.*2*6D.*5
24.有下列程序:
voidswap1(intc1[],intc2[])
{intt;
t=c1[0];c1[0]=c2[0];c2[0]=t;
}
voidswap2(int*c1,int*c2)
{intt;
t=*c1;*c1=*c2;*c2=t;
}
main()
{inta[2]={1,2},b[2]={3,4};
swap1(a,a+1);swap2(&b[0],&b[1]);
printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);
}
程序运行后的输出结果是()
A.1234B.2143C.2341D.1324
25.若有定义inta[]={1,2,3},b[3]={1,2,3};,表达式a==b的结果是(A)。
A.不能比较B.结果为真C.结果不确定D.结果为假
26.有定义:
inta=4,b,*p=&b,*q=&a;,以下赋值语句中与b=a;语句等价的是()。
A.*p=*q;B.p=q;C.*p=&a;D.p=*q;
27.有下列程序:
voidsum(inta[])
{a[1]=a[0]+a[2];
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}
程序运行后的输出结果是()
A.6B.7C.3D.9
28.定义structp{intx;chary[10];}p1;,则下列正确的赋值是(C)。
A.p1.y="sun"B.p1->y="sun"
29.C.strcpy(p1.y,"sun")D.p1.strcpy(y,"sun")
30.若调用一个函数,且此函数中没有return语句,则正确的说法是()。
A.该函数没有返回值
B.返回若干个系统默认值
C.能返回一个用户所希望的函数值
D.返回一个不正确的值
31.指针是一种()。
A.标识符B.变量C.运算符D.内存地址
32.有下列程序:
main(intargc,char*argv[])
{intn=0,i;
for(i=1;iprintf("%d\n",n);
}
编译连接后生成可执行文件tt.exe。
若运行时输入以下命令行
tt12345678
程序运行后的输出结果是()。
A.12B.12345C.12345678D.136
33.给出语句xxx.yyy.zzz=10;,下面正确的是()。
A.结构yyy嵌套在结构xxx中B.结构zzz嵌套在结构yyy中
C.结构xxx嵌套在结构yyy中D.结构xxx嵌套在结构zzz中
34.下面程序执行后k的值为(D)。
int a=1,b=2,c=3,d=4,k;
k=a>b?
a:
c>d?
c:
d
A.1B.2C.4D.4
35.有以下程序,其运行后的输出结果是(C)。
main()
{intx=1,y=2,z;
z=x/y;
printf("%d\n",z);
}
A.1/2B.0.5C.0D.1
36.设变量已正确定义,以下不能统计出一行中输入字符个数的是(D)。
A.n=0;while((ch=getchar())!
=′\n′)n++;B.n=0;while(getchar()!
=′\n′)n++;
C.for(n=0;getchar()!
=′\n′;n++);D.n=0;for(ch=getchar();ch!
=′\n′;n++);
37.有以下定义:
inta[]={0,1,2,3,4};
charc1='b',c2='1';
则数值为3的表达式是(B)。
A.a[2]B.'e'-c1C.a[4-c2]D.c2+1
38.有以下定义:
charc1="abcdef";
charc2={'a','b','c','d','e','f'};
则正确的叙述是(C)。
A.数组c1和数组c2等价。
B.数组c1和数组c2的长度相等。
C.数组c1的长度大于数组c2的长度。
D.数组c1的长度小于数组c2的长度。
39.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。
A.float型B.int型
C.long型D.double型
40.#include
main()
{charp[20]={‘a’,’b’,’c’,’d’},q[]=”abc”,r[]=”abcde”;
strcpy(p+strlen(q),r);strcat(p,q);
printf(”%d%d\n”,sizeof(p),strlen(p));
}程序运行后的输出结果是()
A.209B.99C.2011D.1111
41.以下正确的说法是()
如果在一个函数中的复合语句中定义了一个变量,则该变量
A.只在该复合语句中有效B.在该函数中有效
C.在本程序范围内均有效D.为非法变量
42.以下正确的函数形式是()
A.doublefun(intx,inty)
{z=x+y ;returnz ;}
B.fun(intx,y);
{intz ;returnz ;}
C.fun(x;y)
{intx,y ;doublez ;z=x+y ;returnz ;}
D.doublefun(intx,inty)
{doublez ;z=x+y ;returnz ;}
43.若有定义inta[][3]={1,2,3,4,5,6};,下面()能访问元素5。
A.A[4]B.a[0]+4C.**a+4D.*(&a[0][0]+4)
44.若有chars[10],*p=s;,则下面表达式正确的是()
A.s=p+s;B.p=s[0]+10;C.s[2]=p[4];D.p=s[0];
45.定义unions{intw,x,y,z;charc[6];};,则sizeof(unions)=()
A.2B.6C.8D.14
46.C语言规定,函数返回值的类型是由()。
A.return语句中的表达式类型所决定。
B.调用该函数时的主调函数类型所决定。
C.调用该函数时系统临时决定。
D.在定义该函数时所指定的函数类型所决定。
47.设已有定义:
intx;,则下列对指针变量p进行定义且赋初值的语句中正确的是()。
A.int*p=1024;B.int*p=(int)x;C.intp=&x;D.int*p=&x;
48.有下列程序:
floatf1(floata)
{returna*a;
}
floatf2(floatb)
{return3*b;
}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(3.0));
t=p1;p1=p2;p2=t;
y2=p2(p1(3.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序运行后的输出结果是(B)。
A.27,8B.27,81C.2,8D.2,81
49.定义typedefstruct{intx;}A[10];Aa;,下面正确的是(B)。
A.a.x=30;B.a[0].x=30;C.a.A[0].x=30;D.A[0].x=20;
50.结构化程序设计的基本原则不包括()。
A.多元性B.自顶向下
C.模块化D.逐步求精
51.若函数中有定义语句:
intk;,则()
A.系统将自动给k赋初值0B.这时k中的值无定义
C.系统将自动给k赋初值-1D.这时k中无任何值
52.以下不能定义为用户标识符的是()。
A.MainB._0C._intD.sizeof
53. 下列运算符中,优先级最低的是()。
A.*B.!
=C.+D.=
54.若有以下类型说明语句:
chara;intb;floatc;shortintd;
则表达式(c*b+a)*d的结果类型是()。
A.charB.intC.doubleD.float
55.有以下程序,程序的运行结果是()。
#include
voidmain()
{intx=8;
for(;x>0;x--)
{if(x%3){printf("%d,",x--);continue;}
printf("%d,",--x);
}
}
A.7,4,2B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
56.有以下程序
#include
voidmain()
{inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)if(a[i][i]for(i=0;i<4;i++)printf("%d,",a[0][i]);
}程序运行后的结果是()。
A.6,2,1,1,B.6,4,3,2,C.1,1,2,6,D.2,3,4,6,
57.有以下程序
#include
voidmain()
{inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}程序运行后的结果是()。
A.1,6,11,16,B.1,7,11,12,C.1,7,11,13,D.1,6,2,11,
58.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.auto和registerB.extern和registerC.auto和staticD.static和register
59.有以下程序,输出结果是()。
#include
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
voidmain()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d",x,y,z);
}
A.30,20,10B.10,20,30C.456,567,678D.678,567,456
60.下列程序的输出结果是()。
voidmain()
{inta[2][3],*p,i;
p=&a[0][0];
for(i=0;i<6;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",a[1][i]);
}
A.123B.345C.234D.245
61.若有chars[10],*p=s;,则下面表达式正确的是()。
A.s=p+s;B.p=s+10;C.s[2]=p[4];D.p=s[0];
62.关于结构类型的成员类型,下列说法正确的是()。
A.成员类型必须是基本数据类型B.每个成员类型必须为同一种
C.成员不可以定义为自身类型的指针D.以上说法均不正确
63.若运行时给变量x输入12,则以下程序的运行结果是()。
main()
{
int x,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);
}
A.0B.22C.1D.2
二、填空题
1.算法具有有穷性、可行性、确定性、、输出等5个主要特征。
2.设A为int型的一维数组,如果A的首地址为p,那么A中第i个元素的地址为。
3.人们根据特定的需要,预先为计算机编制的指令序列称为。
4.若以指数形式输出一个浮点数,则对应的格式控制字符为。
5.设变量i已正确定义为整型,且初值为0,则printf(“%d,%”,i++,i++)的输出结果是。
6.设有变量定义为inta[3]={1,4,7},*p=&a[2];,*p的值是。
7.结构变量可以作为函数的参数和返回值类型,以方式传递参数。
8.结构指针是结构变量的内存地址,保存该指针的变量称为。
9. 逻辑运算的值也为“真”和“假”两种,在C语言中“真”用,“假”用0来表示。
10.for(i=0;;i++);如果此for语句要执行10次,则需要在空白处填写。
11.若k为整型变量,则下面while循环执行的次数为:
。
k=10;
while(k==0)k=k-1;
12.若有定义:
intk;,以下程序段的输出结果是。
for(k=2;k<6;k++,k++)printf("##%d",k);
13.有以下定义:
floatb[20];
则数组b共有20个元素,其中的第一个元素为b[0],最后一个元素为。
14.若有定义:
intk;,以下程序段的输出结果是。
for(k=2;k<6;k++,k++)printf("##%d",k);
15.for(i=0;i<10;i++);结束后,i的值是。
16.对定义语句chars[]="abcd";则数组的长度是。
17.函数调用语句“f((e1,e2),(e3,e4,e5))”中参数的个数是。
18.在C语言中,一个函数一般由两个部分组成,它们是函数头和。
19.根据变量作用域的不同可以将变量分为局部变量和。
20.指针是C语言的重要特色,实际上它代表了机器的。
21.结构类型的定义需要以关键字开始,其关键字为。
22.for(i=0;i<10;i++);结束后,i的值是。
23.for(i=0;;i++);如果此for语句要执行10次,则需要在空白处填写。
24.有以下定义:
floatb[20];
则数组b共有个元素,
25.在C语言中,递归函数分为直接递归和。
26.有定义intarr[10]={0,1,2,3,4,5,6,7,8,9},*p,i=2;若执行语句:
p=arr;
printf(“%d”,*(p+i));
输出结果为:
。
27.结构数组是以为基类型的数组,下标运算可以访问每个结构元素。
28.指针变量虽然都是存放指针,但不同。
29.使用结构中成员变量必须先写上结构变量名,中间以分割。
30.若有定义:
intk;,以下程序段的输出结果是。
for(k=2;k<6;k++,k++)printf("##%d",k);
31.有以下定义:
floatb[20];
则数组b共有20个元素,其中的第一个元素为,最后一个元素为b[19]。
32.变量的存储类型有、static、register和extern四种。
33.在C语言中,递归函数分为直接递归和。
34.指针变量虽然都是存放指针,但不同。
35.使用结构中成员变量必须先写上结构变量名,中间以分割。
三、分析程序结果
1.以下程序的输出结果为。
#include
main()
{intn=12345,d;
while(n!
=0){d=n%10;printf("%d",d);n/=10;}
}
2.以下程序的输出结果为。
#include"stdio.h"
main()
{inti,a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
for(i=0;i<3;i++)printf("%d,",a[i][i]);
}
3.以下程序的输出结果