C语言练习题.docx
- 文档编号:15957852
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:79
- 大小:282.53KB
C语言练习题.docx
《C语言练习题.docx》由会员分享,可在线阅读,更多相关《C语言练习题.docx(79页珍藏版)》请在冰点文库上搜索。
C语言练习题
C语言练习题一
一、填空题。
(每空1分,共10分)
1.语句while(e==0):
中的条件e==0等价于_____________;答案:
!
e
2printf(“%4s”,“beijing”);输出为:
_____________;答案:
beijing
3.C语言中的字符串以字符_____________;答案:
答案:
\0
4.C语言可以处理的文件类型是_____________和_____________;答案:
文本文件和二进制文件
5.int(*P)[5];说明p是:
_____________;答案:
指向一维整形数组的指针变量
6.函数直接或间接地调用自己,被称为函数的_____________;答案:
递归
7.若有staticintx[5],x[4]的地址表示是:
___________。
答案:
&x[4]或x+4
8.有程序段如下:
intx=l:
while(x<=lO)
{x+=3;printf(“%d\n”,x);}
则:
函数printf()执行次数是____4_____,循环结束后X的值是___________。
答案:
13
9.若有以下定义和语句,则sizeof(a)的值是_____,答案:
12,而sizeof(b)的值是__。
答案:
4
struct{intday;charmonth;intyear;}a,*b;
10.若有staticcharc[10]=“China”;执行该语句后
c[1]=___________。
答案:
hc[5]=___________。
答案:
\0
c[6]=___________。
答案:
\0strlen(c)=___________。
答案:
5
11.若有Staticcharc[s]={’a’,’b’,’\0’(零),‘c’,‘d’};
printf(“%s\n”,c):
则输出内容为:
___________。
答案:
ab
12.下面程序把从终端读人的10个整数以二进制方式写到一个名为bi.dat的新文件中。
请填空。
#include
FILE*fp;
main()
{
inti,j;
if((fp=fopen(___________,”wb“))==NULL)答案:
bi.dat
exit(0):
。
for(i=0;i { scanf(”%d”,&j): fwrite(&j,sizeof(int),1,________);答案: fp fclose(fp);} } 13.在C语言中,实现循环的语句有: if---goto语句、while语句、_do…while___语句和for语句。 14.在递规函数中,一定要有______结束_____递归调用的语句。 15.数组inta[8]的第四个元素是__a[3]____。 16.根据函数能否被其它源文件中的函数调用,将函数分为内部函数和_外部函数。 17.执行以下程序后,其输出结果为____9______ #include"stdio.h" #defineMAX(a,b)(a)>(b)? (a): (b) main() {printf("%d",MAX(5+4,1+3)); return (1); } 18.结构化程序设计的基本结构有三种,分别是顺序结构、分支结构和__循环____结构。 二、判断题。 (每题1分,共10分) (×)1.在C语言中,continue语句的作用是结束循环语句的执行。 break (×)2.2/3*3的值是2。 0 (×)3,5<<2+1的值是21。 <<左移运算符,4 (×)4.! ! 6的值为6。 (×)5.printf(”%O”,12);输出为12。 (×)6.doswhile(3>2): 中s必执行无穷多次。 (×)7.两个指向整型的指针变量可以做减法运算。 (×)8.语句if3>10printf("why”);是正确的C语句。 () (√)9,inti,*P=&i: 是正确的C说明。 (√)10.unsigned和void在C中都是保留字。 (×)11.C语言允许函数的类型: Long类型可以缺省。 (×)12.字符型数据和实型数据之间可以通用。 (×)13.当从键盘输入数据时,整型变量只能输入整型数,实型变量只能输入实型数。 (×)14.语句inta[5]={1,2,3,4,5},是合法的。 ; (×)15.逗号表达式是没有值和类型的。 (×)16.用数组名作为函数的实参,传递给形参的是数组第一个元素的值。 首地址 (×)17.若有inti=O: 则执行while(i=10)printf(“? ”);无任何输出。 (√)18.任何字都可以用转义序列的方法来表示。 (√)19.C语言中字符(char)型数在内存中以ASCII码形式存储,而整型(int)数据以补码形式存储。 (√)20.return语句中的表达式可以不加括号。 三、选择题。 (每题2分,共10分) 1.题1.1一个C程序的执行时从_____。 答案: (A) A)本程序的main函数开始,到main函数结束 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 2.题1.4C语言规定: 在一个源程序中,main函数的位置_____。 答案: (C) A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在后面 3.题2.1在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为__。 答案: A A)char B)char=int C)char D)char=int=longint<=float 4.题2.3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是_____。 答案: B A)7B)8C)6D)2 5.题2.14下面正确的字符常量是_____。 答案: C A)“c”B)‘\\’’C)‘W’D)‘’ 6.题2.23以下不正确的叙述是_____。 答案: D A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在执行了复制表达式a=b后b中的值将放入a中,而b中的值不变。 D)当从键盘输入数据时,对于整形变量只能输入整形数值,对于实型变量只能输入实型数值。 7.题2.26已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’+’6’-‘3’;后,c2中的值为_____。 答案: A A)DB)68C)不确定的值D)C 8.题2.27在C语言中,要求运算数必须是整型的运算符是_____。 答案: D A)/B)++C)! =D)% 9.题2.29在C语言中,int、char和short三种类型数据在内存中所占用的字节数_____。 答案: D A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定 10.题2.42若有以下定义,则能使值为3的表达式是_____。 答案: C intk=7,x=12; A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5) 11.题3.1putchar函数可以向终端输出一个_____。 答案: D A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值 12.题3.9已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是_____。 答案: C A)10A┗┛20B 13.题3.19以下能正确地定义整型变量a,b和c并为其赋初值5的语句是_____。 答案: A A)inta=b=c=5; B)inta,b,c=5; C)a=5,b=5,c=5; D)a=b=c=5; 14.题3.24设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y和z的值是____。 答案: A A)x=10y=15z=10 B)x=10y=10z=10 C)x=10y=10z=15 D)x=10y=5z=10 15.题4.1逻辑运算符两侧运算对象的数据类型_____。 答案: D A)只能是0和1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 16.题4.2以下关于运算符优先顺序的描述中正确的是_____。 答案: C A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 17.题4.5表示图中坐标轴上阴影部分的正确表达式是_____。 答案: C A)(x<=a)&&(x>=b)&&(x<=c) B)(x<=a)||(b<=x<=c) C)(x<=a)||(x>=b)&&(x<=c) D)(x<=a)&&(b<=x<=c) 18.题4.10设有: inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为_____。 答案: B A)1B)2C)3D)4 19.题4.25为了避免在嵌套的条件语句if—else中产生二义性,C语言规定: else子句总是与_____配对。 答案: B A)缩排位置相同的if B)其之前最近的if C)其之后最近的 D)同一行上的if 20.题5.3语句while(! E);中的表达式! E等价于_____。 答案: A A)E==0B)E! =1C)E! =0D)E==1 21.题5.44以下正确的描述是_____。 答案: B A)continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时,只能使用goto语句 22.题6.1在C语言中,引用数组元素时,其数组下标的数据类型允许是_____。 答案: C A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式 23.题6.5以下能对一维数组a进行正确初始化的语句是_____。 答案: C A)inta[10]=(0,0,0,0,0); B)inta[10]={}; C)inta[]={0}; D)inta[10]={10*1}; 24.题7.9C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是_____。 答案: B A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式 25.题7.27凡是函数中未指定存储类别的局部变量,其隐含的存储类别为_____。 答案: A A)自动(auto) B)静态(static) C)外部(extern) D)寄存器(register) 26.题8.8C语言的编译系统对宏命令的处理是_____。 答案: D A)在程序运行时进行的 B)在程序连接时进行的 C)和C程序中的其它语句同时进行编译的 D)在对源程序中其它成份正式编译之前进行 27.题9.9变量的指针,其含义是指该变量的_____。 答案: B A)值B)地址C)名D)一个标志 28.题10.2当说明一个结构体变量时系统分配给它的内存是_____。 答案: A A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 29.题11.10若x=2,y=3则x&y的结果是_____。 答案: B A)0B)2C)3D)5例如: 9&5可写算式如下: 00001001(9的二进制补码)&00000101(5的二进制补码) 00000001(1的二进制补码)可见9&5=1。 30.题12.10fwrite函数的一般调用形式是_____。 答案: D A)fwrite(buffer,count,size,fp); B)fwrite(fp,size,count,buffer); C)fwrite(fp,count,size,buffer); D)fwrite(buffer,size,count,fp); 31.表达式(float)(5/2)>2.4的值为(A): 5/2得2;(float) (2)得2.0;2.0>2.4得false;false即0 A.0B.1C.trueD。 false 32.若说明inta=l0,b=15;则表达式20*a a: b;的值为(B): A.10B.15C.200D.300 33.以下程序运行后,输出结果为(C): #include #include fun(char*w,intn) {chart,*s1,*s2; s1=w;s2=w+n-1; while(s1 {t=*s1++; *s1=*s2--; *s2=t; }} main() {charp[20]="1234567"; fun(p,strlen(p)); puts(p); } A)123567B)7654321C)1711717D)7177171 34.若有如下说明,则strlen(s1)+strlen(s2)的值为(A): staticchars1[5]={’a’,’b’,’\n’,’\0’(零),’c’}; staticchars2[]=“string”; A)9B)8C)12D)1l 35.若说明intx=0,y=2;则语句if(x=O)y++;执行后y的值为(B): A)1B)2C)3D)4 36.i=10;则执行i&&(i=0)&&(++i);后i的值为(B): A)10B)0C)1D)11 37.若说明inta=1,b=2,c=3: 表达式a =0的值为(B): A)0B)1C)2D)3 38.有以下程序,其for语句中循环体执行的次数是(C): #include #defineN2 #defineMN+1 #defineNUM(M+1)*M/2 main() {inti,n=0; for(i=1;i<=NUM;i++) {n++; printf("%d",n); } printf("\n"); } A)5B)6C)8D)9 39.以下程序执行后,a的值是为(C): #include main() {inta,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf("%d\n",a); A)4B)1C)0D)运行时出错,a无定值 40.下列变量名中合法的是(A) (A)_6a7b(B)55x6(C)m.*.Tom(D)+[ABC] 41.整型变量x=1,y=3,z=5,有如下几个表达式: (1)x=(x=1+2,z*2,9) (2)x=y>2? 9: (10-z) (3)x=y*4/2+z-z%3 (4)x=9-(--y)-(--y) 上面有(C)个表达式的计算结果相同。 (A)1(B)2(C)3(D)4 42. 5.有单精度变量x和y=12.5,表达式: x=3*(int)y+((int)y)%4执行后,x的值为(D) (A)36.500000(B)37.500000(C)39.500000(D)36.000000 43.为表示关系xyz,正确的C语言表达式是(A) (A)(x>=y)&&(y>=z)(B)(x>=y)AND(y>=z) (C)(xyz)(D)(xy)&(yz) 44.变量在程序中的应用很灵活,下面的说法中(A)是正确的 (A)变量在引用之前要定义其存储的数据类型 (B)整型变量和指向整型变量的指针实际上没有太多区别 (C)指针不能指向指针变量,否则逻辑出错 (D)只有有限的变量可以通过指针来引用,因此要注意指针的用法 45.有如下代码: #include“stdio.h” main() {intj=1,k=5,m; while(j>0) {m=k+j; k--; j++; printf(“%d\n”,j); } } 根据运行结果,下面说法正确的是(A)。 (A).此程序由于j的起始值为1,循环条件为j>0,在循环体中又有j++语句,因此,此程序为无法休止的循环 (B)由于程序中有k—语句,这样,k的值在某个运算时刻会小于0,根据循环条件,此循环将由于k值变化,运行终止 (C)此程序可以正常结束 (D)此程序有语法逻辑问题,编译无法通过 46.有如下的函数调用语句,则fun1的实际参数的个数是(A) fun1(fun2(x,y),(x,y),z=x+y); (A)3(B)7(C)4(D)5 47.下面说法中正确的是(C): (A)宏定义,定义了一个变量,这个变量的值在整个程序的运行过程中是不变的 (B)全局变量定义了一个变量,这个变量的值在整个程序的运行过程中是不变的 (C)全局变量和宏定义的概念是不一样的,他们之间有质的区别 (D)全局变量和宏定义的概念基本是一样的,可以混合使用 48.关于结构体,下面说法中正确的是(D): (A)结构体数组的元素只能是整型数 (B)如果把一个结构体嵌套到另一个结构体中,那么这个结构体成员除整型、实型数据外,其他的不能使用,尤其不能用字符型数据 (C)指针不能指向结构体 (D)结构体可以嵌套定义,如把一个结构体嵌套到另一个结构体中 49.下面说法正确的是(C) (A)结构体数组与整型数组类似,所有数据的个数就是数组的长度 (B)结构体数组中的每个数组元素拥有的成员,其数据类型是一致的 (C)结构体数组中的每个数组元素拥有的成员,其数据类型不一定一致 (D)由于结构体比较复杂,结构体数组中的每个数组元素拥有的成员的数据类型无法确定 50.字符型常量在内存中存放的是(A) (A)ASCII码(B)BCD代码 (C)内部码(D)十进制码 51. 4.单精度变量x=3.0,y=4.0,下列表达式中y的值为10.0的是(B) (A)y/=x*27/4(B)y+=x+3.0 (C)y-=x+8.0(D)y*=x-3.0 52.有一字符型变量str,欲判断str是否为一小写字母,下列正确的方法为(D) (A)if(str>=65&&str<=90)(B)if(str<=97) (C)if(str>=122)(D)if(str<=122&&str>=97) 53.以下说法中不正确的是(A) (A)在C语言程序中,main()函数可以根据需要定义多个 (B)C语言程序总是从main()函数开始执行 (C)C语言程序中某些变量可以定义在main()函数之前 (D)C语言程序中的main()函数可以出现在任何函数后面 54.函数fopen()的第一个参数是文件名(可带路径),下面哪一个选项作此参数在格式上完全正确(B) (A)“e: \aaa\\file”(B)“c: \\ccc\\file” (C)“f: \\\bbb\\\file”(D)“d: \\ddd\file” 55.下面说法中正确的是(A) (A)一个数组只允许存储同种类型的变量。 (B)在对数组进行初始化时,若给定的数据元素个数比数组长度值大时,多余的数组元素会被自动初始化为0。 (C)由于数组名为常量,因此,不能给数组名赋任何形式的量。 (D)当为数组赋值时,数组获得它在系统中的首地址。 56.关于函数调用,下面说法正确的是(B) (A)函数的嵌套调用必须有结束嵌套调用的条件判断语句。 (B)在函数的调用过程中,能直接或间接调用函数的本身。 (C)递归调用就是随便调用一个已经定义的函数。 (B)在函数的调用过程中,不能直接或间接调用函数的本身。 57.下列说法中正确的是(D) (A)枚举类型中的枚举元素由变量构成。 (B)枚举类型的枚举元素只能从0开始,以1为步长递增。 (C)可以用枚举类型数据定义联合体。 (D)一个2字节的整型数不能直接赋给一个枚举型变量。 58.关于联合体,下面说法正确的是(D) (A)联合体可以很方便地嵌套到结构体中,不过嵌套数量只能有3个。 (B)联合体就是联合了大量数据的一种结构体,不过只有联合体中的成员只有第一个初始化的有效。 (C)联合体成员个数有一定限制,一般不超过8个二进制位。 (D)以上说法都不对。 59.下面说法正确的是(A) (A)如果指针型变量做函数的实参,那么形参也必须是指针型变量。 (B)函数的形参,其数据类型要一致,至于形参个数,没有严格限制。 (C)形参中如果有不同类型的参数,要按字节数大小排列,如字符型排在前面,其次是整型,然后是实型等,这样便于数据的管理。 (D)以上说法都不对。 60.在C语言中,如果下面的变量都是int类型,则输出的结果是(A) sum=pad=5;pad=sum++,pad++,++pad; printf(“%d\n”,pad); A)7B)6C)5D)4 61.以下程序的输出结果是(B) #include main(){ inti=010,j=10; printf(“%d,%d\n”,++i,j--); } A)11,10B)9,10C)010,9D)10,9 62.已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是(B) #include main() charc1=‘A’,C2=‘Y’; printf(“%d,%d\n”,c1,c2); A)因输出格式不合法,输出错误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题
![提示](https://static.bingdoc.com/images/bang_tan.gif)