《C语言程序设计_第1-7章选择、填空习题及答案.doc》由会员分享,可在线阅读,更多相关《C语言程序设计_第1-7章选择、填空习题及答案.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、习 题 一一、选择题1C程序的基本单位是( A)。A函数B文件 C语句D字符2C程序中的变量(B )。A不用说明B先说明后引用C先引用后说明D引用和说明顺序无关3变量的说明在(B )。A执行语句之后B执行语句之前C执行语句当中D位置无关4C语言是一种( C)。A机器语言B符号语言C高级语言D面向对象的语言二、填空题1一个C程序总是从 主函数 开始执行。2结构化程序由 顺序 、 选择 、 循环 三种基本结构构成。3一个C程序只有一个名为 main 的主函数。4C程序中的每个语句以 分号 结束。5C程序中,函数由 函数首部 和 函数体 组成。6每个基本结构有 一个 入口和 一个 出口,没有 死循环
2、 和 死语句 。7算法是 计算机解决问题所依据的步骤。习 题 二一、选择题1下列数据中属于字符串常量的是( B)。AABCBABC CabcDA2在计算机内存中,n占用的字节数是( C)。A4 B3 C1D23字符串ABC在内存中占用的字节数是( D)。A6 B8 C3 D44在C语言中,合法的长整型常数是 ( B)。A B0L C0.D2.654e115char型常量在内存中存放的是( A)。AASCII代码值BBCD代码值C十进制代码值D内码值6下列各项中正确的标识符是( D)。A?bb Ba=8 C b. Db_47下列不正确的转义字符是( D)。A B 0 C D0x48设整型变量a、
3、b的值均为5,则表达式(m=n=a+)/(n=b-2)的值为( B)。A0 B1 C2 D39设a的值为5,执行下列语句后,b的值不为2的是( C)。Ab=a/2 Bb=6-(-a) Cb=a%2 Db=(float)a/210执行语句x=(a=3,b=a-)后,x、a、b的值依次是( C)。A3,3,2 B3,2,2C3,2,3 D2,3,211设有语句int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是( D)。A3 B0 C9D-1212在下列运算符中,优先级最高的是( B)。A& B%C=D=13设整型变量a的值为3,则计算表达式a-a后,表达式的值为(B)。A1 B0C
4、2D表达式出错14设整型变量a、b、c的值均为2,表达式a-b+c+的结果是( C)。A6 B9 C2D表达式出错15若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( D)。A1 B2.5C2D2.016下列表达式中符合C语言语法的赋值表达式是( C)。Aa=4+b+c=a+8 Ba=4+b+=a+8 Ca=(4+b,b+,a+8) Da=4+b,c=a+817若有以下定义:char a;int b;float c;double d;,则表达式a*b+d-c的值的类型为( D)。AintBfloatCchar Ddouble二、填空题1在内存中存储A要占 2 个字节,存
5、储A要占 1 个字节。2符号常量的定义方法是 #define 常量名 常量 。3无符号基本整型的数据类型符为 unsigned int双精度实型数据类型符为 double ,字符型数据类型符为 char 。4十进制数673的二进制、八进制和十六进值数分别为 、 2412 和 2A1 。5在C语言中,书写八进制数时必须加前缀 0 ;书写十六进制数时必须加前缀 0x 。6在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占 2 字节、 2 字节、 4 字节、 4 字节和 8 字节。7设有下列运算符:=,其中优先级最高的是 + ,优先级最低的是 & 。8设
6、x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为 1.0 。9设整型变量x、y、z均为5,则: 执行x-=y-z后,x的值为 5 。 执行x%=y+z后,x的值为 5 。10数学式的C语言表达式为 a/b*c) 。三、简答题1字符常量与字符串常量有什么区别?2对于Turbo C系统来说,char型变量与int型变量在内存中存储数据的区别是什么?3整型变量可细分为哪六类?4什么是一个实型数据的规范化指数形式?5设x=3.5,a=5,y=6.7,求算术表达式x+a%3*(int)(x+y)%2/4的值。6设a=2,b=3,x=4.5,y=1.6,求表达式(float)(a+b)
7、/2+(int)x%inty的值。 7设整型变量a=12,写出下列表达式运算后a的值。 a*=2+5 a/=a+a a+=a-=a*=a8写出下列程序的运行结果。main() char c1=A,c2=B,c3=C,c4=101,c5=h42;printf(A%cb%ct%ctbcn,c1,c2,c3);printf(tb%c%c,c4,c5);结果:AAbB C abc AB9写出下面程序的运行结果。main() int i,j,m,n;i=5;j=6;m=+i;n=-j;printf(%d,%d,%d,%d,i,j,m,n);结果:6,5,6,5习 题 三一、选择题1printf()函数输
8、出实数时,使用的格式字符是(C)。A%d B%cC%fD%o2下面变量说明中(C)是正确的。Achar:a ,b ,c; Bchar a;b;c; Cchar a , b , c; Dchar a,b ,c3putchar()函数可以向终端输出一个(D )。A整型变量表达式值 B实型变量值 C字符串 D字符或字符型变量值4阅读以下程序,当输入数据的形式为:25,13,10CR,正确的输出结果为( D )。main() int x,y,z;scanf(%d%d%d,&x,&y,&z);printf(x+y+z=%dn, x+y+z);Ax+y+z=48Bx+y+z=35 Cx+z=35 D不确定
9、值5以下说法正确的是( D )。A. 输入项可以是一个实型常量B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(a=%d,b=%d);C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%4.2f,&f);D. 当输入数据时,必须指明变量的地址,如scanf(%f,&f);6以下能正确地定义整型变量a、b和c并为其赋初值5的语句是(C )。Aint a=b=c=5; Bint a,b,c=5;Cint a=5,b=5,c=5; Da=b=c=5;7已知ch是字符型变量,下面正确的赋值语句是(B )。Ach=a+b; Bch=xff; Cch=08; Dch
10、=;8设x、y均为float型变量,则以下不合法的赋值语句是( B )。A+x; By=(x%2)/10; Cx*=y+8; Dx=y=0;9以下格式符中,不能用来输入实型数的是( B )Af Be(E) Cg(G) Dx10. 若float num=123.456,以%+10.4d的格式输出,结果正确的是( B )A123. B 123.4560 C123.4560D+123.4560二、填空题1以下程序的输出结果是 x=1 y=2 *sum*=3 10 squaredis :100 。main() int x=1,y=2;printf(x=%d y=%d *sum*=%dn,x,y,x+y
11、);printf(10 squared is :%dn,10*10);2以下程序的输出结果是 a=325 x= 3.14 。main() int a=325;double x=3.;printf(a=%2d x=%7.2fn,a,x);3假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空:a+=b ; b=a-b ;a-=b ;4若x为int型变量,则执行以下语句后x的值是 -14 。x=7;x+=x-=x+x;5C语句可以分为五类,含 7 种控制语句、 声明 语句、 表达式 语句、空语句和复合语句。6赋值语句是由 赋值表达式 加上一个分号构成。7a=12,n=5
12、,表达式a%=(n%=2)值是 0 。8有一个输入函数scanf(%d,k);则不能使float类型变量k得到正确数值的原因是 k前无& 和 %d与k的类型不一致 。9putchar()函数可以向终端输出一个 字符 。10已有定义int i,j;float x;为将-10赋给 i,12赋给 j,410.34赋给x,则对应以下scanf()函数调用语句的数据输入形式是 -12 C 410.34 。scanf(%o%x%e,&i,&j,&x);11pirntf()函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大于5,则 按实际宽度输出 。12使用getchar()和put
13、char()函数必须在源程序中加 #includestdio.h 。习 题 四一、选择题1执行下面的程序段后,b的值为( B )。int x=35;char z=A;int b;b=(x&15)&(zb)(n-cd)后n的值为( B )。A.1 B2 C3 D43若k是int型变量,且有下面的程序段,输出结果是( A )。K=3;if(k=0) printf(#);else printf(&);A# B&C#& D有语法错误,无输出结果4设A、B和C都是int型变量,且A=3,B=4,C=5,则下面表达式中值为0的达式是( D )。 AA&B BA=BCAB+CB D!(AB)&!C1)5阅读
14、程序:#includestdio.hmain() float x,y;scanf(f,&x);if(x0.0) y=0.0;else if(x5.0)&(x!=2.0)y=1.0(x+2.0);else if(x10.0) y=1.0x;else y=10.0;printf(fn,y);若运行时从键盘上输入2.0,则上面程序的输出结果是( C )A0. B0. C0. D1.6阅读程序:#includestdio.hmain() int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y) case 0:a+;break;case 1:b+;break;case
15、 2:a+;b+;break;printf(a=d,b=dn,a,b);上面程序输出结果是( A )。Aa=2,b=l Ba=l,b=l Ca=l,b=0 Da=2,b=27下面程序的输出是(C )。main( ) int a=1,b=4,k;k=(a+=0)&(!(b-=y)&(y=z) B(x=y)AND(y=z)C(x=y=z) D(x=y)&(y=z)9若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( D )。Aa0 B!a Ca=0 Da10若有以下定义:float x; int a,b;则正确的switch语句是(D )。Aswitch(x)case
16、 1.0:printf(*n);case2.0:printf(*n);Bswitch(x)case 1,2:printf(*n);case 3:printf(*n);Cswitch(a+B) case 1:printf(n);case 1+2:printf(*n);Dswitch(a+b);case 1:printf(*n);case 2:printf(*n);11.下列语句中,错误的是(C )。Awhile(a=b)a+; Bwhile(0); Cdo Ddo printf(“okn”); x+;while(x=5) while(-x=0); 12. 执行语句:for(i=1;i+8;y=+
17、i)printf(%d %d,x-,y);A10 1 9 2 B9 8 7 6 C10 9 9 0 D10 10 9 114. 以下for语句的循环次数为:( B )。int i=0,j=0;for(;!j&i=5;i+)j+;A5次 B1次 C6次 D无限多次15. 以下程序段中内嵌循环共被执行的次数为:( A )for(i=5;i;i-)for(j=0;jA&ch=Z)? (ch+32):ch该表达式的值是 A 。2若已知a=10,b=20,则表达式“!ab”的值为 1 。3已知a=10,b=20,c=30,则表达式a=25&b-=2&c+?printf(*a=d,b=d,C=dn,a,b
18、,c):printf(#a=d,b=d,C=dn,a,b,c);的值为 #a=10,b=19,c=30 。4下面程序的输出结果是 0,0,4 。main() int a=-1,b=4,k; k=(+a=0);printf(dddn,k,a,b);5假定所有变量均已正确说明,下列程序段运行后,x的值是 4 。a=b=c=0; x=35; if(!a) x-;else if(b); if(c) x=3;else x=4;6若执行下面的程序时,从键盘上输入3和4,则输出结果是 3 。main( ) int a,b,s;scanf(dd,&a,&b);s=a;if(a&b) printf(dn,s);
19、 else printf(dn,s-);7以下程序的输出结果是 x=11,i=11 。main() int x=1,i=1;for(;x=10)break;if(x%2!=1)x+=3;continue;x-=1;printf(x=%d,i=%dn,x,i); 8以下程序的输出结果是 i=9,j=10 。main() int i=10,j=0;doj=j+i; i-;while(ij);printf(i=%d,j=%dn,i,j);9以下程序的输出结果是 35 。main() int m=7,n=5,i=1;doif(i%m=0)if(i%n=0)printf(“%dn”,i);break;i
20、+;while(i!=0);10以下程序的输出结果是 1,-2 。main() int x=3;doprintf(%d,x-=2);while(!(-x);11以下程序的输出结果是 i=4,j=6 。main() int i,j; for(i=0;i5;i+) for(j=1;j10;j+) if(j=6) break; if(i3)break;printf(i=%d,j=%dn,i,j);习 题 五一、选择题1下列为一维数组初始化时, 正确的是( D ).Aint a 1,3,5,7,9,15;Bint a5 ;Cint a55*3; Dint a50;2下列一维数组说明中,正确的是( A
21、).A#define M 10 Bint m;float sM; scanf(“%d”,&m);float am;Cint m=10, am; Dint a ;3若要将2,4,6,8存入数组a中,不正确的是( C ).Aint a4=2,4,6,8; Bint a =2,4,6,8;Cint a4; a=2,4,6,8; Dint a4; a0=2;a1=4,a2=6;a3=8;4若有说明: int a55; 则对数组元素的正确引用是( C ).Aa3+23 Ba0,3 Ca41+2 Da 25下列二维数组初始化中,错误的是( A ).Aint a2 =3,4,5; Bint a3=2,3,4
22、,5,6,7;Cint a33=0; Dint a54=1,2,2,3,3,4,4,5;6若有以下数组定义: char ch=book_120n; 则数组ch的存储长度是(D )。A7 B.8 C.9 D.107以下程序段的输出结果是( A ).char str8=a,b,c,d,0,y,z,0;printf(%s,str);Aabcd Babcd yz Cabcdyz D出错8设有如下定义: char s120=tianjin, s210=beijing;执行语句:strcpy(s1+4,s2); printf(%s,s1);后,输出结果是( B ).Atian Btianbeijing C
23、tianjinbeijing Dtianbeij9合法的数组定义是( B )Aint a string; Bint a 0, 1, 2, 3, 4, 5;Cchar astring; Dchar a 0, 1, 2, 3, 4, 5;10若有以下说明,则数值为4的表达式是( D )int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c=a,d,g;Aag-c Ba4 Cad-c Dad-c11.下列语句中,正确的是( D )Achar a3 =abc, I; Bchar a 3abc, I;Cchar a3 = a, I; Dchar a 3abc, I;12.设有
24、如下定义,则正确的叙述为( C )char x=abcdefg;char y=a,b,c,d,e,f,g;A数组x和数组y等价 B数组x和数组y的长度相同C数组x的长度大于数组y的长度 D数组x的长度小于数组y的长度二、填空题1设有定义语句“int a34=1, 2, 3”,则a11值为 0 ,a21的值为 0 。2执行“int b5= , a 3=1, 2, 3, 4, 5, 6”后,b4= 0 ,a12= 6 。3下面程序的功能是输出数组s中最大元素的下标,请填空。main() int k,p;int s=1,-9,7,2,-10,3;for(p=0,k=p;psk) printf(%dn
25、,k);4下面程序的功能是将一个字符串str的内容颠倒过来,请填空。#includestring.hmain () int i,j, k ;char str = ; for(i=0,j=strlen(str) /2 ; ij; i+,j-) k=stri; stri=strj;strj=k;5下面程序求方阵的主对角线元素乘积,请填空。#includemain() int a55,i,j,ss;printf(input data:);for(i=0;i5;i+)for(j=0;j5;j+)scanf(%d,&aij);ss= 1 ;for(i=0;i5;i+)ss= ss* aij ;print
26、f(ss=%dn,ss);6以下程序求任意10个实数的最大值和最小值。#includemain() int i;float a10,max,min;for(i=0;i10;i+)scanf(%f,&ai);max=min=a0;for(i=1;i10;i+) if(maxai) min=ai ;printf(最大值=%fn,max);printf(最小值=%fn,min);7以下程序求二维数组中每行元素的最大值。#include #define M 4#define N 5main() int aMN,amax,i,j; for(i=0;iM;i+) for(j=0;jN;j+) scanf(
27、”%d”,&aij); for(i=0;iM;i+) amax=ai0 ; for(j=1;jamax) amax=aij; printf(%d %dn,i,amax); 习 题 六一、选择题1以下叙述不正确的是( D )。A一个C源程序可由一个或多个函数组成 B一个C源程序必须包含一个main()函数CC程序的基本组成单位是函数 DC程序中的注释说明只能位于一条语句的后面2以下关于C语言函数参数的说法不正确的是( B )。A实参可以是常量、变量或表达式B形参可以是常量、变量或表达式C实参可以为任意类型D形参应与其对应的实参类型一致3C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式
28、是( C )。A地址传递 B由实参传给形参再由形参传回给实参C单向值传递 D由用户指定传递方式4C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。Afloat型 Bint型Clong型 Ddouble型5C语言规定,函数返回值的类型是由( D )。Areturn语句中的表达式类型所决定B调用该函数时的主调函数类型所决定C调用该函数时系统临时决定D定义函数时所指定的函数类型所决定6在C语言程序中,以下正确的描述是( C )。A函数可以嵌套定义,但不可以嵌套调用B函数的定义和调用均可以嵌套C函数不可以嵌套定义,但可以嵌套调用 D函数的定义和调用均不可以嵌套7若用数组名作为函数调用的
29、实参,传递给形参的是( A )。A数组的首地址B数组第一个元素的值 C数组中全部元素的值D数组元素的个数8如果在一个函数中的复合语句中定义了一个变量,以下关于该变量正确的说法是( A )。A只在该复合语句中有效 B在该函数中有效C在本程序范围内均有效 D为非法变量9以下不正确的说法为( D )。A在不同函数中可以使用相同名字的变量B形式参数是局部变量C在函数内定义的变量只在本函数范围内有效D在函数内的复合语句中定义的变量在本函数范围内有效10以下程序的正确运行结果是( A )。#includemain() int k=4,m=1,p;p=func(k,m);printf(%d,p);p=fun
30、c(k,m);printf(%dn,p);func(int a,int b) static int m=0,i=2;i+=m+1;m=i+a+b;return(m);A8,17 B8,16 C8,20 D8,811在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(尖括号)括起时,寻找被包含的文件的方式是( C )。A仅仅搜索当前目录 B先在源程序所在目录搜索,再按系统设定的标准方式搜索C直接按系统设定的标准方式搜索目录 D仅仅搜索源程序所在目录12以下程序的正确运行结果是( A )。int d=1;fun(int p) int d=5;d+=p+;printf(%d,d)
31、;main() int a=3;fun(a);d+=a+;printf(%dn,d);A84B99C95 D4413若有以下调用语句,则不正确的fun()函数的首部是( D )。main() int a50,n;fun(n,&a9);Avoid fun(int m,int x ) Bvoid fun(int s,int h41)Cvoid fun(int p,int *s) Dvoid fun(int n,int a)14下面的程序执行后输出的结果是( A )。f(int a) int b=0;static int c=3;b+;c+;return(a+b+c);main() int a=2,
32、i;for(i=0;i3;i+) printf(%d ,f(a);A7 8 9 B7 9 11C7 10 13 D7 7 7 15以下程序执行后的输出结果是( B )。int a, b;void fun() a=100;b=200; main() int a=5,b=7;fun();printf(%d,%d n, a,b);A100,200 B5,7C200,100 D7,516下列不属于编译预处理的是( D )。A包含文件B条件编译C宏定义D连接17下列语句中正确的是( D )。A#define MYNAME=ABCB#include string.hCfor(i=0;i10;i+);D#i
33、nclude 18下列语句中错误的是( A )。A#define PI3.B#include math.hCif(2);Dfor(;)if(1)break;19设有以下宏定义,则执行语句“z=2*(N+Y(5+1);”后,z的值为( B )。#define N 3#define Y(n) (N+1)*n)A出错B42C48D5420以下程序中的for循环执行的次数是( C )。#include stdio.h#define N 2#define M N+1#define NUM (M+1)*M/2main() int i,n=0; for(i=1;i=NUM;i+)printf(n);A5B6
34、C8D9二、填空题1C语言中的函数,从能否可以返回值上可分为 有返回值 函数和 无返回值 函数。2定义函数时,在函数头中除有函数名称外,还应有 函数类型 、 参数类型 和 名称 等信息。3必须对函数 定义 才能确立函数可实现的功能,只有对函数 调用 才能实现函数的功能。4C语言中,函数的调用有 函数语句 、 函数表达式 和 函数实参 三种方式。5C语言中,每个变量都有作用域和生存期,变量的作用域是 变量有效范围 ,变量的生存期是 变量作用域 。6对函数或变量的 声明 是告诉系统此程序段要用到在其后面才定义的函数或变量,使函数或变量的作用域得以扩展。7C语言中,变量的存储类型有 4 种,存储方式有 2 种。8以下程序的输出结果是 246 。void fun() static int a=0; a+=2;printf(%d,a); main() int cc; for(cc=1;cc4;cc+) fun() printf(n); 9以下程序的运行结果是 111 。main() increment();increment();increment();increme