C语言习题库
第一章 C语言概述 一、单选题
(1)一个C程序的执行是从
A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。 (2)以下叙述正确的是
A、 在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。
D、 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 (3)C语言规定,在一个源程序中,MAIN主函数的位置是在: A、 必须在最前面。 B、 必须在系统调用的库函数的后面 C、 可以在任意位置。 D、 必须在最后面
(4)一个C程序是由: A、 一个主程序和若干子程序组成 B、 函数组成 C、 若干过程组成 D、 若干子程序组成
(5)以下叙述不正确的是:
A、 一个C源程序可由一个或多个函数组成 B、 一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数
D、 在C程序中,注释说明只能位于一条语句的后面 二、填空题
(1)C源程序的基本单位是( )
(2)一个C源程序至少应包括一个( )
(3)在一个C源程序中,注释部分两侧的分界符分别为( )和( )
(4)在C语言中,输入操作是由库函数( )完成的,输出操作是由库函数( )完成的。
第二章 数据类型、运算符与表达式 一、单选题
(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为 x=( i=4, j=16, k=32) A、4
B、16 C、32 D、52
(2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case
E、 if, struct, type
(3)下面四个选项中,均是不合法的用户标识符的选项是 A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT
(4)若有代数式3ae/bc,则正确的C语言表达式是 A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3
(5) 已知各变量的类型说明如下: int k, a, b;
unsinged long w=5; double x=1.42;
则以下不符合C语言语法的表达式是 A、x%(-3) B、w+=-2;
C、k=(a=2,b=3,a+b) D、a+=a-=(b=4)*(a=3) 二、填空题 (1) 在C语言中(以16位机为例),一个char型数据在内存中所占的字节数为( ),一个int 型数据在内存中所占的字节数为( )。 (2) 在C语言中,实型变量分为两种类型,它们是( )和( )。 (3) 若a是int型变量,则计算表达式a=25/3%3后,a的值为( )。 (4) C语言中的标识符只能由三种字符组成,它们是( ),( )和( ) (5) 表达式8/4*(int)2.5/(int)(1.25*3.7+2.3)值的数据类型为( )。 三、判断题 (1) C语言所提供的基本数据类型包括:整型、实型和字符型。 (2) 在C程序中,逗号运算符的优先级最低。 (3) 当从键盘输入数据时,对整型变量只能输入整型数据,对实型变量只能输入实型数据。 (4) C语言中的标识符只能由字母、数字和下划线三种字符组成。 (5) 在C语言中,char型的数据在内存中的存储形式是原码形式。
第三章 简单C程序设计 一、单选题
(1)putchar函数可以向终端输出一个 A、整型变量表达式值 B、实型变量值 C、字符串
D、字符或字符型变量值
(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是 A、scanf(―%d%lx,%le‖,&x,&y,&z); B、scanf(―-*%d%lf‖,&x,&y,&z); C、scanf(―%x%*d%o‖,&x,&y,&z); D、scanf(―%x%o%6.2f‖,&x,&y,&z);
(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为 main() {int x,y,z;
scanf(―%d%d%d‖,&x,&y,&z); printf(―x+y+z=%d\\n‖,x+y+z); }
A、x+y+z=48 B、x+y+z=35 C、x+z=35 D、不确定值
(4) 以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是 A、int a=b=c=5; B、int a, b, c=5; C、a=5, b=5, c=5; D、a=b=c=5;
(5) 若有以下定义,则不正确的赋值语句是 int a,b; float x; A、a=1, b=2; B、b++; C、a=b=5;
D、b=(int)x; 二、填空题
(1)以下程序的输出结果是( )。
main()
{int x=1,y=2;
printf(―x=%d y=%d *sum*=%d\\n‖,x,y,x+y); printf(―10 squared is :%d\\n‖,10*10); }
(2)以下程序的输出结果是( )。
#include
{int a=325;double x=3.1415926; printf(―a=%+06d x=%+e\\n‖,a,x,); }
(3)假设变量a和b均为整型,以下语句可以下借助任何变量把a、b中的值进行交换。请填空。
a+=( );b=a-( );a-=( );
(4)设x,y和z都是int型变量,m为long型变量,则在16位微型机上执行下面的赋值语句后,x值为( ),y值为( ),z值为( )。 y=(x=32767,x=-1); z=m=0xFFFF
(5)若x为int型变量,则执行以下语句后x的值是( ) x=7;
x+=x-=x+x; 三、判断题
(1) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(―%4.2f‖,&f)。 (2) 整型变量的输出格式控制符只有%d一种。 (3) putchar函数可以向终端输出一个字符串。
(4) pirntf函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大
于5,则输出按原字符长度从左向右全部输出。
(5) 输入项可以是一个实型常量,如scanf(―%f‖,2.3)。
第四章 选择结构程序设计 一、单选题
(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是 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) (2)以下程序的运行结果是
#include ―stdio.h‖ main()
{int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(―%d,%d‖,a,b); }
A、6,1 B、2,1 C、6,0 D、2,0
(3)请阅读以下程序:
main()
{int a=5 , b=0 , c=0;
if (a+b+c) printf(―* * *\\n‖); else printf(―$ $ $\\n‖); }
以上程序 。
A) 有语法错误不能通过编译 B) 可以通过编译但不能直接通过连接 C) 输出* * * D) 输出$ $ $
(4)以下程序的运行结果是 。
main() {int m=5;
if(m++>5)printf(―%d\\n‖,m); else printf(―%d\\n‖,m——); } A) 4 B) 5 C) 6 D) 7
(5)为了避免在嵌套的条件语句中if-else中产生二义性,c语言规定:else子句总是与
相配对。
A)缩排位置相同的if B)其之前最近的if C)其之后最近的if D)同一行上的if 二、填空题
(1)当a=3,b=2,c=1时,表达式 f=a>b>c的值是( )。 (2)在C语言中表示逻辑“真”值用( )。
(3)设x,y,z均为int 型变量,请写出描述“x 或y中有一个小于z”的表达式( ). (4)当m=2,n=1,a=1,b=2,c=3时,执行完 d=(m=a!=b)&&(n=b>c)后;n的值为( ),m的值为
( )。
(5)有int a=3,b=4,c=5;则表达式a||b+c&&b= =c的值为( )。 三、判断题
(1) 逻辑运算符两侧的运算对象可以是任何基本类型的数据。 (2) C语言中只提供了三种逻辑运算符:&&, ||,和!。 (3) 若a=6,b=4,c=3则表达式a&&b+c||b-c的值是0。 (4) 关系运算式的结果都是逻辑值。
(5) 若a=1,b=2,则表达式a>b?a:b+1的值是3。