C复习练习题吴老师.docx
《C复习练习题吴老师.docx》由会员分享,可在线阅读,更多相关《C复习练习题吴老师.docx(51页珍藏版)》请在冰点文库上搜索。
C复习练习题吴老师
C程序设计期末复习题
一、填空题
1.C语言符号集包括(英文字母,数字,下划线和一些有特定含义的标点符号)。
2.一个C程序有且只有一个(主函数)。
3.结构化设计中的三种基本结构是(顺序结构,选择结构,循环结构)。
4.设intx=9,y=8;表达式x==y+1的结果是
(1).
5.定义intx,y;执行y=(x=1,++x,x+2);语句后,y的值是(4)。
6.以下程序运行的结果是(end)。
#include
main()
{
inta,b,c;
a=2;b=3;c=1;
if(a>b)
if(a>c)
printf("%d\n",a);
else
printf("%d\n",b);
printf("end\n");
}
7.以下程序运行的结果是(d=20)。
#include
main()
{
inta,b,c,d,x;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15;
elsex=25;
printf("d=%d\n",d);
}
8.以下程序(当输入值为2,1时)运行的结果是(s=2,t=3)。
#include
main()
{
ints,t,a,b;
scanf("%d,%d",&a,&b);
s=1;
t=1;
if(a>0)s=s+1;
if(a>b)t=s+1;
elseif(a==b)t=5;
elset=2*s;
printf("s=%d,t=%d\n",s,t);
}
9.以下程序运行的结果是(s=7)。
#include
main()
{
ints=0,k;
for(k=7;k>=0;k--)
{
switch(k)
{
case1:
case4:
case7:
s++;
break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;
break;
}}
printf("s=%d\n",s);}
10.C语言源程序文件的后缀是(.C),经过编译后生成文件的后缀是(.obj),经过链接后生成的文件的后缀是(.exe)。
11.表达式10/3的结果是(3)。
12.执行下列语句后,a的值是(-264)。
inta=12;a+=a-=a*a;
13.以下程序输入100后的执行结果是(n=64)。
#include
main()
{
intn;
scanf(%o",&n);
printf("n=%d\n",n);
}
14.以下程序执行时输入LanguageProgramming的结果是(str=Language)。
#include
main()
{
charstr[30];
scanf("%s",str);
printf("str=%s\n",str);
}
15.以下程序执行的结果是(1234)。
#include
main()
{
inta[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;i>=0;i--)
{
s=s+a[i]*j;
j=j*10;
}
printf("s=%d\n",s);
}
16.以下程序执行的结果是(s=123)。
#include
main()
{
charstr[]={"1a2b3c"};
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='9')
printf("%c",str[i]);
printf("\n");
}
17.一个C源程序有
(1)个main()函数和(若干)个其他函数。
18.C程序是从(主函数main的第一个可执行语句)开始执行的。
19.设intx;当x的值分别为1,2,3,4时,表达式(x&1==1)?
1:
0的值分别是
(1),(0),
(1),(0)。
20.执行下列语句后,a,b,c的值分别是(8),(8),(10)。
intx=10,y=9;
inta,b,c;
a=(--x==y++)?
--x:
++y;
b=x++;c=y;
21.以下程序的执行结果是(6,8,6,8)。
#include
main()
{
inti,j,x,y;
i=5;j=7;
x=++i;y=++j;
printf("%d,%d,%d,%d\n",i,j,x,y);
}
22.以下程序输入ABC后的执行结果是(c=A)。
#include
main()
{
charc;
scanf("%3c",&c);
printf("c=%c\n",c);
}
23.以下程序输入123456后的执行结果是(a=12,b=345)
#include
main()
{
inta,b;
scanf("%2d%3d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
24.以下程序运行后的输出结果是(sum=33)。
#include
main()
{
inti,j,sum,m,n=4;
sum=0;
for(i=1;i<=n;i++)
{
m=1;
for(j=1;j<=i;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
}
25.以下程序的执行结果是(12)。
#include
main()
{
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
for(i=0;i<4;i++)
p[i]=&a[i*3];
printf("%d\n",p[3][2]);
}
26.C程序的基本单位是(函数)。
27.函数是由(函数的说明部分)和(函数体)组成。
28.表达式10%3的结果是
(1)。
29.以下语句的输出结果是(-1)。
unsignedintb=65535;
printf("%d",b);
30.以下语句的输出结果是(ffff)。
inta=-1;
printf("%x",a);
31.以下程序的执行结果是
(1)。
#include
main()
{
intx=35;
printf("%d\n",(x&15)&&(x|15));
}
32.以下程序的执行结果是(n=-4)。
#include
main()
{
intn=2;
n+=n-=n*n;
printf("n=%d\n",n);
}
33.以下程序的执行结果是(s=24)。
#include
main()
{
inta[]={2,3,4};
ints,i,*p;
s=1;
p=a;
for(i=0;i<3;i++)
s*=*(p+i);
printf("s=%d\n",s);
}
34.以下程序执行的结果是(8)。
typedefunion
{
longx[2];
inty[4];
charz[8];
}MYTYPE;
MYTYPEa;
main()
{
printf("%d\n",sizeof(a));
}
35.设intx=1,y=5;执行表达式x<2||y=1之后,y的值是(5)。
36.设intx=1,y=5;执行表达式x>2&&y=1之后,y的值是
(1)。
二、选择题
1.以下不正确的C语言的标识符是(D)。
A.ABCB.abcC.a_bcD.ab.c
2.有一个名为newprint的函数用于打印sin(x),cos(x)和ln(x)等函数的曲线模拟,其
参数就是这些函数,则newprint的说明是(C)。
A.doublenewprint(doublex)
B.voidnewprint(double(*f)(doublex))
C.voidnewprint(double(*f)(),doublex)
D.void(*newprint)(doublef(doublex))
3.以下不正确的语句(设有intp,q)是(D)。
A.p*=3;B.p/=q;C.p+=3;D.p&&=q;
4.设charch;以下正确的赋值语句是(D)。
A.ch=’\123’;B.ch=’\xff’;
C.ch=’\08’;D.ch="\";
5.为了避免嵌套的if-else语句的二义性,C语言规定else总是与(C)组成配对关系。
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
6.选择出合法的if语句(设intx,a,b,c;)(A)。
A.if(a==b)x++;
B.if(a=
C.if(a<>b)x++;
D.if(a=>b)x++;
7.一个C程序是由(B)。
A.一个主程序和若干个子程序组成
B.一个或多个函数组成
C.若干过程组成
D.若干子程序组成
8.C语言中规定函数的返回值的类型是由(D)。
A.return语句中的表达式类型所觉定
B.调用该函数时的主调用函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定
9.如果a=1,b=2,c=3,d=4,则条件表达式a
a:
cc:
d的值为(A)。
A.1B.2C.3D.4
10.设intm=1,n=2,则++m==n的结果是(B)。
A.0B.1C.2D.3
11.在说明一个结构体变量时系统分配给它的存储空间是(D)。
A.该结构体中第一个成员所需存储空间
B.该结构体中最后一个成员所需存储空间
C.该结构体中占用最大存储空间的成员所需存储空间
D.该结构体中所有成员所需存储空间的总和
12.以下程序的执行结果是(B)。
#include
main()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
A.11,10B.9,10C.010,9D.10,9
13.以知字母A的ASCII码是65,以下程序的执行结果是(D)。
#include
main()
{
charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
A.A,YB.65,65C.65,90D.65,89
14.以下程序的执行的结果是(C)。
#include
#include
main()
{
inta=1,b=4,c=2;
floatx=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf("%f\n",z);
}
A.14.000000B.15.000000C.13.700000D.14.900000
15.以下不正确的C语言标识符是(C)。
A.%xB.a+bC.a123D.text!
16.一个C程序的执行是从(A)。
A.main()函数开始,直到main()函数结束。
B.第一个函数开始,直到最后一个函数结束。
C.第一个语句开始,直到最后一个语句结束。
D.mian()函数开始,直到最后一个函数结束。
17.在程序中,main()的位置(C)。
A.必须作为第一个函数。
B.必须作为最后一个函数。
C.可以任意。
D.必须放在它所调用的函数之后。
18.以下结果为整数的表达式(设有inti;charc;floatf;)(B)。
A.i+fB.i*cC.c+fD.i+c+f
19.以下不正确的语句(设有intp,q)是(D)。
A.p*=3;B.p/=q;C.p+=3;D.p&&=q;
20.以下使i的运算结果为4的表达式是(D)。
A.inti=0,j=0;
(i=3,(j++)+i);
B.inti=1,j=0;
j=i=((i=3)*2);
C.inti=0,j=1;
(j==1)?
(i=1):
(i=3);
D.inti=1,j=1;
i+=j+=2;
21.设n=10,i=4,则赋值运算n%=i+1执行后,n的值是(A)。
A.0B.3C.2D.1
25.有如下程序,输入数据:
12345ffl678后,x的值是(B),y的值是(A)。
#include
main()
{
intx;
floaty;
scanf("%3d%f",&x,&y);
}
①A.12345B.123C.45D.345
②A.45.000000B.45678.000000C.678.000000D.123.000
26.假定等级和分数有以下对应关系:
等级:
A分数:
85-100
等级:
B分数:
60-84
等级:
C分数:
60以下
对于等级grade输入相应的分数区间的分数区间,能够完成该功能的程序段是(D)。
A.switch(grade)
{
case'A':
printf("85-100\n");
case'B':
printf("60-84\n");
case'C':
printf("60以下\n");
default:
printf("等级错误!
\n");
}
B.switch(grade)
{
case'A':
printf("85-100\n");
break;
case'B':
printf("60-84\n");
case'C':
printf("60以下\n");
default:
printf("等级错误!
\n");
}
C.switch(grade)
{
case'A':
printf("85-100\n");
break;
case'B':
printf("60-84\n");
break;
case'C':
printf("60以下\n");
default:
printf("等级错误!
\n");
}
D.switch(grade)
{
case'A':
printf("85-100\n");
break;
case'B':
printf("60-84\n");
break;
case'C':
printf("60以下\n");
break;
default:
printf("等级错误!
\n");
}
27.以下for循环是(C)。
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A.无限循环B.循环次数不定C.执行4次D.执行3次
28.以下关于数组的描述正确的是(C)。
A.数组的大小是固定的,但可以有不同的类型的数组元素。
B.数组的大小是可变的,但所有数组元素的类型必须相同。
C.数组的大小是固定的,所有数组元素的类型必须相同。
D.数组的大小是可变的,可以有不同的类型的数组元素。
29.在定义inta[10];之后,对a的引用正确的是(D)。
A.a[10]B.a[6.3]C.a(6)D.a[10-10]
30.以下程序的输出结果是(A)。
#include
main()
{
intk=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
func(a,b)
inta,b;
{
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A.8,17B.8,16C.8,20D.8,8
31.以下程序执行后的正确结果是(B)。
structtree
{
intx;
char*s;
}t;
func(structtreet)
{
t,x=10;
t.s="computer";
return(0);
}
main()
{
t,x=1;
t.s="minicomputer";
func(t);
printf("%d,%s\n",t.x,t.s);
}
A.10,computerB.1,minicomputerC.1,computerD.10,minicomputer
32.设a是一个八进制数想使a的最低一位为1,其它位不变,应采用下列那种运算_____。
A.a=a&1B.a=a|1C.a=a7776D.a=a|7776
33.经过inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}定义之后,元素a[1][0]的值是_____。
A.2B.5C.10D.12
34.经过inta[3][4]={{1},{5},{9}}定义只好,元素a[2][0]的值是_____。
A.1B.5C.9D.0
34.fopen()函数的mode取值"r"和"w"时,它们之间的差别是(B)。
A."r"可向文件读入,"w"不可向文件读入
B."r"不可向文件写入,"w"可向文件写入
C."r"不可由文件读出,"w"可由文件读出
D.文件不存在时,"r"建立新文件,"w"出错
三、判断题
1.C语言中规定函数的返回的类型在有调用该函数时系统临时决定。
(×)
2.数组的大小是可变的,但所有数组元素的类型必须相同。
(×)
3.for循环体语句中,可以包含多条语句,但要用花括号括起来。
(√)
4.C语言中不能使用do-while语句构成的循环。
(×)
5.使用fseek函数可以改变文件的位置指针的当前位置。
(√)
6.一个程序应包括两个方面的内容:
数据的描述和操作步骤。
(√)
7.凡是C源程序中行首以"#"标识的控制行都是预处理命令。
(×)
8.C语言的编译系统对宏命令的处理在程序运行时进行的。
(×)
9.联合体类型在任何给定时刻所有成员一直驻留在结构中。
(√)
10.数组的大小是固定的,所有数组元素的类型必须相同。
(√)
11.for循环只能用次数已经确定的情况。
(×)
12.检测fp文件流的文件位置指针在文件头的条件是ftell(fp)==0。
(√)
13.C语言中规定函数的返回值的类型是由调用该函数时的主调用函数类型所决定。
(×)
14.每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。
(√)
15.C语言的编译系统对宏命令的处理在对源程序中其它语句正式编译之前进行的。
(√)
16.在程序的一行中可以出现多个有效的预处理命令行。
(√)
17.联合体类型在任何给定时刻没有成员驻留在结构中。
(×)
18.C语言的函数定义不能嵌套但调用可以嵌套。
(√)
19.C语言中do-while语句构成的循环,当while语句中的表达式值为零时结束循环。
(√)
20.C语言用true表示逻辑"真"值。
(×)
21.for循环是先执行循环体语句,后判定表达式。
(×)
22.数组的大小是可变的,可以有不同的类型的数组元素。
(×)
23.在C语言中,指向指针的指针称为多级指针。
(√)
24.在C语言中,要求对所有用到的变量作强制定义,也就是"先定义,后使用"。
(√)
25.C语言的编译系统对宏命令的处理是在程序连接时进行的。
(×)
26.宏定义不能出现在函数内部。
(√)
27.对于C语言的函数它们定义和调用都不能嵌套。
(×)
28.C程序在执行过程中对预处理命令进行处理。
(×)
29.使用fseek函数可以实现改变文件的位置指针的当前位置。
(√)
30.C语言的编译系统对宏命令的处理是在对源程序中其它语句正式编译之前进行的。
(√)
31.C语言中规定函数的返回值的类型是由于调用该函数的主调用函数类型所决定。
(×)
32.变量的作用域是指该变量有定义的程序部分。
(√)
33.在定义一个函数时,若指定函数返回值的存储类型为static关键字,则称该函数是"静态"函数。
(√)
34.数组的大小是可变的,可以有不同的类型的数组元素。
(×)
35.for循环体语句中,可以包含多条语句,但要用花括号括起来。
(√)
36.在说明一个联合体变量时系统分配给它的存储空间是该联合体中所有成员所需存储空间的总和。
(×)
四、读程序写结果
1.func1(inta,intb)
{
return(a+b);
}
func2(inta,intb)
{
return(a-b);
}
func3(int(*t)(),intx,inty)
{
return(*t)(x,y);
}
main()
{
intx,(*p)(int,int);
p=func1;
x=func3(p,9,3);
x+=func3(func2,