还剩68页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
1.
1.2C语言基础一单项选择题
1.下列变量定义中合法的是_____A.int_b=1—.e—3;B.doubleb=2—6e
5.5;C.longx=
8.8;D.float2_and=1—e—4;答案C
2.运算符有优先级,在C语言中关于运算符优先级的正确叙述是_____A.算术运算符高于赋值运算符,赋值运算符高于位运算符B.算术运算符高于双目位运算符,位运算符高于赋值运算符C位运算符高于算术运算符,算术运算符高于赋值运算符D.赋值运算符高于位运算符,位运算符高于算术运算符答案B
3.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的是_____A.任何不同数据类型都不可以通用B.有些不同类型的变量可以在同一个表达式中运算C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型D.同一个运算符号在不同场合可以有不同的定义答案A
4.以下选项中属于C语言的数据类型是_____A.复数型B.逻辑型C.双精度型D.集合型答案C
5.设有说明语句charm=’\63’;则变量m____A.包含1字符B.包含2个字符C.包含3字符D.说明不合法答案A
6.下列常数中不能作为C语言的常量是_____A.0X—3C.3e5D.0683答案D
7.在C语言中,数字031是一个_____A.八进制数B.十六进制数C.十进制数D.非法数答案A
8.下列可以正确表示字符型常量的是_____A.'a'B.'\t'C.'\n'D.'\185'答案B
9.设有inta=9;则表达式(++a*2/3)的值是__________A.6B.7C.
6.6D.0答案A
10.已知inta;floatf;正确的表达式是__________A.intf%aB.intf%aC.intf%aD.intf%a答案D11.设有以下变量定义,并已赋确定的值,则表达式x-y+a/b值的数据类型为__________charx;inty;floata;doubleb;A.charB.intC.floatD.double答案D12.已知inti,a;执行语句i=a=3*9a/5a+11;变量i的值是__________A.5B.16C.27D.38答案A13.已知inti=4;执行语句i+=--i;i的值是__________A.3B.6C.8D.以上都不对答案B
14.下列运算符优先级最高的是__________A.^B.+C.D.|答案B15.已知floatx=2y;则y=x++*x++的结果为__________A.y=4B.y=6C.y=2D.表达式是错误的答案A
16.设char型变量x中的值为二进制10100111,则表达式2+x^~3的值是__________A.10101001B.10101000C.11111101D.01010101答案D17.整型变量x和y的值相等且非零值,则以下选项中,结果为零的表达式是__________A.x||yB.x|yC.xyD.x^y答案D
18.设intb=8;表达式b2/b1的值是___________A.0B.2C.4D.8答案A
19.若定义unsignedinta=3b=10;printf“%d\n”a2|b==1;则运行结果为___________A.13B.12C.8D.14答案B
20.有如下程序段,执行该程序后x的值为___________inta=14b=15x;charc=’A’;x=abc^’B’;A.14B.15C.0D.2答案D
21.若变量abt已定义,能正确交换ab值的语句组是___________A.a=b;b=t;t=aB.a=t;t=b;b=aC.a=a+b;b=a-b;a=a+bD.a=a^b;b=a^b;a=a^b答案D
22.在C语言中,设一表达式中包含有intlongchar和unsigned类型的变量和数据,则这4种类型数据转换的规则是___________A.int→unsigned→long→charB.char→int→long→unsignedC.char→int→unsigned→longD.int→char→unsigned→long答案C
23.若变量a是int类型,执行语句a=’A’+
1.6;后,正确的叙述是___________A.a的值是字符CB.a的值是浮点型C.不允许字符型和浮点型相加D.a的值是字符’A’的ASCII值加上1答案D
24.以下描述中不属于C语言类型的是___________A.signedshortintB.unsignedlongintC.unsignedintD.longfloat答案D
25.设有定义longa=-123456L;则以下能够正确输出变量a值的语句是___________A.printf“a=%d1\n”a;B.printf“a=%1d\n”a;C.printf“a=%8dL\n”a;D.printf“a=%LD\n”a;答案B
二、填空题1.在C语言程序中,用关键词__定义基本整形变量,用关键词__定义单精度实型变量,用关键词__定义双精度实型变量答案intfloatdouble
2.若K为int整形变量且赋值18,则y=k++;后y的值为__,变量k的值为__答案18193.在C语言中整数可用__进制数、__进制数和__进制数三种数制表示答案十八十六
4.设变量a的二进制是00101101,若想用通过运算a^b使a的高4位不变,低4位取反,则b的二进制数应是__答案
000011115.运用位运算,能将变量ch中的大写字母转换成小写字母的表达式是__答案ch^32或ch|
326.能将两个字节变量x的低8位置全1,高字节保持不变的表达式是__答案x|
2557.若a为任意数,能将变量a清0的表达式是__答案a=a
08.把操作对象的二进制数向左移动n位,相当于对原来的数值__答案乘
9.根据储存长度的不同,c语言中的整型可分为基本类型﹑_____和长整型答案短整型
10.一个字符通常占用_____字节的内存空间答案
111.实型常量有两种表示方法:小数形式和_____答案指数形式
12.以_____开头的一个字符和一个数字序列,这类字符称为转义字符答案反斜杠\
13.一个变量有3个相关的要素变量名﹑_____和变量的值答案变量的储存单元
14.a%b的结果为a除以b的余数的符号与_____相同答案被除数
15.由算术运算符﹑括号以及操作对象组成的符合c语言语法规则的表达式称为_____答案算术表达式
16.C语言中按位异或运算符为______答案^
17.表达式a=5-3/2a*6a++10的值为______答案
1418.表达式35-4|5+2^7+~3的值为_____答案
119.表达式23-32的值为______答案
820.表达式-5|53的值为______答案-5顺序结构程序设计选择题.1.A.x+=y+2;Bx=y=z+10;C++z;Dx+y=z;答案D;
2.下面不是C的是_______.A.inti;B.;C.a=58b=58D.{;}答案C;
3.以下合法的C语言赋值语句是________A.a=b=58;B.k=a+b;C.a=
58.b=58;D.--i;答案D;
4.设xyz为整形变量,若从键盘给xyz输入数据,则正确的输入语句是________A.INPUTxyz;Bscanf“%d%d%d”xyz;C.scanf“%d%d%d”xyz;D.read“%d%d%d”xyz;答案B;
5.若变量以明确说明为int类型,要给abc输入数据,则正确的输入语句是_______A.scanf“%d%d%d”abc;B.scanf“%d%d%d”abc;C.scanf“%D%D%D”abc;D.scanf“%d%d%d”a;b;c;答案A;
6.设以下各变量均为int类型,则以下函数调用正确的是_______.Agetchar;B.putchar;C.putchar‘\108’;D.scanf“%d%d%*2d”a;b;答案A;
7.下列程序的输出结果是_________main{intx=023;prinf“%d\n”--x;}A.22B.23C18D.19答案C;
8.下列程序的输出结果是_________main{inta=1b=2;printf“%d\n”a=a+1a+6b+2;}A.2B.3C.4D.1答案A;
9.下列程序的输出结果是_________main{inta=1b=2;printf“%d\n”,(a=a+1a+6b+2);}A.2B.3C.4D.1答案C;
10.已知abc为float类型,执行语句scanf“%f%f%f”a,bc;使得a为10,b为20,c为30,则以下不正确的输入形式是__________.2030C/
10.0D
102020.
030.030答案B;11.若变量已正确定义,现要将a和b中的数据进行交换,下面不正确的是()A.a=a+bb=a-ba=a-bB.t=aa=bb=tC.a=t;t=b;b=aD.t=b;b=a;a=c答案C12.执行下列程序后输出结果是()main{inta=1b=2c=3;c=(a+=a+2)a=bb+3;printf“%d%d%d\n”abc;}A.224B.423C.425D.553答案A13.执行下面程序Main{Inta;Floatbc;Scanf“%2d%3f%4f”abc;Printf“\na=%db=%.1fc=%.1f\n”abc;}Aa=12b=345c=6543.B.a=12b=123c=1234C.a=12b=
345.0c=
6543.0D.a=
12.0b=
345.0c=
6543.0答案C14.执行下面程序Mian{Inta=3b=7;Printf“a=%%db=%%d\n”ab;}则输出结果是()A.a=%3b=%7Ba=%db=%dC.a=%%db=%%dD.a=3b=7答案B15.下面程序输出的结果是()#includestdio.hMian{Shorta=-1;Printtf“%hd%ho%hu\n”aaa;}A-1-1-1.B.-1-77777-32768C.-1177777-32768D.-117777765535答案D
16.下列程序执行后的输出结果是__________main{intx=’d’;printf“%c\n”’A’+x-‘a’+1;}A.GB.HC.ED.J答案C
17.若有以下程序段,执行后的输出结果是_____Inta=3;printf“%d\n”a+=a-=a*a;A.—6B.12C.0D.—12答案D
18.下列程序的输出结果是_________main{floatd=
2.2;Intxy;x=
6.2;y=x+
3.8/
5.0;printf“%d\n”d*y;}A.4B.随机数C.2D.0答案B
19.运行下面程序后,输出结果是__________main{inta=5b=3;printf“%d\n”a=a/b;}A.5B.1C.3D.2答案B
20.有以下程序,请问执行后的输出是_______main{inta=010b=10c=0x10;printf“%d%d%d”a--++bc++;}A.81016B.81116C.71017D.81017答案B填空
1.函数getchar的功能是____________其调用形式ch=getchar与_____________功能相同;函数outchar的功能是___________putcharch与_________功能相同这两个函数在使用的同时,都必须在main函数之前写入_________答案从键盘读入一个字符scanf“%c”ch在屏幕上输出一个字符Printf“%c”ch#includestdio.h
2.在printf函数中,“%d”表示________“%x”表示__________“%
7.2f”表示_________“%c”表示__________“%s”表示________“%o”表示__________.答案按十进制整数形式输出,有字符按十六进制整数形式输出,没有字符按十进制小数形式输出,输出的数据长度为7,有2位小数按字符形式输出一个字符按字符串形式输出一个字符串按八进制整数形式输出,没有字符
3.在scanf函数中,“%d”表示_______“%3d”表示_________“%*3d”表示____________“%c”表示__________.答案按十进制整数形式输入数据按十进制整数形式输入3位数据跳过3位十进制数据按字符形式输入一个字符
4.复合语句在语法上被认为是___________空语句的形式是____________c语言中,语句的标志是________.答案分程序;;
5.printf函数中用到格式%5s,其中5表示输出字符占5列,如果字符串长度大于5,则按________输出;如果字符串小于5,则按_________输出.答案实际宽度左边补空格
6.以下程序段的输出结果是Intx=0177;Printf“x=%3dx=%6dx=%60x=%6xx=%6u\n”xxxxx;答案x=127x=127x=177x=7fx=
1277.变量Ijk已经定义为int型并有初值0,用以下语句输入时scanf“%d”i;Scanf“%d”j;scanf“%d”k;当执行第一个输入语句,从键盘输入
12.3,则ijk的值分别是答案
1200.
8.执行以下程序运行结果为.#includestdio.hmain{Charx=’k’;Printf“%c\n”’A’+x-‘a’+1;}答案L_
9.执行以下程序,运行结果为Main{Charx=oxFF;Printf“%d\n”x--;}答案_-1_
10.执行以下程序,运行结果为{Inty=3x=3z=1;Printf“%d%d\n”++xy++z+2;}答案_3____3选择结构程序一单项选择题1.若x为int类型,则下面与逻辑表达式!x等价的C语言关系表达式是_____A.x==1B.x!=1C.x==0D.x!=0答案是__________答案是C2.能正确表示逻辑关系“a=5或a=—1”的C语言表达式是_____A.a=5ora=—1B.a=5|a=—1C.a=5a=—1D.a=5||a=—1答案是D3.If语句的控制条件是______A.只能用于关系表达式B.只能用于关系表达式或逻辑表达式C.只能用于逻辑表达式D.可以用任何表达式答案是D
4.设intx=2y=1;则表达式!x||y--的值是______A.0B.1C.2D.-1答案是B5.与y=x01:x0-1:0;的功能相同的if语句是_______A.ifx0y=1;B.ifxelseifx0y=-1;ifx0y=1;elsey==0;elseifx0y=-1;elsey=0;C.y=-1;D.y=0;ifxifx=0ifx0y=1;ifx0y=1;elseifx==0y=0;elsey=-1;elsey=-1;答案是A
6.假定w、x、y、z、m均为整形变量,且w=1,x=2,y=3z=4则执行语句(m=wxw:x;m=mym:y;m=mzm;z;后,m的值是_______A.4B.4C.2D.1答案是D
7.有如下程序段,执行该程序段后,x的值为______inta=14b=15x;charc=`A`;x=abc`B`;A.tureB.falseC.0D.1答案是D
8.设均为型变量,则执行语句x=y=2;t=++x||++y;后;y的值为________答案是BA.不确定B.2C.3D.1答案是B
9.若有定义floatw;intab;则合法的switch语句是_________答案是CA.swithwB.switcha;{case
1.0:printf“*\n”;{case1printf“*\n”;Case
2.0:printf“**\n”;}case2printf“**\n”;}C.swithbD.swithb{case1:printf“*\n”;{case1:printf“*\n”default:printf“\n”;case2printf“**\n”case1+2:printf“**\n”;}default:printf“\n”}答案是C
10.若给定条件表达(m)?(a++):a——则其中表达m和______等价A.m==0B.m==1C.m!=0D.m!=1答案是C
11.有如下程序,该程序胡输出结果是main{inta=3b=-1c=1;IfabIfb0c=0;elsec++;printf“%d\n”c;}A.0B.1C.2D.3答案是B
12.若变量c为charl类型,能正确判断出c为大写字母胡表达式是________A‘A’=C=’Z’Bc=‘A’||c=’z’c.‘a’=cand‘Z’=CDc=‘A’C=‘Z’答案是D
13.在C语言中,逻辑值“真”用()表示AtureB正数C非0整数D非0数答案是D
14.设abcdmn均为整型变量,且a=5b=7c=3d=8m=2n=2则逻辑表达式(m=ab)n=cd运算后,n的值为()A0B1C2D4答案是C
15.有如下程序,其输出胡结果是(C)main{floatx=
5.0y;ifx
0.0y=
0.0;elseifx
10.0y=
1.0/x;elsey=
1.0;printf“%f\n”y;}A.
0.000000B.
5.000000C.
0.200000D.
1.000000答案是C`
16.运行下面程序后,则输出结果是_________Main{inta=0b=1c=2d;d!=a!--b||!c++;printf“%d\n”c;}A.3B.2C.1D.0答案是:B
17.运行下面程序后,若从键盘输入58↙,则蔬输出结果是__________Main{intx;Scanf“%d”x;Ifx60printf“%d”x;Ifx40printf“%d”x;Ifx30printf“%d”x;A.585858B.5858C.58D.58答案B
18.运行下面程序后,输出结果是________Main{inta=16b=21m=0;Switcha%3{case0:m++;break;Case1:m++;Switcha%2{default:m++;Case0:m++;break;}}Printf“%d\n”ab;}A.1B.2C.3D.4答案是:C
19.下面程序输出的结果是__________Main{intx=5y=9z=1t;t=xy||xz;printf“%d\n”t’}A.1B.0C.5D.3答案是:A
20.下面程序输出的结果是__________Main{intx=1a=0b=0;Switchx{case0:b++;Case1:a++;Case2:a++b++;}Printf“a=%db=%d\n”ab;}A.a=2b=1B.a=1b=1C.a=1b=0D.a=2b=2答案是:A
21.以下程序输出的结果是________-Main{intIjka=3b=2;I=--a=b++—a:++b;J=a++k=b;Printf“i=%dj=%dk=%d\n”Ijk;}A.a=2j=1k=3B.i=1j=1k=2;C.i=4b=2k=4D.i=1j=1k=3答案是:D
22.下面说法中正确的是_______A.在switch语句中一定要使用break语句B.break语句是switch语句的一部分C.break语句只能用于switch语句D.在switch语句中不一定要使用break语句答案是D
23.有以下程序,若从键盘上输入7,则输入结果是_______main{intx;scanf“%d”x;ifx--7printf“%d”x;elseprintf“%d”x++}A.0B.6C.7D.8答案是B
24.以下程序输出结果是_______main{intm=5;ifm++5printf“%d\n”--m;elseprintf“%d\n”--m;}A.7B.6C.5D.4答案是C
25.当a=1b=3c=5d=4时,执行下面一段程序后,x的值为________if(ab)ifcdx=1;elseifacifbdx=2;elsex=3;elsex=6;elsex=7;A.1B.2C.3D.6答案是B
26.设inta=0b=0c=0;c=++a||b++;则abc的值分别是________A.0,1,0B.1,1,1C.1,1,0D.1,0,1答案是D
27.设inta=0b=0c=0;c=++ab++;则abc的值分别是_______A.0,1,0B.1,1,1C.1,1,0D.1,0,1答案是C
28.设inta=0b=0c=0;c=a++||b++;则abc的值分别是_______C.1,1,0D.1,0,1A.0,1,0B.1,1,1答案是C
29.设inta=0b=0c=0;c=a++b++;则abc的值分别是A.010B.111C.110D.100答案是D
30.最适合解决选择结构“若a=0则b=1;否则b=0”的语句是A.ifB.if——elseC.switchD.嵌套if——else答案是B二.填空题
1.在C语言中,逻辑“真”用表示,逻辑“假”用表示,逻辑表达式值为“真”是用表示的,逻辑表达式值为“假”用表示的在C语言中if语句中,用作判断的条件表示式答案是非0,0,1,0,任意表示式
2.if!ka=3;语句中的k可以改写为,使其功能不来变C语言中于嵌套if语句中规定else总是与配对答案是k==0,前一个if
3.设a=3b=4c=5写出下面逻辑表达式的值a+bcb==c的值是a||++cb-c的值是!ab!c||1的值是!x=ay=b0的值是!a+b+c-1b+c/2的值是答案是
011014.输入一个正整数,判断其若既是7的倍数又是8的倍数,则输出“正确”,否则输出“错误”,请填空#includestdio.hmain{intn;Printf“pleaseinputanumber:”Scanf“%d”n;If_____Printf“正确”;________Printf“错误”;}答案是n%7==0n%8==0或n%56==0else
5.完善程序,从键盘输入字符,若是数字字符,则转换成数字后显示出来#includestdio.hMain{intc;c=getchar;If_______________________;Printf“%d”c;}答案是c=`0`c=`9`c=c-`0`
6.能正确表示逻辑关系“1≤a≤5”的C语言表达式是_____________;能表述20x30或X-100的C语言表达式是____________答案是a=1a=5x20x30||x-
1007.若x为整型,表示x为奇数的表达式是___________________表示x为偶数的表达式是___________________.答案是x%2==1x%2==
08.设xt均为int型标量,则执行语句“x=10;t=xx10;”后,t的值为__________________.答案是
09.假定所有变量均已正确定义,则程序段Inta=0y=10;Ifa=0y--;elseifa0y++;elsey+=y;运行后y的值是_______________.答案是
2010.以下两条if语句可合并成一条if语句,既______________________________.ifa=bx=1;elsey=2;ifabprintf“***y=%d\n”y;elseprintf“***x=%d\n”x;答案是if(a=b)printf“***x=%d\n”x=1;elseprintf“***y=%d\n”y=2;循环结构程序
一、选择题
1.以下while循环中,循环体执的次数是_______t=1;while(--t)t=10;A.一次也不执行B.无限次C.10次D.一次答案A
2.语句x=3;do{printf“%d”x};x--;}whilex==0;的执行结果是______A.3210B.321C.3D.无任何显示答案C
3.若x是int型变量,以下程序段的输出结果是______For(x=3;x6;x++)printf((x%2)?(“**%d”)(“##%d\n”,x);A.**3B.##3C.##3D.**3##4##4**4**4##5**5**5##5答案D4.C语言中用于此结构化程序设计的三种基本结构是_____A.顺序结构、选择结构、循环结构B.if、switch、breakC.for、while、do-whileD.if、for、continue答案A5.对于下面的程序段,_____是正确的for(t=1;t=100,t++){scanf(“%d”,x);if(x0)continue;printf(“%3d”,x);}A.当x0时整个循环结束B.当x=0时什么也不输出C.printf函数永远也不执行D.最多允许输出100个非负整数答案A
6.while(!x)中(!x)与下面条件_____等价A.x==0B.x==1C.x!=1D.x!=0答案A7.在C语言中的循环语句for、while和do-while中,用于直接中断语句所在层循环的语句是____A.switchB.continueC.breakD.if答案C8.以下程序的输出结果是______main(){inty=10;for(;y0;y--)if(y%3==0){printf(“%d”,--y);continue;}}A.741B.852C.963D.875421答案A
9.下面程序段的运行结果是_____a=1;b=2;c=2;wwhileabc{T=a;a=b;b=t;c--;}printf“%d%d%d”abc;A.120B.210C.121D.211答案是A
10.设有程序段intk=10;whilek=0k=k-1;以下描述正确的是____A.循环体语句依次也不执行B.循环是无限循环C.while循环语句执行十次D.循环体语句执行一次答案是A11.下面程序的运行结果是_____.#include“stdio.h”main{inta=1b=10;do{b-+a;a++;}whileb--0;Pritf“a=%db=%d\n”ab;}A.a=3b=11B.a=4b=9c.a=1n=-1D.a=2b=8答案是D
12.下面程序段的运行结果是_____.A=1;b=2;c=2;Ifabc{t=a;a=b;bt;c--;}printf“%d%dabc;A.120B.210C.121D.211答案是D
13.设有如下程序,运行结果是______main{inty=10;for;y0;y--ify%3==0printf“%d--y”;}A.852B.963C.1063D.741答案A
14.以下程序段的输出结果是______.intx=3;do{printf“%3d”x-=2;}while!--x;A.10B.3-2C.1-2D.1答案C
15.以下程序段的输出结果是______.Intksum;fork=1;k6;k++sum+=sum;printf“%d%d\n”ksum;A.15B.14C.不确定D.0答案是C
16.执行下面的程序后,a的值为______Main{intab;fora=1b=1;a100;a++{ifb=20break;ifb%3==1{b+=3;continue;}B-=5;}printf“%d”a;}A.7B.8C.9D.10答案是B
17、以下程序段的输出是____intijm=0;fori=1;i=15;i+=4forj=3;j=19;j+=4m++;printf“%d\n”m;A.12B.15C.20D.25答案C
18、定义如下变量intn=10;则下列循环的输出结果是_____whilen7{n--;printf“%d\n”n;\}A.10B.9C.10D.9989887776答案B
19.对for表达式1;;表达式3可理解为_____A.for表达式1;0;表达式3B.for表达式1;1;表达式3C.for表达式1;表达式1;表达式3D.for表达式1;表达式2;表达式3答案B
20.有以下循环:inti;fori=0;i10;i++i++;循环次数为______A.10B.5C.6D.7答案B
21.main{inty=10;whiley--;printf“y=%d\n”y;}程序执行后的输出结果是____-A.y=0B.y=-1C.y=1D.while构成无限循环答案B
22.有以下程序main{intIjx=0;fori=0;i2;i++{x++;forj=0;j=3;j++{ifJ%2continue;x++;}x++;}printf“x=%d\n”x;}程序执行后的输出结果是____A.x=4B.x=8C.x=6D.x=12答案B
23.执行fori=0;i10;i++;结束后,i的值是____.A.9B.10C.11D.无限次答案B
24、若K为整型变量,则下面while循环执行的次数为______K=10; while(K==0) K=K-1; A.0 B.1 C.10 D无限次答案A
25.设整型变量y值为3,执行下列循环语句后,变量y的值是_____do{++y; }while(++<4);A.3 B.4 C.5 D.6答案C26.语句while(e==0)等价于_____A.!e B.e!=1 C.e!=0 D.~e答案A27.下面程序的输出结果是______main(){ int s,k;for(s=1,k=2;k<5;k++)s+=k;printf("%d\n"s);}A.1 B.9 C.10 D.15答案C
28、要使下面程序段输出10个整数,则在下划线处填入正确的数是_______fori=0;i=____;printf“%d\n”i+=2;A.9B.10C.18D.20答案C
29、以下叙述正确的是______A.do-while语句构成的循环不能用其他语句构成的循环代替B.do-while语句构成的循环只能用break语句退出C.用do-while语句构成的循环,在while后的表达式为非零时结束循环D.用do-while语句构成的循环,在while后的表达式为零时结束循环答案D
30、有以下程序main{intx=3;do{printf“%d”x--;}while!x;}该程序的执行结果是A.321B.210C.3D.2答案C
二、填空题
1、下面程序是求整数m的所有素数因子,并输出例如m为120时,输出的素数因子22235程序如下main{intk=2m;printf“请输入m”;scanf“%d”m;whilek=mifm%k____{printf“%d”k;______;}else_________;}答案m%k==0m=m/kk++
2、下面程序的运行结果为______main{inti=0j=0;whilei10i++;whilej++0;j++;printf“\ni=%dj=%d\n”ij;}答案i=10j=
23、下面程序的运行结果为_____main{inti=10s=0;for;--i;ifi%3==0s+=i;s++;printf“\ns=%f”s;}答案程序非法终止
4、下面程序段的运行结果为____inti=1s=3’do{s+=i++;ifs%7==0continue;else++I;}whiles15;printf“%d”i;答案
85、下面程序的功能是输入任意整数n后,输出n行由大写字母A开始构成三角形字符阵列图形例如,输入整数5时(注意n不得大于10),程序运行结果如下ABCDEFGHIJKLMNO请填空完成该程序main{intijn;charch=’a’;scanf“%d”n;ifn11fori=1;i=n;i++{forj=1;jn-i+1;j++{printf“%2c”ch;______;}______;}elseprintf“n太大!\n”printf“\n”;}答案ch++printf“\n”
6、以下程序输入一行字符(以回车键结束输入),统计其中所有数字字符的个数#include“stdio.h”main{charch;ints=0;ch=getchar;whilech!___{ifch=’0’____ch=’9’s++;_____;}printf“%d\n”s;}答案whilech!=’\n’ch=getchar
7、以下程序的功能是根据下面公式∏值(直到最后一项小于10^-5为止)∏/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+…main{doubles=0t=1;intn;for___;t=le-5;n++{s=s+t;t=_______;}printf“PI=%f”2*______;}答案n=1t=t*n/2*n+1s
8、下列程序输出200~300之间的全部素数的和,请填空#includestdio.hmain{intijfs=0;fori=201;i=300;i+=2{f=____;forj=2;j=i/2;j++ifi%j==0{f=0;______;}if_____s+=i;}printf“200~300之间的全部素数的和为%d\n”s;}答案f=1;break;iffs+=i;
9、以下程序的功能是求两个整数的最大公约数,运行时输入两个数#includestdio.hvoidmain{intmnrt;printf请输入两个整数m和n:\n;scanf%d%dmn;if{t=m;m=n;n=t;}while{m=n;;}printf它们的最大公约数为%d\nn;答案ifmnwhiler=m%nn=r10程序输出以下图形,请填空1234567890main{inti=1j;int_____;for;_____;i++{forj=s;j=s+i;j++printf“%d”_____;s=s+I;printf“\n”;}}答案ints=1;for;i=4;i++printf“%d”j%10;
11、以下程序输入一行字符(以回车结束输入),统计其中所有小写字母的个数,请填空#include“stdio.h”main{charch;ints=0;ch=getchar;whilech!=_____{ifch=’a’_____ch=’z’s++;_________}printf“%d\n”s;}答案’\n’ch=getchar
12.已知一个首项大于0的等差数列的前四项之和是26,积是880,下列程序输出该四项之值,请填空#includestdio.hmain{inta1sumproducta2a3a4;fora1=1;a1=5;a1++fora2=1;a2=5;a2++{a3=2*a2-a1;a4=2*a3-a1;_____=a1+a2+a3+a4;_____=a1*a2*a3*a4;ifsum==26_____prioduct==880printf“a1=%2da2=%2da3=%2da4=%2d\n”a1a2a3a4;}}答案:sumproduct
13.下列程序输出200~300的全部素数中,个位数是3的素数和,请填空#includestdio.hmain{intijfs=0;fori=201;i300;i+=2{f=____;forj=2;j=i/2;j++ifi%j==0{f=0;_______;}printf“s=%d\n”s;}答案f=1breakfi%a0==
314.百马百担问题有100匹马驮100担货,大马驮3担,中马驮2担,小马驮1担下列程序输出大、中、小马的匹数,(大、中、小的匹数均不得为0),请填空#includestdio.hmain{inti=1jk;Whilej33{______;Whilej50-i{k=100-i-j;Ifi*3+j*2+k/2==100_____Printf“bi=%dmid=%dsmall=%d\n”Ijk;_______;}i++;}}答案j=1k%2==0j++
15.一个素数加上1000以后是43在倍数,下列程序输出满足这个条件在最小素数,请填空#includestdio.hmain{intnfI;n=3;While_____{f=1;Fori=2;i=n/2;i++Ifn%i==0{f=0;break;}If_____n+1000%43==0{printf“n=%d\n”n;____;}n+=2;}}答案1fbreak
16.以下程序打印出所有的“水仙花数”所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身例如,153是一个“水仙花数”,因为种种原因153=13+33+53请填空Main{intIjkn;Printf“水仙花数”;Forn=100;n=1000;n++{i=_____;j=______K=n%10;If____printf“%d\n”n;}}答案n/100n/10%10i*i*i+j*j*j+k*k*k==n
17.有2个小于100的正整数a、b,a与b的和等于110,a的平方与b的平方之和是6698,下面的程序输出满足上述条件的a、b的值(ab),请填空#includestdio.hmain(){intija=0b=0;fori=1;i100;i++{forj=1;j100;j++ifi+j==110i*i+j*j==6698{a=_______;b_______;break;}if____break;}printf“a=%db=%d\n”ab;}答案a=ib=jab
18、以下程序计算s=1-1/1+2+1/1+2+3-1/1+2+3+4+…+(-1)n-1/(1+2+3+…+n)的值(假设本题中的n=20))请填空#includestdio.hvoidmain{intij;floats=0s1;fori=1;i=20;i++{;forj=1;;j++s1=s1+j;ifi%2==1s+=1/s1;else;}printfs=%fs;}答案s1=0;ji+1(或j=i)s-=1/s1;
19、下面的程序输出以下图形(*前没有空格),请填空****************#includestdio.hvoidmain{intij;;for;i4;i++{j=0;while{printf*;j++;}printf\n;}fori=3;i0;i--{j=1;while{printf*;j++;}printf\n;}}答案i=0j=ij=i
20、下面的程序输出以下图形,请填空1000001010001000101000001000main{intij;fori=1;i=4;i++{j++;whilej_____{printf“0”;j++}printf“1”;forj=1;j=7-2*i;j++printf“0”;ifi4printf“1”;_______;whilej=i{printf“0”;j++_________;}}答案ij=2printf“\n”数组
一、单项选择题
1.C语言中,一对数组下标的最小值是_____A.1B.0C.视说明语句确定D.无固定下限答案B
2.设有数组定义chararray[]==“China0”.则数组array所占的空间为____字节A.4个B.5个C.6个D.7个答案D
3.若有定义:charstr[]=“ab\n\012\\\n”;则执行语句printf“%d”strlenstr;后,输出结果是A.3B4C6D12答案C
4.下列描述中不正确的是____A.字符数组中可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出D.不能在赋值语句中通过赋值运算“=”对字符数组进行整体赋值答案C
5.阅读下面初始化数组程序段chara[]=“ABCDEF”;charb[]={‘A’‘B’‘C’‘D’‘E’‘F’};则下面叙述正确的是______A.a和b完全相同B.a和b只是长度相同C.a和b不相同,a是指针数组D.a数组长度比b数组长答案D
6.以下程序的输出结果是_____#include”stdio.h”;main{intika
[10]p
[3];k=5;fori=0;i10;i++a[i]=i;fori=0;i3;i++p=[i]=a[i*i+1];fori=0;i3;i++k+=p[i]*2printf“%d\n”k;}A.20B.21C.22D.23答案B
7.以下程序的输出结果是______#include“stdio.h”main{intn
[3]
[3]ij;fori=0;i3;i++forj=0;j3;j++n[i][j]=i+j;fori=0;i2;i++forj=0;j2;j++n[i+1][j+1]+=n[i][j];printf“%d\n”n[i][j];}A.14B.0C.6D.值不确定答案C
8.下面能正确将字符串“Boy”进行完整赋值操作的语句是______A.chars
[3]={‘B’‘o’‘y’};B.chars[]=“Boy”;C.chars
[3]={“Boy”};D.chars
[3];s
[0]=‘B’;s
[1]=‘o’;s
[2]=‘y’答案B
9.执行下列程序时输入123空格456空格779回车,输出结果是_____#include“stdio.h”main{chars
[100];intcI;scanf“%c”c;scanf“%d”i;scanf“%s”s;printf“%c%d%s\n”cis;}A.123456779B.1456779C.123456779D.123456答案D
10.下列程序执行后的输出结果是_____#include“stdio.h”main{chararr
[2]
[4];strcpyarr
[0]“you”;strcpyarr
[1]“me”;arr
[0]
[3]=‘’;printf“%s\n”arr
[0];}A.youmeB.youC.meD.arr答案A
11.设有数组定义chararray[]=“China”;则数组array所占空间为______A.4个字节B.5个字节C.6个字节D.7个字节答案C
12.以下程序的输出结果是______#include“stdio.h”main{intia
[10];fori=9;i=0;i--a[i]=10-i;printf“%d%d\n”a
[2]a
[5]a
[8];}A.258B.741C.852D.369答案C
13、以下程序的输出结果是()#includestdio.hmain{charst
[20]=”hello\0\t\\”;printf“%d%d\n”strlenstsizeofst;}A.99B.520C.1320D.2020答案A
14、以下程序的输出结果是()#includestdio.hmain{inta
[4]
[4]={{135}{246}{357}};printf“%d%d%d\n”a
[0]
[3]a
[1]
[2]a
[2]
[1]a
[3]
[0];}A.0650B.1470C.5430D.输出值不定答案A
15、以下程序段的输出结果是()chars[]=”\\141\141abc\t”;printf“%d\n”strlens;A.9B.12C.13D.14答案A
16、以下程序段的输出结果是()#includestdio.hmain{intb
[3]
[3]={012012012}it=1;fori=0;i3;i++t=t+b[b[i][i]][i];printf“%d\n”t;}A.3B.4C.1D.9答案B
17、以下程序段的输出结果是()#includestdio.hmain{inta
[3]
[3]={{12}{34}{56}}ijs=0;fori=1;i3;i++fori=0;ii;j++s+=a[i][j];printf“%d\n”s;}A.18B.19C.20D.21答案A
18、下述对C语言字符数组的描述中错误的是()A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D.不可以用关系运算符对字符数组的字符串进行比较答案C
19、以下程序段执行后的输出结果是()sticcharstr[]=”Beijing”;printf“%d\n”strlenstrcpystr”Chian”;A.5B.7C.12D.14答案:A
20、若有说明inta
[10]={123456789};charc=’a’d;则数值为4的表达式是()A.a
[4]B.a[d-a]C.a[‘d’-’c’]D.a[‘d’-c]答案D
21、请选择以下语句的输出结果()printf“%d\n”strlen“\t”\065\xff\n;A.2B.5C.14D.输出项不合法答案B
22.当执行下面程序且输入ABC时,输出的结果是()#include”stdio.h”Main{charss
[10]=”12345”;getsss;pirntf“%s\n”ss;}A.ABCB.ABC45C.12345ABCD.ABC12345答案A23不能把字符串Hello!赋给数组b的语句是()A.charb
[10]={‘H’‘e’‘l’‘l’‘o’‘!’};B.charb
[10];b=”Hello!”;C.charb
[10];strcpyb”Hello!”;D.charb
[10]=”Hello!”答案B24.有语句charstr1
[10]str2
[10]=”china”;则能将字符串china赋给数组str1的正确语句是()A.str1={“china”}B.str1=str2C.strcpystr1str2D.strcpystr2str1;答案C二.填空
1.数组名定义规则和变量名相同,都遵循 定义规则答案标识符
2.在C语言中,引用数组只能通过引用 实现,而不能通过 整体引用来实现答案元素
3.定义一维数组时,如果对全部元素赋初值,则元素个数_______;定义而维数组时,如果对全部元素赋初值,则可省略_____答案可以省略行数
4.数组在内存中占一片连续的存储区,由_______代表它的首地址答案数组名
5.C语言程序在执行过程中,不检查数组下标是否_____答案越界
6.若定义chars
[20];则数组元素的下标有______个元素,其下标从______开始,最大为_____答案
200197.设有定义语句inti=3a[]={1234};则数组a的数据类型是_____;该数组的下标最大值是_____;数组元素a[i]的值是____答案int或整型
34.
8.设有定义;chars
[5]={‘a’’b’};则s
[1]中的字符是_____s
[2]中的字符是______答案‘b’‘\0’
9.设有定义inta
[4]
[5];则元素行下标的最大值是______;列下标的最大值是______答案
34.
10.定义一个名为x的整型数组,其大小为3*4,要求每行第一个元素为1,其余均是0,则定义语句是_____答案:intx
[3]
[4]={{1}{1}{1}};
11.C语言中,二维数组元素在内存的存放顺序是_____答案:按行存放
12.设有定义语句chars[]=“abcdef0”;则数值S的长度是_____;数组元素
[6]中存放的字符是______答案:
8013.设有定义语句chars[]
[5]={“阿bed”};则二维数组s中一共有______个数组元素,s
[0]
[0]中存放的字符是______答案:5a
14.设有定义语句charsl
[10]=“1230abc”则表达式“strlensl”的值是______答案:
315.设有定义语句charsl[]=“study”,s2
[10];,把sl中的字符串赋值给s2的语句是_____答案:strcpys2s
116.程序实现的功能是9个评委给某个参赛选手打分,去掉一个最高分和最低分,求该选手的平均分,请填空main{inti;floata
[9]maxminave;fori=0;i9;i++scanf%fa[i];max=min=ave=______;fori=1;i9;i++{ave+=______;ifmaxa[i]max=a[i];elseifmina[i]min=a[i];}ave=________/7;printf“平均分为%.2f”ave;}答案a
[0]a[i]ave-max-min
17.下列程序的功能是从键盘输入不相同的10个数组a中,求最大数和次最大数,请填空#include”stdio.h”main{intimax1max2a
[10];Fori=0;i10;i++acanf“%d”a[i];max1=max2=_______;Fori=1;i10;i++Ifmax1a[i]{max2=_______;max1=a[i];}Elseifmax2a[i]_______;Printf“最大数为:%d次最大数为:%d”max1max2;}答案a
[0]max1max2=a[i]
18.以下程序的功能是将字符串str中的字符正序和逆序进行连接,形成一个新串存放到字符串t中,如str字符串为ABCD则t的内容为ABCDDCBA请填空#include“stdio.h”main{charstr
[30]t
[60];intij;getsstr;fori=0j=0;str[i]!=_______;i++t[j++]=str[i];for--i;i_________;i--t[j]=_________;putst;}答案’b’0‘0’
19.程序功能是将字符数组str按字符ASCII表顺序排序后输出,请填空#includestdio.h#includestring.hMain{charstr
[80]ch;intIjlenth;getsstr;lenth=_______;fori=0;ilenth-i;i++forj=i+1;jlenth;j++if________{ch=str=[i];str[i]=str[j];str[j]=ch;}Printf“%sn”________;}答案strlenstr[i]str[i]str[j]str
20.完善程序,使5*5数组对角线元素为1,其他为0,即输出5*5的对角矩阵#includestdio.hvoidmain{intjka
[5]
[5];forj=0;j5;j++fork=0;k5;k++{if;else;}forj=0;j5;j++{fork=0;k5;k++printf%da[j][k];printf\n;}}答案j==ka[j][k]=1a[j][k]=0指针一.选择题
1.已知int*pa;则语句“P=a;”,中的运算符“”的含义是()A.逻辑运算符B.位与运算符C.取指针内容D.取变量地址
2.对于类型相同的指针变量,不能进行()运算A.+B.-C.=D.==
3.设指针x指向的整型变量为28,则(”%d\n”++*x);的输出量是()A.27B.28C.29D.
304.若已定义a为int型变量,则对p的说明和初始化正确的是()A.int*p=aB.intp=aC.int*p=*aD.int=*p=a
5.指针s所指的字符串的长度为()Char*s=”\t\’Nane\\Address\n”;A.19B.18C.15D.
176.若有说明intij=7*p=a;则与i=j等价的语句为()A.i=*pB.*p=*aC.i=jD.i=**p
7.若有说明语句inta=
[10]*p=a;对数组元素的正确引用是()A.a[p]B.p[a]C.*p+2D.p+
28.设p1和p2均为指向同一个int型一维数组元素的指针变量,k为int型变量,下列不正确的语句是()A.k=*p1+*p2B.*p1**p2C.p2=kD.p1=p
29.若有下列说明语句,请选出哪个对数组元素的正确引用()intc
[4]
[5]*p
[5];p=c;A.P+1B.*a[i]C.p[i]D.**p+
210.设有以下语句,则不是对a数组的正确引用,其中0=i10Inta
[10]={0123456779}*p=a;Aa[p-a]B*a[i]Cp[i]D**a+
111.设有如下的程序段Charstr[]=”hello”;Char*ptr;Ptr=str;执行完上面的程序段后,*(ptr+5)的值为A‘0’B‘\0’C不确定的值D‘0’的地址
12.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是Apb=xBpb=xC*pb=xD*pb=*x
13.已知charb
[5]*p=b;则正确的赋值语句是Ab=”abcde”B*b=”abcde”Cp=”abcde”D*p=”abcde”
14.若有以下定义,则值为3的表达式是Inta[]={12345677910}*p=a;Ap+=2*p++Bp+=2*++pCp+=3*p++Dp+=2++*p15.若有以下定义,则表达式*++p的值是Inta
[5]={1020304050}*p=a
[1];A40B30C21D
3116.若有以下定义,则表达式++*p的值是Inta
[5]={1020304050}*p=a
[1];A40B30C21D
3117.若有以下定义,则表达式*--p的值是Inta
[5]={1020304050}*p=a
[1];A10B20C19D
3118.若有以下定义,则表达式*p++的值是Inta
[5]={1020304050}*p=a
[1];A20B30C21D
3119.设有下面的程序段,则对数组的错误引用是inta
[12]={0]*p
[3]**ppi;fori=0;i3;i++p[i]=a[i*4];pp=p;A.pp
[0]
[1]B.a
[10]C.p
[3]
[1]D.**p+2+
220.若有以下定义,则对a数组元素的非法引用是inta
[2]
[3]*pa
[3];pa=a;A.*a
[0]+2)B.*pa
[2]C.pa
[0]
[0]D.*pa
[1]+
221.设有定义char*aa
[2]={abcdABCD};则以下说法中正确的是A.aa数组眼的的值分别是abcd和ABCDB.aa是指针变量,他指向含有两个数组元素的字符型一维数组C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D.aa数组的两个元素中分别存放了字符a和A的地址
22.以下程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是#includemain{shorta
[10]={1234567890}*p;p=a;printf%x\np;printf%x\np+9;}A.203B.204C.la4D.la
623.有如下程序段,执行该程序段后,a的值为int*pa=10b=1;p=a;a=*p+b;A.12B.11C.10D.编译出错
24.设有定义inta
[10]={12345678910}*p=a;则数值为9的表达式是A.*p+9B.*p+8C.*p+=9D.p+
825.下面能正确进行字符串赋值操作的语句是A.chars
[5]={ABCDE}B.chars
[5]={abcde};C.char*s;s=ABCDEF;D.char*s;scanf%ss
26.设有如下程序段,执行该程序后段后,ab的值为int*varab;ab=100;var=ab;ab=*var+10;A.120B.110C.100D.
9027.若有下面的定义语句,则不能表示a数组元素的表达式是inta
[10]={12345678910}*p=a;A.*pB.a
[10].C.*aD.a[p-a]
28.如有以下定义和语句,则一下正确的叙述是doubler=99*p=r;*p=r;A.一下两处的*p含义相同,都说明给指针变量p赋值B.在“doubler=99*p=r;”中,把r的地址赋值给了p所指的储存单元C.语句“*p=r;”,把变量r的值赋给指针变量pD.语句“*p=r;”取变量r的值放回r中
29.若有一下定义语句,则数值为4的表达式是intw
[3]
[4]={{01}{24}{58}};int*p
[4]=w;A.*w
[1]+1B.p++*p+1C.w
[2]
[2]D.p
[1]
[1]
30.若有以下定义语句,则不能代表字符o的表达式是chars
[20]=programming*ps=s;A.ps+2B.s
[2]C.ps
[2]D.ps+=2*ps
31.若有定义inta
[9]*p=a;,并在以后的语句中未改变p的值,则不能表达a
[1]地址的表达式是A.p+1B.a+1C.a++D.++p
32.若有定义intabcd*d=c;则能正确从键盘读入三个整数分别赋给变量abcd的语句是A.scanf%d%d%dabd;B.scanf%d%d%dabd;C.scanf%d%d%dabd;D.scanf%d%d%dab*d;
33.若有以下的说明和语句,则在执行for语句后,**pt+1+2表示的数组元素是intt
[3]
[3]*pt
[3]k;fork=;k3;k++pt[k]=t[k];A.t
[2]
[0]B.t
[2]
[2]C.t
[1]
[2]D.t
[2]
[1]
34.设有定义:char*st=howareyou!;,下列程序段中正确的是A.chara
[11]*p;strcpyp=a+1st
[4];B.chara
[11]strcpy++ast;C.chara
[11];strcpyast;D.chara[]*p;strcpyp=a
[1]st+2;
35.设有定义int*prt[M];其中的标识符prt是A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M个整型元素的一维数组的指针D.具有M个指针元素的一维指针数组,每个元素都是一个指向整数变量的指针
二、填空题
1.“*”称为______运算符,“”称为______运算符2.设inta
[10]*p=a;则对a
[2]的正确引用是p[______]和*(p_______)
3.若有以下定义,则不移动指针p,且通过指针p引用值为97的数组元素的表达式是______intw
[10]={235410334797727061102}*p=w;4.设有char*a=”ABCD”;则printf“%s”a;的输出是_____;而printf“%c*a;的输出是______
5.下面程序段的输出结果是______charstr[]=”abc\odef\oghi”*p=str;printf“%s”p+5;
6.下面程序段的输出结果是______charstr
[20]=”abcd”*p=str;p++;putsstrcatp”ABCD”;
7.下面程序的输出结果是_______main{intak=4m=6*p1=k*p2=m;a=p1==m;printf“%d\n”a}
8.下面程序的输出结果是______#include”stdio.h”main{int**k*ji=100;j=i;k=j;printf“%d\n”**k;}
9.下面程序的输出结果是_______Main{inta
[10]={12345678910}*p=a;printf“%d\n”*p+2;}
10.下面程序的输出结果是______main{chars[]=”ABCD”*p;Forp=s;*p;p++printf“%c”*p;}
11.下面程序段的输出结果是______char*s1=”12345”8时=”1234”;printf“%d\n”strlenstrcpys1s2;
12.下面程序段的输出结果是一个_数main{char*s1=”AbCdEf”*s2=”aB”;s1++;s2++;printf“%d\n”strcmps1s2;}
13.下面程序段的输出结果是_int**pp*pa=10b=20;pp=p;p=a;p=b;printf“%d%d\n”*p**p;
14.下面程序的输出结果是_main{chara
[10]={‘1’’2’’3’’4’’5’’6’’7’’8’’9’0}*p;inti;i=8;p=a+i;printf“%s\n”p-3;}
15.下面程序的输出结果是_main{inta
[5]={246810}*p**k;p=a;k=p;printf“%d”*p++;printf“%d\n”**k;}
16.下面程序的输出结果是_main{chara
[10]={9876543210}*p=a+5;printf“%d”*--p;}
17.设有以下语句ints
[2]
[3]={0}*p
[3];p=s;则p+1表示数组_
18.设有以下语句inta
[3]
[2]={123456};int*p
[2];p=a;则**p+1+1的值是_,*p+2是元素_的地址
19.设有以下语句inta
[4]={2467};int*p
[4]={a
[0]a
[1]a
[2]a
[3]};int**pp;pp=p;则**pp+2的值是_,*p+3的值是元素_的地址20若有以下说明和语句,表达式*p+1+2的含义是_inta
[3]
[4]*p
[4];p=a;选择题答案
1.D
2.A
3.C
4.D
5.C
6.B
7.C
8.C
9.D
10.D
11.B
12.A
13.C
14.A
15.B
16.C
17.A
18.A
19.C
20.B
21.D
22.D
23.B
24.B
25.C
26.B
27.B
28.D
29.D
30.A
31.C
32.A
33.C
34.A
35.C填空题答案
1.指向,取地址
2.
52.2+
23.*P+
54.ABCDA
5.ef
6.bcdABCD
7.
08.
1009.
310.ABCD
11.
412.整数
13.20,
2014.
678915.
2416.
517.1行在地址
18.4a
[0]
[0]
19.6a
[3]
20.a
[1]
[2]函数单项选择题1.在C语言中,程序的基本单位是()A.函数B.文件C.语句D.程序段答案A2.一个完整的C源程序是()A.要由一个主函数(或)一个以上的非主函数构成B.由一个且仅由一个主函数和零个以上(含零)的非主函数构成C.要由一个主函数和一个以上的非主函数构成D.由一个且只有一个主函数或多个非主函数构成答案B3.以下所列的各函数的首部中,正确的是()A.voidplayvara:integervarb:integerB.voidplayintabC.voidplayintaintbD.subplayaasintegerbasinteger答案C4.C语言中程序的执行是从()A.程序的第一条可执行语句开始B.程序的第一个函数开始C.main函数开始D.任意函数开始答案C5.在C语言中,函数的返回值类型是由()决定的A.return语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型答案D6.在C语言中,若函数的类型未加显示说明,则函数的隐含类型为()型A.voidB.intC.charD.float答案B
7.设有如下的函数,则函数的类型是()Funfloatx{printf“%f\n”x*x;}A.与参数x的类型相同B.voidC.intD.无法确定答案C
8.以下函数的类型是()Funfloatx{floaty;y=3*-4;returny;}A.intB.不确定C.voidD.float答案A
9.以下对C语言函数的有关描述中,正确的是()A.C语言调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C函数即可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中答案A10.在函数调用时,若形参实参都是普通变量,则下面说法正确的是()A.实参和形参各占用一个独立的存储单元B.实参和形参可以共用存储单元C.可以由用户指定是否共用存储单元D.由计算机系统自动确定是否共用存储单元答案A11.以下描述中,不正确的是()A.调用函数时,实参可以是常量、表达式B.调用函数时,形参可以是常量、表达式C.调用函数时,实参与形参的类型必须一致D.调用函数时,将为形参分配的存储单元答案B12.设有函数调用语句funca1a2a3a4a5;则函数func中有()个形参A.1B.5C.2D.不合法答案C13.在函数调用语句funa+bxyfunn+kdab;中,实参的个数是()A.3B.4C.5D.6答案A14.当调用函数时,实参是一个数组名,则向函数窜传送的是()A.数组的长度B数组的首地址C.数组每一个元素地址D数组每个元素中的值答案B15.C语言规定,程序中各函数之间()A.既允许直接调用也允许简接调用B.不允许直接调用也不允许简接调用C.允许直接调用不允许简接调用D.不允许直接调用允许简接调用答案A
16.在c语言中关于函数能否嵌套调用和递归调用正确的说法是A.二者均不可以B.前者可以,后者不可以C.前者不可以,后者可以D.二者均可以答案D
17.在c语言中,关于函数说法正确的是A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的定义可以嵌套C.函数的定义和函数的调用均不可以嵌套D.函数飞定义和函数的调用均可以嵌套答案B
18.说明语句“int(*p)();”的含义是A.p是一个指向一维数组的指针变量B.p是指针变量,指向一个整型变量C.一个指向函数的指针,该函数的返回值是一个整型D.p是一个指针数组答案C
19.语句“(*p)();”的含义是A.p是一个指向一维数组的指针变量B.说明一个指向函数的指针变量pC.用指针函数的指针变量p调用一个无参数有返回值的函数D.用指向函数的指针变量p用一个无参数无返回值的函数答案D
20.下列函数的运行结果是Voidfun(int*a,int*b){int*k;K=a;a=b;b=k;}Main(){inta=3,b=6,*x=a,*y=b;Fun(x,y);printf(“%d%d”,a,b);}A.63B36C编译出错D00答案B
21.设函数char*fun(char*p){returnp;},该函数的返回值是A无确切的值B形参p中存放的地址值C一个临时储存单元的地址D形参p自身的地址答案B22在说明一个语句int*f();中,标识符f代表的是A.一个用于指向整型数据的指针变量B一个用于指向一维数组的行指针C一个用于指向函数的指针变量D一个返回值为指针型的函数名答案D
23.若有一下说明和定义,在必要的赋值之后,对fun函数的正确调动语句是Fun(int*c){…}Main(){int(*a)()=fun,*b(),w【10】,c;…}Aa=a(w);B(*a)(c);Cb=*b(w);Dfun(b);答案B
24.下面函数的功能是A求字符串的长度B比较字符串的大小C将字符串x复制到字符串yD.将字符串x连接到字符串y后面Intfun1char*x{char*y=x;while*y++;returny-x-1;}答案A25下面函数的功能是Funchar*schar*t{while*s*t*t++*s++;Return*s-*t;}A.求字符串的长度B比较两个字符串的大小C.将字符串s复制到字符串tD.将字符串t接到字符串a之后答案B26阅读程序该程序的输出结果是︼表示空格#intcludestdio.h#includestring.hVoidfunchar*s{chara
[10];strcpya”STRING”;s=a;}Main{char*p;FunpPrintf“%s\n”P;}ASTRING︺BSTRING︺︺CSTRING︺︺︺D不确定的答案D
27.以下叙述正确的是___A.C语言的主函数是无参函数B.C语言的主函数最多允许有1个参数C.C语言的主函数最多允许有2个参数D.C语言的主函数可以有2个以上参数答案C
28.下列选项中不是C语言main函数正确表达形式的是___A.main(intargc,char*argv[])B.main(ac,av)intac;char**av;C.main(c,v)intc;char*v[];D.main(argc,argcv)intargc;charargv[];答案D
29.下面叙述中不正确的是__A.在不同的函数中可以使用相同名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只能在本函数范围内有效D.在一个函数内的符合语句中定义的变量在本函数范围内有效答案D
30.以下叙述不正确的是___A.全局变量可以在函数以外任何部位进行定义B.局部变量的“生存期”只限于本次函数调用C.变量说明为“static”存储类是为了限制在其他原文件中使用D.变量的作用域完全取决于变量定义语句的位置答案D
31.在C语言中,形参的默认存储类是___A.autoB.registerC.staticD.extern答案A
32.在C语言中,一变量只在文件的所有函数中使用,该变量的存储类别是___A.externB.registerC.autoD.static答案D
33.以下叙述中不正确的是__A.在C语言中函数中的自动变量可以赋初值,每调用一次,付一次初值B.在C语言中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容C.在C语言中,外部变量的隐含是自动存储类别D.在C语言中,函数形参可以说明tegister变量答案C
34.在C语言中,若有一变量能在本程序中被所有函数使用,该变量的存储方式是___A.registerB.externC.staticD.auto答案B
35.下面描述中不正确的是A.在一个函数中,既可以使用本函数中的局部变量,又可以使用与局部变量不、同名的局部变量B.在函数之外定义的变量称为外部变量,外部变量是所有函数都可用的全局变量C.在同一程序中,若外部变量与局部变量同名,则在局部变量作用范围内,外部变量不起作用D.外部变量定义和外部变量说明的含义不同答案B36.在C语言中,变量的存储方式为类型时,系统在使用时才分配存储单元A.staticB.static和autoC.auto和registerD.register和static答案C37.不经声明,一个源文件中定义的全局变量的作用域是A.本函数的全部范围B本程序全部范围C.本文件全部范围D从定义开始至本文件结束答案D38.在C语言中,可以用来说明函数类型的是A.auto或staticB.extern或autoC.static或externD.auto或register答案C39.在C语言中,函数的隐含存储类别是A.autoB.staticC.externD.无存储类别答案C40.在宏定义#definePI
3.14159中,用宏名PI代替一个A.单精度型B双精度型C常量D字符串答案D41.下列程序执行后的输出结果是#defineMxx*x+1Main{inta=2b=3;Printf“%d\n”M1+a+b;}A.6B.7C.24D.42答案C42.设有以下宏定义#defineN3#defineYnN+1*n则执行语句z=2*N+Y5+1;后,z的值为A.出错B.42C.48D.54答案C
43.以下的程序运行后,输出的结果是#includestdio.h#definePT
5.5#defineSxPT*x*xmain{inta=1b=2;print“%
4.1f/n”Sa+b;}
9.5C答案B确文件包含命令是A.#includemyfile.cB.#include“myfile.c”C.#include“myfile.c”;D.#includemyfile.c答案B
45.条件编译和if语句的根本区别是:A.条件编译不能处理复杂的关系或逻辑表达式,而if语句可以B.条件编译必须在if前加上#号,而且需要有endif配合,而if语句比较简单一点C.条件编译在编译前处理完成,而if语句则在编译后执行D.两者差不多,没什么大的区别答案C二.填空题
1.函数形参的作用域是_____,全局的外部变量与函数体内定义的局部变量同名时,在函数体内,______变量起作用答案整个函数体内,局部
2.静态局部变量的作用是______答案定义它的函数或复合语句内部
3.函数中的形参和调用时的形参都是数组时,参数传递方式是____;都是普通变量时,参数传递方式是______答案传地址,传值
4.若自定义函数要求返回一个值,则在该函数体中应有一条____语句;若自定义要求不返回值,则应在该函数说明时加一个类型说明符______答案return,void
5.下面函数要求计算两个整数xy之和,并通过形参z传回该值,试完成以下函数Voidaddintxinty____z{_____=x+y;return;}答案int**z
6.函数fun的功能是将字符串s中下标为奇数的字符复制两遍到新字符串t中,t中的字符按它原来在字符串s中出现的逆序排列(注意0为偶数),请填空#include”stdio.h”#include”string.h”voidfun(char*schar*t){intijslen;slen=strlens;ifstrlen%2slen-=2;____slen--;fori=slenj=______;i=0;i-=2{t[2*j]=s[i];_____=s[i];j++;}t2*j=’\0’;}main{chara
[70]b
[70];getsa;funab;putsb;}答案else0t[2*j+1]
7.若有下面函数定义,则该函数的类型是adddoubleadoubleb{doubles;s=a+b;returns;}答案int
8.下面函数的功能是求的次方,请填空doublefundoubleaintb{intk;doubley=1;fork=1;;k++y=y8a;;}答案.k=100returny
9.下面程序的功能是在函数中计算20个学生的平均成绩,返回主函数输出,请填空floatfunfloatx[]intnum{intI;floataves=0;fori=0;inum:i++s+;ave=s/num;;}#includestdio.hmain{floata
[20]t;Inti;F\fori=0;i20:i++{scanf“%f”t;a[i]=t;}printf“average=%f\n”;}答案.x[i]returnavefuna2010下面程序的功能是第一个数是1,从第二个数起每个数都是它的前一项加5,求第n个数是多少?请填空(n从键盘输入,用递归的方法实现该算法)#includestdio.hLongaddintnlongm:Ifn==1m=;Elsem=5+;returnm;}Main{longm;Intn;Scanf“%d”n;m=;printf“%d\n”m;}答案1addn-1addn
11.下面程序的功能是用函数的递归调用求1!+2!+3!···+10!,请填空#includestdio.hLongfintn{ifn==1return1;Elsereturn;}main{inti=1;Longs;s=;whilei=10{s+=;i++;}Printf“%d”s;}答案.n*fn-10fi
12.函数acopy将整型数组a的内容逆序复制到整型数组b中(-999为数组的结束标志),请填空#includestdio.hVoidacopy{inti=0j=0;While*a+j!=-999j++;B[j]=a[j];j--;Whilea[j]!=-999{;i++;j--;}}Main{staticinta[]={13579246710-999};Intb
[20]i=0;Acopyab;Whileb[i]!=-999Printf“%3d”;}答案.int*aint*bb[j]=a[j]b[j++]
13.下列程序中自定义函数strchg的功能是将字符串str中的字母用的ASCLL码加3,如‘A’变成‘D’,变成‘e’;加3后超过‘Z’或‘z’则减26,如‘X’变成‘A’,‘Y’变成‘B’,‘z’变成‘e’,等等,请填空#include”stdio.h”Voidstrchgchar*str{while*str{if*str=‘A’*str=‘Z’||*str=‘a’*str=‘z’{;If*str-=26;}Str++;}}main{chara
[20];getsa;strchg;putsa;}答案.*str+=3*str’Z’str’a’||*str’z’a14.以下程序的输出结果是Intfuncintaintb{returna+b:}Main{intx=2y=5z=8r;R=funcfuncxyz;Printf“%d\n”r;}答案
1515.以下程序的输出结果是_____inta,b;voidfun{a=100;b=200;}main{inta=5b=7;fun;printf“%d%d\n”,ab;}答案
5716.以下程序的输出结果是_____intm=13;intfun2intx,inty{intm=3;returnx*y-m;}main{inta=7b=5;Printf“%d\n”fun2ab/m;}答案
217.假定以下程序经编译和连接后生成的可执行文件为PROG.EXE,其所在目录为当前目录,在DOS提示符下键入PROGABCDEFGHIJKL,则输出结果为_____mainintargcchar*argv[]{while--argc0printf“%s”argv[argc];printf“\n”;}答案IJKLABCDEFGH
18.以下程序的输出结果是____intfchar*s{char*p=s;while*p!=‘\0’p++;returnp-s;}main{printf“%s\n”f“goodbey!”;}答案
819.以下程序的输出结果是____intb=2;intfuncint*a{b+=*a;returnb;}main{inta=2res=2;res+=funca;printf“%d\n”res;}答案
620.宏在编译处理的时候将被_____答案宏定义中的替换文本替换
21.设有定义#defineFN2*N则表达式F(2+3)的值是______答案
722.以下程序的输出结果是______#defineMAxx*x-1main{inta=1b=2;printf“%d\n”MA1+a+b;}答案
823.以下程序的输出结果是____#defineMxyzx*y+zmain{inta=1b=2c=3;printf“%d\n”Ma+bb+cc+a;}答案
1224.以下程序的输出结果是_____#definefxx*xmain{inta=6,b=2,c;c=fa/fb;printf“%d\n”c;}答案
3625.以下程序的输出结果是_____#defineSQRxx*xmain{inta=16k=2m=1;a/=SQRk+m/SQRk+m;printf“d\n”a;}答案2结构体、共用体和枚举
一、单项选择题
1.已知Struct{longb;charc
[10];doublea;}ex;则sizeofex的值是__A.2B.8C.10D.22答案D
2.若定义Unionstu{inti;floatt;longa
[4]}x;则x在内存中占用的字节数是__A.2B.4C.16D.14答案C
3.设有以下说明语句Structex{intx;floaty;charz;}example;则下面的叙述中不正确的是__A.struct是结构体类型的关键字B.example是结构体类型名C.x、y、z都是结构体成员名C.structex是结构体类型答案B
4.若有如下定义structperson{charname
[9];intage;};structpersonclass
[10]={“John”17“Paul”19“Mary”18“Adam”16};根据上述定义,能输出字母M的语句是__A.printf“%c\n”class
[3].name;B.printf“%c\n”class
[3].name
[1];C.Printf“%c\n”.class
[2].name
[1];D.Printf“%c\n”class
[2].name
[0];答案D
5.以下结构体类型变量胡定义中,不正确的是__A.typedefstructaaB.#defineAAstructaa{intn;AA{intn;Floatm;floatm;}AA;}tdl;C.structaaD.struct{intn;{intn;Floatm;floatm;};}tdl;Structaatdl;答案:A
6.设有定义语句Enumteam{myyour=4hisher=his+10};则printf“%d%d%d%d\n”myyourhisher;的输出是_______A.0123B.04010C.04515D.14515答案C
7.若有如下定义,则printf“%d\n”nsizeofthem;的输出是_______Typedefunion{longx
[2];inty
[2];charz
[8];}MYTYPE;MYTYPEthem;A.32B.16C.8D.24答案C
8.若有如下定义,则对data中的a成员、的正确引用是_______Structsk{inta;floatb;}data*p=data;答案B
9.c语言共用体类型在任何给定的时刻_______A:所有成员一直驻留在结构中B只能有一个成员驻留在结构中C部分成员驻留在结构中D没有成员驻留在结构中答案B
10.以下对C语言中共用体类型数据的叙述正确的是______A可以对共用体变量名直接赋值B一个共用体变量中可以同时存放其所有成员C一个共用体变量中不能同时存放其所有成员D共用体类型定义中不能出现结构体类型成员答案C
11.以下关于枚举的叙述正确的是_____A枚举变量只能取对应枚举类型的枚举元素表中的元素B可以在定义枚举类型时对枚举元素进行初始化C枚举元素表中的元素有先后次序,可以进行比较D枚举元素可以是整形或字符串答案D
12.以下关于typedef的叙述正确的是_____A用typedef可以定义各种类型名,但不能用来定义变量B用typedef可以增加新类型C用typedef只是将已存在的类型用一个新的名称来代表D使用typedef便于程序的通用和移植答案B13.以下枚举类型的定义正确的是_______A:enuma={onetwothree}B:enuma={one=9two=-1three}:C:enuma={“one””two””three”}:D:enuma={“one””two””three”}:答案B
14.若已建立如图的链表结构,指针pq分别指向图中所示的结点,则不能将q所指的结点插入到链表末尾的一组语句是_______A:q-next=NULL;p=p-next;p-next=qB:p=p-next;q-next=p-next;p-next=qC:p=p-next;q-next=NULL;p-next=qD;p=p*.next;*q.next=*p.next;*p.next=q答案C
15.设有语句_____Structst{intnstructst*next:};Structsta
[3]={5a
[1]7a
[2]9’\o’}*p;P=a
[0];则表达式-----的值是6A:p++-nB:p-n++C*p.n++D:++p-n答案C
16.下列程序的输出结果是_______Structabc;{intabc;};Main{Structabcs={123}};Intt;t=s.as.c;printf{“%d\n”t;}A:1B:2C:3D:无结果答案A
17.有以下程序#includestdio.hunionpw{inti;charch
[2];}a;main{a.ch
[0]=13;ach
[1]=0;Printf%da.i;}执行上述程序后的输出结果是______A.13B.14C.208D.209答案A
18.设有结构体及数组和指针变量的定义语句structintx;y
[2]*p=y;则下列表达式中能正确表示结构体成员的是______A.*P.XB.*P+
1.XC.*PD.*P.X答案A
19.运行程序Structst{intx;int*y;}*p;intd
[4]={10203040};structsta
[4]={20d
[0]30d
[1]40d
[2]50d
[3]};main{p=a;printf%d\n++p-x;}则输出结果是______A.11B.21C.31D.41答案B
20.以下的程序输出的结果是______StuctHAR{intxy;structHAR*p;}h
[2];main{h
[0].x=1;h
[0].y=2;h
[1].x=3;h
[1].y=4;h
[0].p=h
[1];h
[1].p=h;Printf%d%d\nh
[0].p-yh
[1].p-x;}A.23B.14C.41D.32答案C
21.设有定义Enumcoior_name{red=3yellowbiuewhite=4black};则枚举元素yellowblueblack的值分别是______A.23B.14C.41D.32答案A
22.以下程序输出的结果是_______Unionmyun{struct{intxyz;}u;intk;}a;mainA.4B.5C.6D.0答案C
23.已知赋值语句Wang.year=2005;判断wang是______类型的变量A.字符或文件B.整型和枚举C.共用体或结构体D.实型或指针答案C
24.有以下程序#includestdio.hunionpw{inti;charch
[2];}a;main{a.ch
[0]=0;a.ch
[1]=13;Printf%da.i;}执行上述程序后的输出结果是_____A.13B.130C.3315D.3328答案D
二、填空题
1.“.”称为_______运算符,“—”称为_______运算符答案结构体成员,结构体指针指向
2.若有如下定义语句,则变量w在内存中所占的字节数是_______Unionaa{floatx;charc
[6];};Structst{unionaav;floatw
[5];doubleave;}w;答案
343.设有以下结构体类型和变量定义,则变量a和p在内存所占字节数分别是______、_______、Struuctstud{charnum
[6];Ints
[4];Doubleave;}a*P;答案324(TC下是222)
4.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空Structst{charname
[20];doublescore;};Main{structstex;Printf“exsize:%d\n”sizeof______;}答案ex或structst
5.以下语句要使指针变量指向一个整型的动态存储单元,请填空Int*p;P=________mallocsizeofint;答案(*int)
6.请定义一个枚举类型month,其枚举元素是一年中的12个月份,要求每个元素的取值等于其相应的月份数,例如对于12月,枚举元素Dec的值为12Enummonth_______;答案{Jan=1FebMarAprMayJunJulAugSepOctNovDec}
7.下面程序的输出是_______.Main{enumem{em1=3em2=1em3};char*aa[]={“AA”“BB”“CC”“DD”};printf“%s%s%s\n”aa[em1]aa[em2]aa[em3];}答案DDBBCC8为了建立如图1-4所示的单链表,结点类型的正确描述形式是Structnode{intdata;_______;};答案structnode*next9以下程序用来按学生姓名查询其排名和成绩,查询可连续进行直到键入q结束,请填空#includestudio.h#includestring.hstructstu{intrank;char*name;floatscore;};_______stu[]={4“Endre”
52.22“Audi”
88.01“Peter”
98.53“Sara”
73.5};main{charstr
[10];intI;do{printf“Endrethenameofstuyouwanttoknow:”;scanf“%s”str;fori=0;i=3;i++if______{printf“%s\t%d\t%f\n”stu[i].namestu[i].rankstu[i].score;_______;}Ifi3printf“Noneismatched\n”;}whilestrcmpstr“q”;}答案structstustrcmpstrstu[i].name==0break
10.以下程序中使用一个结构体变量表示一个复数,然后进行复数的加法和乘法运算设复数定义为A=a+ib则复数的加法定义为a+bi+c+di=a+c+b+di复数的乘法定义为a+bic+di=ac-bd+ad+bci#include“stdio.h”structcomp{floatreal、virtual;};main{structcompabsummu1;printf“输入a.reala.virtualb.realb.virtual:”;scanf“%f%f%f%f”a.realb.virtualb.realb.virtual;sum.real=________;sum.virtual=_________;mu
1.real=_________;mu
1.virtual=________;printf“sum.real1=%fSum.virtual=%f\n”;Sum.reaSum.virtual;printf“mu
1.real=%fmu
1.virtual=%f\nmu
1.realmu
1.virtual”;}答案a.real+b.reala.virtual+b.virtuala.real*b.real-a.virtual*b.virtuala.real*b.virtual+a.virtual*b.real
11.下面程序的功能是在结构体数组中查找分数最高分和最低分学生的姓名和成绩请填空.#includestdio.hMain{intmaxminij;Struct{charname
[8];Intscore;}stud
[5]={“李萍”,92,“王兵”,72,“钟虎,83,“孙逊”,60,“徐军”88};Max=min=0;Fori=1;i5;i++Ifstud[i].scorestud[min].score_____;Elseifstud[i].scorestud[min].score_____;Printf“最高分%s%d\n”____;Printf“最低分%s%d\n”____;}答案max=imin=istud[max].scorestud[min].score12.以下程序段的功能是统计链表中结点的个数,其中head为指向头结点的指针,请填空Structnode{intdata;Stuctnode*next;};Structnode*p*head;Intcount=0;...P=head;While____{_____;P=____;}答案p!=NULLcount++p=p-next
13.下列程序的功能是读入一行字符,且每个字符存入一个结点,按输入顺序建立一个;链表,然后再按相反的顺序输出并释放全部的结点,请填空#include“stdio.h”#include“alloc.h”#definegetnodetypetype*mallocsizeoftype#defineNULL0Main{structnode{charinfo;Structnode____;}*top*P;Charc;Top=NULL;Whilec=getchar!=‘\n’{p=getnode_____;P-info=c;p-link=____;top=_____;}Whiletop!=NULL{p=_____;Top=p-info;Freep;}}答案*linkstructnodetopptop文件选择题1.C语言中文件的存取方式A.顺序存取B.随机存取C.顺序存取,随机存取均可D.顺序存取,随机存取均不可答案(C)2以下关于文件的说法正确的是()A.C系统把文件当作一个“流”,按字节进行处理B.文件在读写之前必须打开,读写结束必须关闭C.feof函数可判断文件指针是否处于文件结束位置,如是,则返回值为0,否则为1D.文件可按一个字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写答案(C)
3.C语言可以处理的文件类型是()A.文本文件和数据文件B.数据文件和二进制文件C.文本文件和二进制文件D.以上答案都不正确答案(C)
4.C语言中标准输入文件stdin是指()A.键盘B.显示器C.鼠标D.硬盘答案(A)
5.C语言中标准输出文件stdout是指()A.键盘B.显示器C.鼠标D.硬盘答案(B)6读写操作时需要进行转换的文件类型是()A文本文件B二进制文件C二者需要转换D二者不需要转换答案(A)7下列关于文件描述正确的是()A.对文件操作必须打开文件B.对文件操作必须关闭文件C.对文件的操作打开和关闭的顺序无关紧要D.对文件的操作打开和关闭的顺序要看是读还是写操作答案(A)
8.在进行文件操作时,读文件的含义是()A.将磁盘中的文件信息存入计算机的CPUB.将磁盘中的文件信息存入计算机的内存C..将磁盘中的文件信息显示在屏幕上D.将计算机内存中的信息存入磁盘文件中答案(B)9fgetssnf函数的功能是()A.中读取长度为n的字符串存入指针s所指的内存B.从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C.文件f中读取n个字符串存入指针s所指的内存D.从文件f中读取长度为n-1的字符串存入指针s所指的内存答案(B)
10.以读写方式打开一个已有的文本文件file,下面有关fopen函数正确的调用方式为______.A.FILE*fp;fp=fopen“filel”“f”;B.FILE*fp;fp=fopen“filel”“r+”;C.FILE*fp;fp=fopen“filel”“rb”;D.FILE*fp;fp=fopen“filel”“rb+”;答案:B
11.在C程序中,可把整型数以二进制形式存放到文件中的函数是______.A.fprintf函数B.fread函数C.fwrite函数D.fputc函数答案:C
12.若fp是指向某文件的指针,且已经读到此文件末尾,则库函数feoffp的返回值是______.A.EOFB.0C.非零值D.NULL答案:C
13.在C语言中,用w+方式打开一个文件后,可以执行的文件操作是______.A.可任意读写B.只读C.只能先写后读D.只写答案:A
14.下列语句中,不能将文件型指针fp指向的文件内部指针置于文件头的语句是____.注假定能正确打开文件A.fp=fopen“abc.dat”“w”B.rewindfpC.feoffpD.fseekfp0L0答案:C
15.判断二进制文件结束方式是_____.A.fgetcfp==EOFB.fgetcfp!=EOFC.feoffp==0D.feoffp!=0答案:DA.fopen“C:\\user\readme.txt”“r”B.fopen“C:\\user\readme.txt”“r+”C.fopen“C:\\user\readme.txt”“rb”D.fopen“A:\\user\readme.txt”“w”答案:B
17.函数调用语句fseekfp101的含义是______.A.将文件内部位置指针移到距离文件头10个字节处B.将文件内部位置指针移到距离文件尾10个字节处C.将文件内部位置指针从当前位置向文件尾移10个字节处D.将文件内部位置指针从当前位置向文件尾头10个字节处答案:CA.#includemyfileB.#include“myfile”C.include“myfile.e”;D.#includemyfile.c答案:B
19.当顺利执行了文件关闭操作时,fclose函数的返回值是______.A.0B.TureC.-1D.1答案:A
20.fread和fwrite函数常用来要求一次输入输出_____数据A.一个整数B.一个实数C.一个字节D.一组答案:D二.填空题
1.在C语言中,数据文件可以用________和_________两种形式的代码存放答案ASCII码和二进制
2.假设文件指针指向readme.txt文本文件,将字符变量ch输出到该文件中的语言函数主要有_________、________和_________答案;fputcfwritefprintf
3.对于文本文件判断文件尾的方法是______,而二进制文件判断文件尾的方法却是______答案;fgetcfp==EOFfeoffp!=
04.rewind函数的作用是_________答案;使文件位置指针重新回到文件的开始答案;fopen“D:\\user\\abc.Txt””r+”
6.以数据块为单位对数据进行整体读写时如果ptr是指向内存中数据块的首地址,fp是文件指针,那么数据块中每个数据项目的大小为___________________答案;sizeof*ptr
7.以下程序用来统计文件中字母的个数,请填空________main{FILE*fp;longnum;charch;num=0;iffg=fopen“readme.txt””_______”==NULI{printf“Erroropenfile!”;exit0;}While________{________;If________num++;}Printf“num=%1d\n”num;Fclosefp;}答案;#includestdio.hr或者r+!feoffpch=fgetcfpch=’a’ch=’z’||ch=’A’ch=’z’
8.下面程序把一个浮点数组以二进制方式写入文件test.dat中,请填空#includestdio.hmain{Floatf
[6]={
3.2-
4.
3425.
040.
150.
5680.5};/*定义浮点数组并初始化*/inti;________fp=fopen“test_b.dat””wb”;fwrite________/*将6个浮点数写入文件中*/fclosefp;}答案;FILE*fpfsizeoffioat6fp9.把从键盘输入的字符保存到制定的文件中,“@“作为输入的结束标志,其中文件名由用户通过键盘,请填空#include”stdio.h”main{FILE*fp;charchfilename
[20];printf“请输入文件名\n”;getsfilename;iffp=________==NULL{printf“文件打开错误!”;exito;}Pritf“输入的数据为\n”;While________fputc________fp;}答案;fopenfilename”w”ch=getchar!=’@’ch
10.编写程序,将s=a+aa+aaa+…+aa…a(最后一项为n个a)的结果保存到result.txt文件中,其中a个是1~9的数字例如2+22+222+2222(此时民,a是2,n是4),请填空输出格式a=2;n=4;s=2468#includestdio.hPRINTintmintnlongs{FILE*out;ifout=fopen“result.txt””w+”!=NULLfprintfout”_______”________;fcloseout;}main{intinat;longs=0;printf“请输入n和a\n”;scanf%d%d”________;t=a;fori=1;i=n;i++{s=s+t;________;}PRINTans;}答案;a=%d;n=%d;s=%1dmnsnat=t*10+aDATAnextabcNullqNullnextDatanextData。