C语言习题集Word文档格式.docx
《C语言习题集Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言习题集Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
%c%c"
B.printf("
%c%s"
C.printf("
%f%c"
D.printf("
%f%d"
7.若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数是()。
8.x为int型变量,且值为2345,不正确的输出函数是()。
%d"
x);
B.printf("
%3d"
%c"
x);
D.printf("
%s"
习题二
一.写出下列程序的运行结果
1.下面程序的运行结果是()。
main()
{inta,b;
a=23;
b=87;
printf("
%d%d\n"
}
A.23B.23,87C.a=23D.2387
87b=87
2.下面程序的运行结果是()。
{floatx,y;
x=12.34;
y=0.00045;
%f,%f"
A.12.34,0.00045B.12.340000,0.000450
C.12.340.00045D.12.3400000.000450
3.下面程序的运行结果是()。
{inth=34,k=56;
h=%d\nk=%d\n"
h,k);
A.h=34B.h=34k=56C.3456D.34
k=5656
4.下面程序的运行结果是()。
{floatx=12.34567,y=345.2354;
x=%5.3f,y=%5.3f"
A.12.346,345.235B.x=12.346,y=345.235
C.12.345670,345.235000D.x=12.34567,y=345.2354
5.下面程序的运行结果是()。
{ints=3,w=5;
%u,%u,%d,%d"
s,w,s,w);
A.3,5,3,5 B.3535 C.65533,5,3,5 D.65533,65531,3,5
6.运行下面程序时若从键盘输入:
123456789输出结果是()。
{inta,b,c;
scanf("
%3d%3d%3d"
b,&
c);
a=%d,b=%d,c=%d"
a,b,c);
A.a=123,b=45,c=678B.a=123b=454c=678
C.123,45,678D.a=123,b=456,c=789
7.运行下面程序时若从键盘输入:
123456789输出结果是()。
{inta,b,c;
a=%d,b=%d,c=%d"
a,b,c);
A.a=123,b=45,c=678B.a=123,b=456,c=789
C.123,456,789D.a=123b=456c=789
8.以下程序若a=12,b=45,c=3467,正确的数据输入方法是()。
a=%db=%dc=%d"
%d,%d,%d\n"
A.a=12b=45c=3467B.12453467
C.a=12b=45c=3467D.a=12b=45c=3467
二.填空题
1.C语句的最后用结束。
2.执行printf("
045);
函数的结果是。
3.执行printf("
%u\n"
-0x2a);
4.若x是整型,且x=1,执行printf("
%o\n"
x);
5.若一个C程序包含若干个函数,程序的执行总是从函数开始。
习题三
1.设a=1,b=2,c=3,写出下列关系表达式的值
(1)(a<
b)<
(c<
a+b)。
(2)(c<
b)>
(a<
c)。
(3)a+b==c。
(4)a+b>
=c。
2.设a=1,b=2,c=3,d=4写出下列逻辑表达式的值
(1)a&
&
b&
c。
(2)a||!
b||!
c。
(3)++a||b++&
++c||d++。
(4)(!
(a+b)+c1)&
(b+c/2)。
(5)a!
=11&
b<
4。
3.设x=y=z=1,则执行逻辑表达式++x||++y&
++z后,x,y,z的值分别为。
4.设x=y=z=1,执行逻辑表达式++x&
y||++z后,x,y,z的值分别为。
5.设a=1,b=2,c=3,d=4,x=1,y=1,则执行逻辑表达式(x=a>
b)&
(y=c>
d)后,x,y的值分别为。
6.在以下一组运算符中,优先级最高的运算符是()
A.<
=B.=C.%D.&
7.以下程序的运行结果是。
{inta=1,b=4,k;
k=(++a<
0)&
!
(b<
=0);
printf("
%d,%d,%d\n"
k,a,b);
8.在C中,下列哪一个表达式能正确表示a10或a0()
A.a>
=10ora<
=0B.a>
=10|a<
=0
C.a>
=10||a<
=0D.a>
=10&
a<
9.若a,b,c均为int型变量,则执行以下语句后,a,b,c的值分别为。
a=b=c=1;
++a||++b&
++c
10.给出下列程序的输出结果
(1)main()
a='
E'
;
b='
J'
c='
W'
if(a>
b)
c)printf("
%c\n"
a);
elseprintf("
c);
elseif(b>
b);
结果是:
(2)main()
{intx=100,a=10,b=20,OK1=5,OK2=0;
if(a<
if(b!
=15)
if(!
OK1)x=1;
else
if(OK2)x=10;
x=1;
%d\n"
(3)运行两次下面的程序,如果分别从键盘上输入数值6和4,其运行结果分别为
{intx;
if(x++>
5)printf("
x);
x);
}
输入6时,结果是:
输入4时,结果是:
11.若有定义:
floatx;
inta,b;
再有下面4个switch语句
A.switch(x)
{case1.0:
\n"
);
case2.0:
\n"
B.switch(x)
{case1,2:
)
case3:
C.switch(a+b);
{case1:
case1+2:
D.switch(a+b)
{case1:
case2:
正确的switch语句是(),其它switch语句错在什么地方?
习题四
1.下面程序若在运行时从键盘输入3.62.4,运行结果为()。
#include"
math.h"
{floatx,y,z;
z=x/y;
while
(1)
{if(fabs(z)>
1.0){x=y;
y=z;
elsebreak;
%f\n"
y);
A.1.500000B.1.600000C.2.000000D.2.400000
2.下面程序的输出是()。
{intx=3,y=6,a=0;
while(x++!
=(y=1))
{a+=1;
if(y<
x)break;
x=%d,y=%d,a=%d\n"
x,y,a);
A.x=4,y=4,a=1B.x=5,y=5,a=1
C.x=5,y=4,a=3D.x=5,y=4,a=1
3.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束,请填空。
{floatx,amax,amin;
%f"
amax=x;
amin=x;
while()
{if(x>
amax)amax=x;
if()amin=x;
\namax=%f\namin=%f\n"
amax,amin);
4.下面程序的输出是:
。
{intx=2;
while(x);
5.下面程序的运行结果为:
。
{inti=0,sum=1;
do
{sum+=i++;
while(i<
6);
sum);
6.C语句中,下列说法中正确的是()。
A.不能使用do-while语句构成的循环;
B.do-while语句构成的循环必须用break语句才能退出;
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环;
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环。
7.下面程序的输出结果是:
main()
{inty=9;
for(;
y>
0;
y)
if(y%3==0)
{printf("
y);
continue;
8.若x是int型变量,且有下面的程序段,其运行结果为()。
for(x=3;
x<
6;
x++)printf((x%2)?
("
%d"
):
##%d\n"
),x);
A.3B.##3C.##2D.3##4
##434##55
5##5
9.以下程序的运行结果是()。
{inti;
for(i=1;
i<
=5;
i++)
{if(i%2)printf("
"
elsecontinue;
#"
$\n"
A.###$B.###$C.##$D.##$
10.下面程序的功能是根据以下的公式,返回满足精度eps要求下的值,请填空。
{doubles=0.0,t=1.0;
intn;
floateps;
eps);
for(;
t>
eps;
n++)
{s+=t;
t=nt/(2n+1);
pi=%f\n"
);
习题五
1.以下正确的叙述是()。
A.C语言的主函数是无参函数
B.C语言的主函数最多允许有1个参数
C.C语言的主函数最多允许有2个参数
D.C语言的主函数可以有2个以上的参数
2.C语言中函数返回值的类型是由()决定的。
A.return语句中的表达式类型
B.调用该函数的主调函数类型
C.调用函数时临时确定
D.定义函数时所指定的函数类型
3.以下不正确的描述是()。
A.调用函数时,实参可以是表达式
B.调用函数时,简单变量的实参与形参可以共用内存单元
C.调用函数时,将为形参分配内存单元
D.调用函数时,实参与形参的类型必须一致
4.若x为int型变量,则以下函数fun的返回值类型为()。
fun(x)
……
{printf("
A.返回值为void类型B.无法确定返回值
C.返回值为int类型D.没有返回值
5.C语言规定,调用一个函数时,实参变量与形参变量之间的数据传递是()
A.地址传递B.由实参传给形参,再由形参传回来给实参
C.值传递D.由用户指定传递方式
6.填空
①变量存储类别,从作用域的角度分为变量和变量。
②局部静态变量在时赋初值且只赋值一次。
7.判断以下说法的正误
一个源文件由一个或多个函数组成,C程序是以一个源文件为编译单位的。
()
局部静态变量在函数调用结束后仍存在,但其它函数不能引用它。
()
自动(auto)变量是由编译系统自动处理的,对自动变量分配存储空间后,就赋值为0,执行函数后自动释放。
()
由于全局变量的作用域增加了函数间数据联系的渠道,利用全局变量可以从函数得到一个以上的返回值,故建议在程序中尽量定义全局变量。
()
8.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量的存储类应该是()。
A.externB.registerC.autoD.Static
9.以下不正确的描述为()
A.在函数之外定义的变量称为外部变量,外部变量是全局变量
B.在一个函数中既可以使用局部变量,又可以使用全局变量
C.外部变量定义和外部变量说明的含义不同
D.若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。
10.以下不正确的描述为()
A.不同函数中可以使用相同名字的变量
B.形式参数是局部变量
C.在一个函数内部定义的变量只在本函数范围内有效
D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
11.在C语言中,对于存储类型为()的变量,只有在使用它们时才
占用内存单元。
A.static和autoB.静态(static)
C.register和staticD.auto和register
12.C语言中形参的缺省存储类别是()
A.自动(auto)B.静态(static)
C.寄存器(register)D.外部(extern)
13.下列程序的运行结果是:
unsignedfun3(unsignednum)
{unsignedk=1;
{k=num%10;
num/=10;
}while(num);
return(k);
{unsignedn=26;
fun3(n));
14.下列程序的运行结果是:
longfun4(intn)
{longs;
if((n==1)||(n==2))s=2;
elses=n+fun4(n1);
return(s);
{longx;
x=fun4(4);
printf("
%ld\n"
15.下列程序的运行结果是:
#include"
stdio.h"
{intn=4,x=2,s;
s=fun(x,n);
s=%d\n"
s);
fun(intx,intn)
{if(n==1)return(x);
elsereturn(xfun(x,n1));
16.下列程序的运行结果是:
intfun2(intx,inty)
{intm=5;
return(xym);
{inta=7,b=5;
fun2(a,b));
17.下列程序的运行结果是:
fun(intp)
{intd=5;
d+=p++;
%d"
d);
{intd=1,a=3;
fun(a);
d+=a++;
18.下列程序的运行结果是:
fun(intn)
{if(n==1)return(0);
elseif(n==2||n==3)return
(1);
elsereturn(fun(n1)+fun(n2)+fun(n3));
{intx;
x=fun(10);
x=%d\n"
19.下面程序的执行结果是:
intx=3;
{inti;
for(i=1;
i<
4;
i++)
{++x;
f();
f()
{staticinti;
intx=10;
x/=x++;
20.下列程序的运行结果是:
fun(intx)
{staticinta=3;
a+=x;
return(a);
{intk=3,m=2,n;
n=fun(k);
n=%d\n"
n);
n=fun(m);
21.下列程序的运行结果是:
#include"
f(inta)
{intb=0;
staticintc=3;
a=c++,b++;
{inta=2,i,k;
for(i=0;
2;
i++)k=f(a++);
k);
22.下列程序的运行结果是:
inti=2,j=2;
{inti=2;
i=%d,j=%d\n"
i,j);
i=(i+++j)+(j+++i);
{inti=0;
习题六
一、选择题
1.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用双引号(“”)括起时,寻找被包含文件的方式为()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索所在的当前目录
2.以下叙述中不正确的是()。
#defineIBM-PC
A.预处理命令行都必须以#号开始
B.在程序中凡是以#号开始都是预处理命令行
C.C程序在执行过程中对预处理命令行进行处理
D.以上定义是正确的宏定义
3.以下叙述中正确的是()。
#defineCR37.688
A.在程序的一行上可以出现多个预处理命令行
B.预处理行是C的合法语句
C.被包含的文件不一定以.h作为后缀
D.在以上定义中CR是称为“宏名”的标识符
4.以下有关宏替换的叙述中不正确的是()。
A.宏替换不占用运行时间B.宏名无类型