还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
大学计算机C语言期末复习题
(一)《附带答案》
一、单项选择题
1.以下不正确的C语言标识符是( )A.ABC B.abcC.a_bc D.ab.c2.以下正确的C语言标识符是( )A.%k B.a+bC.a123 D.test!
3.一个C程序的执行是从( )A.main函数开始,直到main函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main函数开始直到最后一个函数结束
4.在C程序中,main的位置( )A.必须作为第一个函数B.必须作为最后一个函数C.可以任意D.必须放在它所调用的函数之后5.C语言源程序的基本单位是( )A.过程 B.函数 C.子程序 D.标识符6.以下结果为整数的表达式(设有inti;charc;floatf;) .A.i+f B.i*c C.c+f D.i+c+f
7.以下不正确的语句(设有intpq)是( )A.p*=3; B.p/=q; C.p+=3; D.p=q;
8.以下使i的运算结果为4的表达式是( )A.inti=0j=0; i=3j+++i;B.inti=1j=0; j=i=i=3*2;C.inti=0j=1; j==1i=1:i=3;D.inti=1j=1; i+=j+=2;
9.设charch;以下正确的赋值语句是( )A.ch=123;B.ch=\xff;C.ch=\08;D.ch=\;10.设n=10i=4则赋值运算n%=i+1执行后n的值是( )A.0 B.3 C.2 D.
111.逗号表达式a=3*5a*4a+15的值为( ),a的值是( )
①A.15 B.60 C.30 D.不确定
②A.60 B.30 C.15 D.
9012.如果a=1b=2c=3d=4则条件表达式aba:cdc:d的值为 .A.1 B.2 C.3 D.
413.设intn=3;则++n的结果是( ),n的结果是( )A.2 B.3 C.4 D.
514.设intn=2;则++n+1==4的结果是( ),n的结果是( )
①A.true B.false C.1 D.0
②A.1 B.2 C.3 D.
415.设inta=2b=2;则a+++b的结果是( ),a的结果是( ),b的结果是( )A.2 B.3 C.4 D.
516.语句1234的结果是( )A.1 B.2 C.3 D.
417.设inta=04b;则执行b=a1;语句后,b的结果是( )A.4 B.04 C.8 D.
1018.sizeofdouble是一个( )表达式A.整型 B.双精度 C.不合法 D.函数调用
19.在C语言中,不同类型数据混合运算时,要先转换成同一类型后进行运算设一表达式中包含有intlongunsigned和char类型的变量和数据,则表达式最后的运算结果是( )类型的数据这四种类型数据的转换规律是( )
①A.int B.char C.unsigned D.long
②A.int-unsigned-long-char B.char-int-long-unsigned C.char-int-unsigned-long D.char-unsigned-long-int
20.有如下程序段 inta1a2; charc1c2; scanf%d%c%d%ca1c1a2c2; 若要求a1a2c1c2的值分别为10,20,A,B正确的数据输入是( ) A.10A20BCR B.10A20BCR C.10A20BCR D.10A20BCR
21.有如下程序,若要求a1a2c1c2的值分别为
10、
20、A、B,正确的数据输入是( ) main { inta1a2; charc1c2; scanf%d%da1a2; scanf%c%cc1c2; } A.1020ABCR B.1020CR ABCR C.1020ABCCR D.1020ABCR
22.有如下程序,输入数据12345678CR后,x的值是( ),y的值是( ) #includestdio.h main { intx; floaty; scanf%3d%fxy; } 1A.12345 B.123 C.45 D.345 2A.
45.000000 B.
45678.000000 c.
678.000000 D.
123.
00023.有如下程序,输入数据:12345CR后,x的值是( ),y的值是( ) #includestdio.h main { intx; floaty; scanf%3d%fxy; } 1A.12 B.123 C.12345 D.0 2A.
12.000000 B.
345.000000 C.
12345.000000 D.
0.
000000024.有如下程序,对应正确的数据输入是( ) #includestdio.h main { floatab; scanf%f%fab; printfa=%fb=%f\nab; } A.
2.04CR
5.67CR B.
2.
045.67CR C.A=
2.04b=
5.67CR D.
2.
045.67CR
25.有如下输入语句scanfa=%db=%dc=%dabc;为使变量a的值为1,b的值为3琧的值为2,从键盘输入数据的正确形式应是( ) A.132CR B.132CR C.a=1b=2c=3CR D.a=1b=2c=3CR
26.以下程序的执行结果是( ) #includestdio.h main { intsumpad; sum=pad=5; pad=sum++; pad++; ++pad; printf%d\npad; } A.7 B.6 C.5 D.
427.以下程序的执行结果是( ) #includestdio.h main { inti=010j=10; printf%d%d%d\n++ijj--; } A.11910 B.9910 C.01099 D.
109928.已知字母A的ASCII码是65,以下程序的执行结果是( ) #includestdio.h main { charc1=Ac2=Y; printf%d%d\nc1c2; } A.AY B.6565 C.6590 D.
658929.以下程序的执行结果是( ) #includestdio.h #includemath.h main { inta=1b=4c=2; floatx=
10.5y=
4.0z; z=a+b/c+sqrtdoubley*
1.2/c+x; printf%f\nz; } A.
14.000000 B.
15.000000 C.
13.700000 D.
14.
90000030.为了避免嵌套的if-else语义的二义性,C语言规定else总是与( )A.缩排位置相同的ifB.在其之前未配对的的ifC.在其之前未配对的最近的ifD.同一行上的if
31.选择出合法的if语句(设intxy;) A.ifa==bx++;B.ifa=bx++;C.ifabx++;D.ifa=bx++;
32.选择出合法的if语句(设int xabc;) A.ifx!=yifxy printfxy\n; elseprintfxy\n; elseprintfx==y\n;B.ifx!=y ifxyprintfxy\n else printfxy\n; elseprintfx==y\n;C.ifx!=yifxyprintfxy\n; elseprintfxy\n elseprintfx==y\n;D.ifx!=y ifxyprintfxy\n; elseprintfxy\n elseprintfx==y\n;
33.C语言用()表示逻辑真值A.true B.t或y C.非零整数值 D.整数
034.以下for循环是()forx=0y=0;y!=123x4;x++;A.无限循环 B.循环次数不定 C.执行4次 D.执行3次
35.下面有关for循环的正确描述是()A.for循环只能是用于循环次数已经确定的情况B.for循环是先执行循环语句,后判断表达试C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来
36.对于for表达式1;;表达式3可理解为()A.for表达式1;0;表达式3B.for表达式1;1;表达式3C.for(表达式1;表达式1;表达式3)D.for表达式1;表达式3;表达式
337.C语言中()A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环38.C语言中while和do-while循环的主要区别是( )A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句39.有以下程序#includestdio.h#defineN6main{charc[N];inti=0;for;iN;c[i]=getchari++;fori=0;iN;putcharc[i]i++;} 输入以下三行,每行输入都是在第一列上开始aCRbCRcdefCR程序的输出结果是( )A.abcdef B.a C.a D.a b b b c cd cdef d e f
40.以下程序的输出结果是( ) #includestdio.h main{inti;fori=1;i=5;i++{ifi%2 printf*;else continue;printf#;}printf$\n;}A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$
41.以下for语句构成的循环执行了( )次#includestdio.h#defineN2#defineMN+1#defineNUMM+1*M/2main{intin=0;fori=1;i=NUM;i++{n++;printf%dn;}printf\n;}A.5B.6C.8D.
942.以下程序的输出结果是( ).#includestdio.hmain{intnum=0;whilenum=2{num++;printf%d\nnum;}}A.1B.1C.1D.
122233443.以下程序段( ) x=-1;do{x=x*x;}while!x;A.是死循环 B.循环执行二次C.循环执行一次 D.有语法错误
44.以下关于数组的描述正确的是()A.数组的大小是固定的,但可以有不同的类型的数组元素B.数组的大小是可变的,但所有数组元素的类型必须相同C.数组的大小是固定的,所有数组元素的类型必须相同D.数组的大小是可变的,可以有不同的类型的数组元素
45.以下一维数组a的正确定义是( ) A.inta10;B.intn=10a[n];C.intn;D.#defineSIZE10scanf%dn;inta[SIZE]; inta[n];
46.在定义inta
[10];之后,对a的引用正确的是( )A.a
[10]B.a[
6.3]C.a6D.a[10-10]
47.以下对二维数组a进行正确初始化的是( ) A.inta
[2]
[3]={{12}{34}{56}};B.inta[]
[3]={123456};C.inta
[2][]={123456};D.inta
[2][]={{12}{34}};
48.以下对二维数组a进行不正确初始化的是( ) A.inta[]
[3]={321123};B.inta[]
[3]={{321}{123}};c.inta
[2]
[3]={{321}{123}};D.inta[][]={{321}{123}};
49.以下对字符数组word进行不正确初始化的是( ) A.staticcharword[]=Turbo\0;B.staticcharword[]={Turbo\0};C.staticcharword[]={Turbo\0};D.staticcharword[]=Turbo\0;
50.在定义inta
[5]
[4];之后,对a的引用正确的是( ) A.a
[2]
[4]B.a
[5]
[0]C.a
[0]
[0]D.a
[00]
51.在定义inta
[2]
[3];之后,对a的引用正确的是( ) A.a12B.a{13]C.a
[12][!1]D.a
[2]
[0]
52.以下正确的定义语句是( )A.intA[a];B.intA
[34];C.intA[]
[3];D.intA
[10];
53.以下给字符数组str定义和赋值正确的是( ) A.charstr
[10];str=China;B.charstr[]={China};C.charstr
[10];strcpystrabcdefghijklmn;D.charstr
[10]={abcdefghijklmn;
54.在执行inta[]
[3]={123456};语句后,a
[1]
[0]的值是( ) A.4B.1C.2D.
555.在执行inta[]
[3]={{12}{34}};语句后,a
[1]
[3]的值是()A.3B.4C.0D.
256.在执行charstr
[10]=China\0;strlenstr的结果是()A.5B.6C.7D.
957.设int*pi;以下正确的语句是()A.*p=10;B.i=p;C.i=*P;D.p=2*p+1;
58.设chars
[10];*p=s;以下不正确的表达式是()A.p=s+5;B.s=p+s;C.s
[2]=p
[4];D.*p=s
[0];
59.设char**s;以下正确的表达式是()A.s=computer;B.*s=computer;C.**s=computer;D.*s=c;
60.设有说明int*ptr[M];其中ptr是()A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M个整型元素的一维数组的指针D.具有M个指针元素的一维指针数组,每个元素都只能指向整型量
61.选择出i的正确结果()inti;char*s=a\045+045\b;fori=0;*s++;i++A.5B.8C.11D.
1262.如下程序的执行结果是()#includestdio.hmain{inti;char*s=a\n35\b;fori=0;*s++;i++printfi=%d\ni;}A.i=5B.i=6C.i=7D.i=
863.如下程序的执行结果是()#includestdio.hmain{inti;char*s=a\\\\\n;fori=0;s[i]!=\0;i++printf%c*s+i;}A.aB.a\C.a\\D.a\\\\
64.如下程序的执行结果是()#includestdio.hmain{inti;char*s=\\\;fori=0;s[i]!=\0;i++printf%c*s+i;}A.\B.aC.\D.不正确
65.如下程序的执行结果()#includestdio.hmain{staticinta[]={123456};int*p;p=a;*p+3+=2;printf%d%d\n*p*p+3;}A.13B.16C.36D.
1466.如下程序的执行结果是()#includestdio.hmain{staticinta[]
[4]={1357911131517192123};int*p
[4]i=1j=2;p=a;printf%d\n**p+i+j;}A.9B.11C.13D.
1767.以下delspace函数的功能是删除字符串s中的所有空格(包括Tab,回车符和换行符)请选择正确的编号填空delspacechar*s{intit;charc
[80];fori=0t=0;1;i++if!isspace2c[t++]=s[i];c[t]=\0;strcpysc;}1A.s[i]B.!s[i]C.s[i]=\0D.s[i]==\02A.s+iB.*c[i]C.*s+iD.*c+i
68.以下delnum函数的功能是删除字符串s中的数字字符请选择正确的编号填空delnumchar*s{intij;fori=0j=0;s[i]!=\0;i++if1{s[j]=s[i];j++;}2;}1A.s[j]0||s[j]9B.s[i]0||s[i]9C.s[j]0s[j]9D.s[i]0s[i]92A.s[j]=\0B.s[i]=\0C.s[j++]=\0D.s[i++]=\
069.以下comp函数的功能是按词典顺序比较两个字符串s和t的大小如果s大于t则返回正值,等于就返回零,小于则返回负值请选择正确的编号填空compchar*schar*t{for;*s==*t;___________if*s==\0return0;return*s-*t;}A.s++B.t++C.s++;t++D.s++t++
70.C语言中规定函数的返回值的类型是由()A.return语句中的表达式类型所决定B.调用该函数时的主调用函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指指定的函数类型所决定
71.对于C语言的函数,下列叙述中正确的是()A.函数的定义不能嵌套,但函数调用可以嵌套B.函数的定义可以嵌套,但函数调用不能嵌套C.函数的定义和调用都不能嵌套D.函数的定义和调用都可以嵌套
72.有一个函数的定义如下voidnewprintdouble*fdoublex{printf%f\n*fx;}则调用正确的语句是()A.newprintsin
0.5;B.newprintsin
0.5;C.newprintsin
0.5;D.newprintsin
0.5;
73.以下函数调用语句中含有()个实参funcexp1exn2exp3exp4exp5;A.1B.2C.4D.
574.以下程序的输出结果是()#includestdio.hmain{intk=4m=1p;p=funckm;printf%dp;p=funckm;printf%d\np;}funcabintab;{staticintm=0i=2;i+=m+1;m=i+a+b;returnm;}A.817B.816C.820D.
8875.以下程序的输出结果是()#includestdio.hmain{staticchar*a[]={MORNINGAFTERNOONEVENING};char**n;n=a;funcn;}funcchar**m{++m;printf%s\n*m;}A.为空B.MORNINGC.AFTERNOOND.EVENING
76.以下程序的输出结果是()main{inta=2i;fori=0;i3;i++printf%dfunca;}funcinta{intb=0;staticc=3;b++;c++;returna+b+c;}A.777B.777C.789D.
78977.以下程序的输出结果是()inti=10;main{intj=1;j=func;printf%dj;j=func;printf%dj;}func{intk=0;k=k+i;i=i+10;returnk;}A.00B.1020C.1010D.
202078.以下程序的输出结果是()main{inta=3b=2c=1;c-=++b;b*=a+c;{intb=5c=12;c/=b*2;a-=c;printf%d%d%dabc;a+=--c;}printf%d%d%d\nabc;}A.32123-2B.2513512C.25123-2D.
321351279.以下程序的输出结果是()func1intaintb{returna+b;}func2intaintb{returna-b;}func3int*tintxinty{return*txy;}main{intx*pintint;p=func1;x=func3p93;x+=func3func283;printf%d\nx;}A.9B.17C.3D.
2780.在说明一个结构体变量时系统分配给它的存储空间是 A.该结构体中第一个成员所需存储空间B.该结构体中最后一个成员所需存储空间C.该结构体中占用最大存储空间的成员所需存储空间D.该结构体中所有成员所需存储空间的总和
81.在说明一个共用体变量时系统分配给它的存储空间是 A.该共用体中第一个成员所需存储空间B.该共用体中最后一个成员所需存储空间C.该共用体中占用最大存储空间的成员所需存储空间D.该共用体中所有成员所需存储空间的总和
82.使用共用体union的目的是 A.将一组数据作为一个整体以便于其中的成员共享同一存储空间B.将一组具有相同数据类型的数据作为一个整体以便于其中的成员共享同一存储空间C.将一组相关数据作为一个整体以便程序中使用D.将一组具有相同数据类型的数据作为一个整体以便程序中使用
83.以下关于typedef的叙述不正确的是 A.用typedef可以定义各种类型名但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的名称来代表D.使用typedef便于程序的通用
84.在下列程序段中,枚举变量c1和c2的值分别是和main{enumcolor{redyellowblue=4greenwhite}c1c2;c1=yellow;c2=white;printf%d%d\nc1c2;}A.1B.3C.5D.
685.若有以下说明和语句:structworker{intno;char*name;}work*p=work;则以下引用方式不正确的是A.work.noB.*p.noC.p-noD.work-no
86.以下程序执行后的正确结果是structtree{intx;char*s;}t;funcstructtreet{t.x=10;t.s=computer;return0;}main{t.x=1;t.s=minicomputer;funct;printf%d%s\nt.xt.s;}A.10computerB.1minicomputerC.1computerD.10minicomputer
87.有如下定义structdate{intyearmonthday;};structworklist{charname
[20];charsex;structdatebirthday;}person;对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是()A.year=1958B.birthday.year=1958c.person.birthday.year=1958D.person.year=
195888.在如下结构体定义中,不正确的是()A.structstudent{intno;charname
[10];floatscore;}B.structstud
[20]{intno;charname
[10];floatscore;}C.structstudent{intno;charname
[10];floatscore;}stud
[20];D.struct{intno;charname
[10];floatscore;}stud
[100];
89.以下程序的功能是读入一行字符,且每个字符存入一个结点,按输入顺序建立一个链表的结点序列,然后再按相反顺序输出并释放全部结点请选择正确的编号填空#includestdio.h#includealloc.h#definegetnodetypetype*mallocsizeoftype#defineNULL0main{structnode{charinfo;structnode1;}*top*p;charc;top=NULL;whilec=getchar!=\n{p=getnode2;p-info=c;p-link=3;top=4;}whiletop!=NULL{p=5;top=p-link;printf%cp-info;freep;}}1A.*pB.*linkC.*topD.link2A.topB.pC.nodeD.structnode3A.topB.top-linkC.pD.p-link4A.linkB.pC.p-linkD.top-link5A.p-linkB.top-linkC.topD.link
90.阅读以下程序,请选择正确的编号填空#includestdio.htypedefstructstr1{charc
[5];char*s;}st;main{staticsts1
[2]={{ABCDEFGH}{IJKLMN}};staticstructstr2{stsr;intd;}s2={OPQRST32767};st*p[]={s1
[0]s1
[1]};printf%c\np
[0]-c
[1];输出为
(1)printf%s\n++p
[0]-s;输出为
(2)printf%c\ns
2.sr.c
[2];输出为
(3)printf%d\ns
2.d+1;输出为
(4)}1A.MB.JC.DD.B2A.ABCDB.EFGHC.LMND.IJK3A.QB.VC.YD.Y4A.-32768B.32768C.65535D.
091.当已存在一个abc.txt文件时,执行函数fopenabc.txtr+的功能是()A.打开abc.txt文件,清除原有的内容C.打开abc.txt文件,只能读取原有内容B.打开abc.txt文件,只能写入新的内容D.可以读取和写入新的内容
92.fopen函数的mode取值r和w时,它们之间的差别是()A.r可向文件读入w不可向文件读入B.r不可向文件写入w可向文件写入C.r不可由文件读出w可由文件读出D.文件不存在时,r建立文件,w出错
93.fopen函数的mode取值w+和a+时都可以写入数据,它们之间的差别是()A.w+时可在中间插入数据,而a+时只能在末尾追加数据B.w+时和a+时只能在末尾追加数据C.在文件存在时,w+时清除原文件数据,而a+时保留原文件数据D.w+时不能在中间插入数据,而a+时只能在末尾追加数据
94.若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是()A.r+B.wb+C.a+D.ab
95.若用fopen函数打开一个已存在的文本文件,保存该文件原有数据且可以读也可以写,则文件打开模式是()A.r+B.w+C.a+D.a
96.使用fseek函数可以实现的操作是()A.改变文件的位置指针的当前位置B.文件的顺序读写C.文件的随机读写D.以上都不对
97.以下不能将文件位置指针重新移动到文件开头位置的函数是()A.rewindfp;B.fseekfp00;C.fseekfp-longftellfp1;D.fseekfp02;
98.fread(buf642fp)的功能是()A.从fp文件流中读出整数64,并存放在buf中;B.从fp文件流中读出整数64和2,并存放在buf中;C.从fp文件流中读出64个字节的字符,并存放在buf中;D.从fp文件流中读出2个64个字节的字符,并存放在buf中;
99.检测文件流的文件位置指针在文件头的条件是()A.fp==0B.ftellfp==0C.fseekfp0SEEK_SETD.feoffp100.C语言中,宏定义有效范围从定义处开始,到源文件结束处结束,但可以用()来提前解除宏定义的作用A.#ifdefB.#endifC.#undefineD.#undef
101.以下不正确的叙述是()A.预处理命令行都必须以#开始B.在程序中凡是以#开始的语句行都是预处理命令行C.C程序在执行过程中对预处理命令进行处理D.#defineABCD是正确的宏定义102.以下正确的叙述是()A.在程序的一行中可以出现多个有效的预处理命令行B.使用带参宏时,参数的类型应与宏定义时的一致C.宏替换不占用运行时间,只占编译时间D.宏定义不能出现在函数内部103.以下不正确的叙述是()A.宏替换不占用运行时间B.宏名无类型C.宏替换只是字符替换D.宏名必须用大写字母表示104.以下正确的叙述是A.C语言的预处理功能是指完成宏替换和包含文件的调用B.预处理命令只能位于C源程序文件的首部C.凡是C源程序中行首以#标识的控制行都是预处理命令D.C语言的编译预处理就是对源程序进行初步的语法检查105.在文件包含预处理语句(#include)的使用形式中,当之后的文件名用(双括号)括起时,寻找被包含文件的方式是()A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录106.在文件包含预处理语句(#include)的使用形式中,当之后的文件名用(尖括号)括起时,寻找被包含文件的方式是()A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录107.C语言的编译系统对宏命令的处理()A.在程序运行时进行的B.在程序连接时进行的C.和C程序中的其他语句同时进行编译的D.在对源程序中其他语句正式编译之前进行的108.以下程序的输出结果是()#defineMINxyxyx:ymain{intijk;i=10;j=15;k=10*MINijprintf%dk;}A.15B.100C.10D.
150109.以下程序的输出结果是()#includestdio.h#defineADDy
3.54+y#definePRaprintf%dinta#definePR1aPRa;putchar\nmain{inti=4;PR1ADD5*i;}A.20B.23C.10D.0
二、填空题(将正确的答案填在相应的空中)
1.一个C程序有且仅有一个________函数
2.一个C源程序有________个main()函数和________个其他函数3.结构化设计中的三种基本结构是________4.C程序的执行是从________开始执行的5.C语言源程序的语句分隔符是________6.C语言开发的四个步骤是________7.表达式10/3的结果是________8.表达式10%3的结果是________
9.定义intxy;执行y=x=1++xx+2;语句后,Y的值是------10.设intx=9y=8;表达式x==y+1的结果是_________
11.设intx=10yz;执行y=z=x;x=y==z后,变量x的结果是__________
12.设inta=1b=2c=3d;执行d=!a+b+c后,d的结果是________13.设intx;当x的值分别为1234时,表达式x1==11:0的值分别是________,________,________,________
14.以下程序的执行结果是__________#includestdio.hmain{floatf=
3.1415927;printf%f%
5.4f%
3.3ffff;}
15.以下程序的执行结果是__________#includestdio.hmain{floatf=
3.5;printf%f%gff;}
16.以下程序的执行结果是___________#includestdio.hmain{floatf=
31.41592;printf%f%eff;}
17.以下程序的执行结果是___________#includestdio.hmain{charc=A+10;printfc=%c\nc;}
18.以下程序的执行结果是__________#includestdio.hmain{intabc;a=2;b=3;c=1;ifabifacprintf%d\na;elseprintf%d\nb;printfend\n;}
19.以下程序的执行结果是___________#includestdio.hmain{intabcdx;a=c=0;b=1;d=20;ifad=d-10;elseif!bif!cx=15;elsex=25;printfd=%d\nd;}
20.以下程序在输入52之后的执行结果是#includestdio.hmain{intstab;scanf%d%dab;s=1;t=1;ifa0s=s+1;ifabt=s+t;elseifa==bt=5;elset=2*s;printfs=%dt=%d\nst;}
21.以下程序的执行结果是_________#includestdio.hmain{intx=1y=0;switchx{case1:switchy{case0:printffirst\n;break;case1:printfsecond\n;break;}case2:printfthird\n;}}
22.执行以下程序,输入-10的结果是________,输入5的结果是__________,输入10的结果是__________,输入30的结果是________#includestdio.hmain{intxcm;floaty;scanf%dx;ifx0c=-1;elsec=x/10;switchc{case-1:y=0;break;case0:y=x;break;case1:y=10;break;case2:case3:y=-
0.5*x+20;break;default:y=-2;}ify!=-2printfy=%g\ny;elseprintferror\n;}
23.以下程序的执行结果是_________#includestdio.hmain{inta=2b=7c=5;switcha0{case1:switchb0{case1:printf@;break;case2:printf!;break;}case0:switchc==5{case0:printf*;break;case1:printf#;break;default:printf$;break;}default:printf;}printf\n;}
24.下列程序运行后的输出结果是___#includestdio.hmain{ints=0k;fork=7;k=0;k--{switchk{case1:case4:case7:s++;break;case2:case3:case6:break;case0:case5:s+=2;break;}}printfs=%d\ns;}
25.下列程序运行后的输出结果是__#includestdio.hmain{intij;fori=4;i=1;i--{printf*;forj=1;j=4-i;j++printf*;printf\n;}}
26.下列程序运行后的输出结果是________#includestdio.hmain{intijk;fori=1;i=6;i++{forj=1;j=20-2*i;j++printf;fork=1;k=i;k++printf%4di;printf\n;}}
27.下列程序运行后的输出结果是______#includestdio.hmain{intijk;fori=1;i=6;i++{forj=1;j=20-3*i;j++printf;fork=1;k=i;k++printf%3dk;fork=i-1;k0;k--printf%3dk;printf\n;}}
28.下列程序运行后的输出结果是__________#includestdio.hmain{intijk;fori=1;i=4;i++{forj=1;j=20-3*i;j++printf;fork=1;k=2*i-1;k++printf%3s*;printf\n;}fori=3;i0;i--{forj=1;j=20-3*i;j++printf;fork=1;k=2*i-1;k++printf%3s*;printf\n;}}
29.下列程序运行后的输出结果是________#includestdio.hmain{intijsummn=4;sum=0;fori=1;i=n;i++{m=1;forj=1;j=i;j++m=m*j;sum=sum+m;}printfsum=%d\nsum;}
30.定义inta[]={123456}*p=a;表达式(*++p++的值是_____
31.以下程序的执行结果是__________typedefstruct{longx
[2];inty
[4];charz
[8];}MYTYPE;MYTYPEa;main{printf%d\nsizeofa;}
32.有如下定义struct{intx;char*y;}tab
[2]={{1ab}{2cd}}*p=tab;则表达式*p-y的结果是____表达式*++p-y的结果是____
33.有如下定义struct{intx;inty;}s
[2]={{12}{34}}*p=s;则表达式++p-x的结果是____表达式++p-x的结果是____
34.以下程序的执行结果是________structstru{intx;charc;};main{structstrua={10x};funca;printf%d%c\na.xa.c;}funcstructstrub{b.x=20;b.c=y;}
35.以下程序执行的结果是______structstru{intx;charc;};main{structstrua={10x}*p=a;funcp;printf%d%c\na.xa.c;}funcstructstru*b{b-x=20;b-c=y;}
36.以下程序的执行结果是______main{union{inti
[2];longk;charc
[4];}r*p=r;p-i
[0]=0x39;p-i
[1]=0x38;printf%x%x%x%x\np-c
[0]p-c
[1]p-c
[2]p-c
[3];}
37.以下程序的执行结果是_______typedefunion{longx
[2];inty
[4];charz
[8];}MYTYPE;MYTYPEa;main{printf%d\nsizeofa;}
38.以下程序的执行结果是_______structst{intx;int*y;}*p;ints[]={10203040};structsta[]={1s
[0]2s
[1]3s
[3]4s
[3]};main{p=a;printf%dp-x;printf%d++p-x;printf%d*++p-y;printf%d\n++*++p-y;}
39.以下程序的执行结果是_______#includestdio.hmain{unionEXAMPLE{struct{intx;inty;}in;inta;intb;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf%d%d\ne.in.xe.in.y;}
40.C语言中根据数据的组织形式,把文件分为________和__________两种
41.使用fopenabcr+打开文件时,若abc文件不存在,则_________
42.使用fopenabcw+打开文件时,若abc文件已存在,则________
43.使用fopenabca+打开文件时,若abc文件不存在,则_________
44.使用fopenabca+打开文件后,所有的写操作均在文件末尾进行,这句话是_________
45.C语言中文件的格式化输入输出函数对是_________;文件的数据块输入输出函数对是__________;文件的字符串输入输出函数对是_______
46.C语言中文件指针设置函数是__________;文件指针位置检测函数是_______
47.将fp的文件位置指针移到离文件开头64个字节处,采用的函数是_________;将文件位置指针移到离当前文件位置前面32个字节处,采用的函数是______将文件位置指针移到离文件末尾后面16个字节处,采用的函数是______
48.以下程序的执行结果___________#includestdio.hmain{intin;FILE*fp;iffp=fopentempw+==NULL{printf不能建立temp文件\n;exit0;}fori=1;i10;i++fprintffp%3di;fori=0;i5;i++{fseekfpi*6LSEEK_SET;fscanffp%dn;printf%3dn;}fclosefp;}
49.以下程序的执行结果__________#includestdio.hmain{intin;FILE*fp;Iffp=fopentempw+==NULL{printf不能建立temp文件\n;exit0;}fori=1;i=10;i++fprintffp%3di;fori=0;i10;i++{fseekfpi*3LSEEK_SET;fscanffp%dn;fseekfpi*3L0;fprintffp%3dn+10;}fori=1;i=5;i++{fseekfpi*6L0;fscanffp%dn;printf%3dn;}fclosefp;}
50.有一个delcomn程序和包含如下两行内容的abc文件fp=fopentempr;/Opentempfileforread*/fscanffp%c%cij;/*readcharacteriandj*/则命令delcomnabcxyz执行后xyz文件的内容是__________/*filename:delcomn.c*/#includestdio.hmainintargcchar*argv[]{FILE*fp1*fp2;intci=0;ifargc3{printfUsage:delcomnfilename1filename2\n;exit0;}fp1=fopenargv
[1]r;fp2=fopenargv
[2]w;whilec=fgetcfp1!=EOFifc==\nfprintffp2\n;elseswitchi{case0:ifc==/i=1;elsefprintffp2%cc;break;case1:ifc==*i=2;else{fprintffp2/%cc;i=0;}break;case2:ifc==*i=3;break;case3:i=c==/0:2;break;}fclosefp1;fclosefp2;}
三、读程序
1、以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=2;charc=a;floatf=
3.0;printf1:%f\na+a*6/f+c%a;printf2:%d\na=f+5;printf3:%f\na1*f;printf4:%d\na23:2;printf5:%f\na=2*f;printf6:%d\n123-a;}
2.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=1;charc=a;floatf=
2.0;printf1:%d\na+2!=c-100;printf2:%d\nac=f4;printf3:%d\n!a==!f;printf4:%d\n!a1!=!c||1;printf5:%d\n!a23:0f!=10:1;printf6:%d\n123==333;}
3.以下程序的执行结果是什么?为什么#includestdio.hmain{inta=1;charc=a;floatf=
2.0;printf1:%d\na0a:-a;printf2:%d\nf==
3.0a=c:a=c;printf3:%d\n!a==0!!a:a;printf4:%d\nf0a02:1:a01:0;printf5:%d\na=0a=1:a=0;printf6:%d\nc==A01:10;}
4.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=1;charc=a;floatf=
2.0;printf1:%d\na+2c+2;printf2:%d\na=cf=c;printf3:%d\n!a==0f!=0c==A;printf4:%d\na00:1a01:2;printf5:%d\nf+
2.5a-10;printf6:%d\nacf5;}5.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=0234;charc=A;printf1:%o\na2;printf2:%o\na2;printf3:%o\nc3;printf4:%o\nc3;printf5:%o\na1+8;printf6:%o\na1-8;}
6.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=0234;charc=A;printf1:%o\n~a;printf2:%o\nac;printf3:%o\na|c;}7.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=-32768b;b=a-1;printfa=%db=%d\nab;}
8.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=32767b;b=a+1;printfa=%db=%d\nab;}
9.以下程序的执行结果是什么?为什么?#includestdio.hmain{longa=32767;longb;b=a+1;printfa=%ldb=%ld\nab;}
10.以下程序的执行结果是什么?为什么?#includestdio.hmain{inta=-32768;unsignedb;b=a;printfa=%db=%u\nab;}
11.以下程序的执行结果是_______#includestdio.hmain{inta[]={123456};int*p;inti;p=a;*p+3+=2;printfn1=%dn2=%d\n*p*p+3;}
12.以下程序的执行结果是______.#includestdio.hmain{int**p*qi=10;q=i;p=q;printf%d\n**p;}
13.以下程序的执行结果是______.#includestdio.hmain{intij;int*p*q;i=2;j=10;p=i;q=j;*p=10;*q=2;printfi=%dj=%d\nij;}
14.以下程序的执行结果是_______#includestdio.hmain{inti;int*p;p=i*p=2;p++;*p=5;printf%d*p;p--;printf%d\n;}
15.以下程序的执行结果是_______#includestdio.hmain{int*pi;i=5;p=i;i=*p+10;pintfi=%d\ni;}
16.以下程序的执行结果是_______#includestdio.hmain{chars[]=abcdefg;char*p;p=s;printfch=%c\n*p+5;}
17.以下程序的执行结果是_______#includestdio.hmain{inta[]={234};intsi*p;s=1;p=a;fori=0;i3;i++s*=*p+i;printfs=%d\ns;}
18.以下程序的执行结果是_______#includestdio.hmain{inta[]={123456}*p;forp=a
[5];p=a;p--printf%d*p;printf\n;}
19.以下程序的执行结果是_______#includestdio.hmain{inta
[12]={123456789101112}*p
[4]i;fori=0;i4;i++p[i]=a[i*3];printf%d\np
[3]
[2];}
20.以下程序的执行结果是_______#includestdio.hmain{charch
[2]
[5]={69348254}*p
[2];intijs=0;fori=0;i2;i++p[i]=ch[i];fori=0;i2;i++forj=0;p[i][j]\0p[i][j]=9;j+=2s=10*s+p[i][j]-0;printf%d\ns;}
21.以下程序的执行结果是_______#includestdio.hmain{char*p1*p2str
[20]=xyz;p1=abcd;p2=ABCD;strcpystr+1strcatp1+1p2+1;printf%sstr;}
22.以下程序的执行结果是______.#includestdio.hintx=1;main{funcx;printfx=%d\nx;}funcintx{x=3;}
23.以下程序的执行结果是______.#includestdio.hmain{intx=10;funcx;printfx=%d\nx;}funcintx{x=20;}
24.以下程序的执行结果是______.#includestdio.hmain{intk=4m=1p;p=funckm;printf%dp;p=funckm;printf%d\np;}funcintaintb{staticintm=0i=2;i+=m+1;m=i+a+b;returnm;}
25.以下程序的执行结果是______.#includestdio.hvoidfincint;main{intk=4;funck;funck;}funcinta{staticintm=0;m+=a;printf%dm;}
26.以下程序的执行结果是______.#includestdio.hmain{intswap;externintab;a=3;b=10;swap;printfa=%db=%d\nab;}intab;swap{inttemp;temp=a;a=b;b=temp;}
27.以下程序的执行结果是______.#includestdio.hmain{intswap;intab;a=3;b=10;swapab;printfa=%db=%d\nab;}swapabintab;{inttemp;temp=a;a=b;b=temp;}
28.以下程序的执行结果是______.#includestdio.hmain{intsisum;fori=1;i=10;i++s=sumi;printfs=%d\ns;}sumintk{staticintx=0;returnx+=k;}
29.以下程序的执行结果是______.#includestdio.hmain{intsisum;fori=1;i=10;i++s=sumi;printfs=%d\ns;}sumintk{intx=0;returnx+=k;}
30.以下程序的执行结果是______.#includestdio.hmain{inta[]={5678}i;funca;fori=0;i4;i++printf%da[i];}funcintb[]{intj;forj=0;j4;j++b[j]=2*j;}
31.以下程序的执行结果是_______.#includestdio.hmain{intabc;a=10b=12;c=multab;printf%d*%d=%d\nabc;}multxyintxy;{returnx*y;}
32.以下程序的执行结果是_______.#includestdio.hstaticinta=5;main{printfa=%d\na;p1;p2;}p1{printfa*a=%d\na*a;a=2;}p2{printfa*a*a=%d\na*a*a;}
33.以下程序的执行结果是_______.#includestdio.hstaticintx=5;main{autointx=3;printf
1.x=%d\nx;f1;f2;printf
4.x=%d\nx;}f1{x+=1;printf
2.x=%d\nx;}f2{intx=1;printf
3.x=%d\nx;}
34.以下程序的执行结果是_______.#includestdio.hmain{inta[]={3842}i;intx=0;fori=0;i4;i++{funcax;printf%dx;}printf\n;}funcsyints[]y;{staticintt=0;y=s[t];t++;}
35.以下程序的输出结果是________.main{intb=5;#defineb2#definefxb*xinty=3;printf%dfy+1;#undefbprintf%dfy+1;#defineb3printf%d\nfy+1;}
36.以下程序的输出结果是________.#defineDEBUGmain{inta=14b=15c;c=a/b;#ifdefDEBUGprintfa=%db=%dab;#endifprinfc=%d\nc;}
37.以下程序的输出结果是________.main{inta=20b=10c;c=a/b;#ifdefDEBUGprintfa=%db=%dab;#endifprinfc=%d\nc;}
四、编程题以下题目除非有特别说明,可以用第一至十二章的全部知识来实现P
1206.
36.
46.
86.11P
1417.
57.
87.13P
1868.
68.
138.16P
25810.
410.
1510.16P
29611.
311.
411.5答案
一、选择题
1.D
2.C
3.A
4.C
5.B
6.B
7.D
8.D
9.B
10.A
11.1C2C
12.A
13.1C2C
14.1C2C
15.1C2B3A
16.D
17.C
18.A
19.1D2C
20.A
21.D
22.BA
23.AB24A
25.C
26.A
27.B
28.D
29.C
30.C
31.A
32.A
33.A
34.C
35.D
36.B
37.D
38.A
39.C
40.A
41.C
42.C
43.C
44.C
45.D
46.D
47.B
48.D
49.A
50.C
51.C
52.D
53.B
54.A
55.C
56.A
57.C
58.B
59.B
60.C
61.B
62.A
63.C
64.A
65.B
66.C
67.1A2C
68.1B2A
69.D
70.D
71.A
72.A
73.B
74.A
75.C
76.C
77.B
78.C
79.B
80.D
81.C
82.A
83.B
84.1A2D
85.D
86.B
87.C
88.B
89.1B2D3A4B5C
90.1D2C3A4A
91.D
92.B
93.C
94.B
95.C
96.A`
97.D
98.D
99.B
100.D
101.D
102.C
103.D
104.D
105.B
106.A
107.D
108.A
109.B
二、填空题
1.main
2.1若干
3.顺序分支循环
4.main的第一个语句
5.分号
6.编辑编译连接运行
7.
38.
19.
410.
111.
112.
013.
1120314014.
3.
1415933.
14163.
14215.
3.
5000003.
516.
31.
4159203.14159e+
0117.c=k
18.end
19.d=
2020.s=2t=
321.firstthird
22.1y=02y=53y=104y=
523.#
24.s=
725.**********
26.
12233344445555566666627.
11211232112343211234543211234565432128.*************************
29.sum=
3330.
331.
2432.1a2c
33.
142334.10x
35.20y
36.
39038037.
838.
12404139.
4840.1文本文件2二进制文件
41.出错
42.清除abc原有的数据
43.建立新文件
44.正确的
45.1fscanf/fprintf2fwrite/fread3fgets/fputs
46.1fseek2ftell
47.1fseekfp64SEEK_SET2fseekfp32SEEK_CUR3fseekfp16SEEK_END
48.
1357949.
111315171950.fp=fopentempr;fscanffp%c%cij;
三、读程序
1.1:
7.0000002:63:
3.0000004:25:
6.0000006:
12.1:12:13:14:45:06:
13.1:12:03:14:25:16:
04.1:992:03:04:25:-96:
55.1:11602:473:10104:105:5006:
1066.1:1775432:03:
3357.a=-32768b=
327678.a=32767b=-
327689.a=32767b=
3276810.a=-32768b=
3276811.n1=1n2=
612.
1013.i=10j=
214.
5215.i=
1016.ch=f
17.s=
2418.
65432119.
1220.
638521.xbcdBCD
22.x=
123.x=
1024.
81725.
4826.a=10b=
327.a=3b=
1028.s=
5529.s=
1030.
024631.10*12=
12032.a=5a*a=25a*a*a=
833.
1.x=
32.x=
63.x=
14.x=
334.
000035.
8201236.a=14b=15c=
037.c=2。