软件专业课-C语言练习册

上传人:桔**** 文档编号:567960810 上传时间:2024-07-22 格式:PDF 页数:110 大小:244.50KB
返回 下载 相关 举报
软件专业课-C语言练习册_第1页
第1页 / 共110页
软件专业课-C语言练习册_第2页
第2页 / 共110页
软件专业课-C语言练习册_第3页
第3页 / 共110页
软件专业课-C语言练习册_第4页
第4页 / 共110页
软件专业课-C语言练习册_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《软件专业课-C语言练习册》由会员分享,可在线阅读,更多相关《软件专业课-C语言练习册(110页珍藏版)》请在金锄头文库上搜索。

1、C 语言专业课资料习题集汇总精通教育计算机组编第一章程序设计的基本概念1.由 C 语言编写的代码程序A.可直接执行B.是一个源程序C.经过编译即可执行D.经过编译解释才能执行2.C 语言源程序的扩展名为A.objB.cC.exeD.cpp3.C 语言处理系统必须执行的步骤依次为 、链接。4.在 C 语言中对源程序进行编译生成的目标文件的扩展名是 。5.C 程序设计的三种基本结构是:选择结构、循环结构和 。6.一个 C 语言程序的基本组成单位是 。7.一个 C 语言源程序由若干个 组成。8.一个 C 源程序至少应该有一个 函数。9.一个 C 语言程序的执行起点是 。10.()C 语言程序通过编译

2、、运行后,其结果都是正确的。11.()C 语言每个语句必须以“;”结束。12.()构成 C 程序的基本单位是函数。13.()C 语言中所有函数的执行都是从主函数开始的。第二章 C 程序设计的初步知识1.(1)按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是A.大写字母B.中划线C.数字字符D.下划线(2)下列选项中,不能用作标识符的是 A._1234_B._1_2C.int_2_D.2_int_(3)以下选项中合法的用户标识符是A.longB._2TestC.3DmaxD.A.dat(4)以下不能定义为用户标识符的是A.MainB._0C._intD.sizeof(5)下列定义变

3、量的语句错误的是A.int_int;B.doubleint_; C.charFor;D.floatUS$;(6) 以下选项中不合法的标识符是A.printB.FORC.&aD._00(7)以下不合法的用户标识符是Aj2_KEYB.DoubleC.4dD._8_(8)以下 C 语言用户标识符,不合法的是A._1B.AaBcC.a_bD.a-b2.在 C 语言中,最简单的数据类型包括A整型、字符型、逻辑型B整型、实型、字符型C整型、逻辑型、日期型D整型、日期型、通用型3.(1)在 C 语言中,整型数据分为A.二进制、八进制、十进制B.二进制、十进制、十六进制C.八进制、十进制、十六进制D.二进制、

4、八进制、十进制、十六进制(2)C 源程序不能表示的进制为A.八进制B.二进制C.十六进制D.十进制4.(1)在 C 语言中,合法的实型常数是A.5E2.0B.E-3C.2E0D.1.3E(2)在 C 语言中,合法的实型常数是A.1.2E0.5B.3.14159EC.5E-3D.E15(3)以下选项中,不能作为合法常量的是A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0(4)以下不合法的数值常量是A.011B.le1C.8.0E0.5D.0xabcd(5)以下选项中,能用作数据常量的是A.o115B.0118C.1.5e1.5D.115(6)以下选项中,合法的一组

5、 C 语言数值常量是A.028B.12.C.177D.0x8A.5e-3OXa234e1.510,000-0xf4.5e0Oabc3.e55.(1)在 C 语言中,非法的字符常量是A.tB.17C.nD.xaa(2)以下不合法的字符常量是A.018B.C.D.xcc(3)以下选项不属于字符常量的是A.CB.CC.xCCD.072(4)以下选项中,非法的字符常量是A.101B.65C.xffD.0196.在 C 语言中,运算对象必须为整型的运算符是ABC+=D%7.在 C 语言中,以下关于运算符叙述错误的是A.在 C 语言中,逗号运算符的优先级最低B.在 C 语言中,赋值运算符自右向左运算C.在

6、 C 语言中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算D.在 C 语言中,+、-运算符可以改变变量的值8.在 C 语言中,以下非法的表达式是A.0=x0;D.k=i=j;10.(1)表达式 3.6-5/2+1.2+5%2 的值是A.4.3B.4.8C.3.3D.3.8(2)若有定义语句:intx=12,y=8,z;,在其后执行语句 z=0.9+x/y;,则 z 的值为A.1.9B.1C.2D.2.411.(1)设有语句:inta=3;则执行了语句 a+=a-=a*a;变量 a 的值是A.3B.0C.9D.-12(2)设有语句:intx=10;则执行了语句 x+=x-=x-x;变

7、量 x 的值是A.10B.20C.40D.30(3)设有语句:inta=0;则执行语句 a+=(a=8);变量 a 的值是A.0B.8C.16D.2412.以下程序的输出结果是main()inti=10,j=1;printf(%d,%dn,i-,+j);A.9,2B.10,2C.9,1D.10,1main()inta=12,b=12;printf(%d%dn,-a,+b);A.1010B.1212C.1110D.1113main()intx=023;printf(%dn,-x);A.17B.18C.23D.2413.以下程序的输出结果是main()intx=100,y=200;printf(%

8、dn,(x,y);A.200B.100C.100200D)20010014.以下程序的输出结果是main()intx=10,y=3,z;printf(%dn,z=(x%y,x/y);A.1B.0C.4D.315.intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是A.k+B.k+=1C.+kD.k+116.以下程序的输出结果是(1)main()intk=11;printf(k=%d,k=%o,k=%xn,k,k,k);A.k=11,k=12,k=11B.k=11,k=13,k=13C.k=11,k=013,k=0xbD.k=11,k=13,k=b(2)main()intk=17

9、;printf(%d,%o,%xn,k,k,k);A.17,021,0x11B.17,17,17C.17,0x11,021 D.17,21,1117.以下程序main()intm=0256,n=256;printf(%o%on,m,n);程序运行后的输出结果是A.02560400B.0256256C.256400D.40040018.已知在 ASCII 码中,字母 A 的序号为 65,以下程序的输出结果是main()charc1=A,c2=Y;printf(%d,%dn,c1,c2);A.65,90B.A,YC.65,89D.因输出格式不合法,输出错误信息19.已知在 ASCII 码中,字母

10、A 的序号为 65,以下程序的输出结果是main()charch1,ch2;ch1=A+5-3;ch2=A+6-3;printf(%d,%cn,ch1,ch2);A.67,DB.B,CC.C,DD.不确定的值20.以下程序的输出结果是main()charx=f;printf(%cn,A+(x-a+1);A.GB.HC.ID.J21.以下程序的输出结果是main()charc=z;printf(%c,c-25);A.aB.ZC.z-25D.y22.C 语言标识符的第一个字符必须为下划线或者 。23.在 C 语言中,整型常量的书写形式包括:八进制、十进制和 进制。24.在 C 语言中,运算符的操作

11、数必须是整型的是 。25.有语句 inti=-19,j=i%4;printf(%dn,j);则输出结果是 。26.设 x 和 y 均为 int 型变量,且 x=1,y=2,则以下表达式 1.0+x/y 的值 。27.设 intx=7,y=3,则表达式 x%y+x/y 的值是 。28.请写出数学式 a/bc 的 C 语言表达式 。29.设 inta=9,b=6,c;,执行语句 c=a/b+0.8;后 c 的值是 。30.设 charw;intx;floaty;doublez;,则表达式 w*x+z-y 的值的类型是 。31.设 inta;floatb;charc;longd;doublee;,则

12、表达式 a/c-b+d-e 值的类型是 。32.设 inti;floatf=3.14;,执行 i=(int)f;后,变量 i 的值是 。33.设 floatx=23.65;,则执行语句 printf(%dn,(int)(x+0.5);后输出结果是 。34.若 a,b 和 c 均是 int 型变量,则计算表达式 a=(b=4)+(c=2)后,a 值为 。35.设 inta=37;,则执行语句 a+=a%=9;后,变量 a 的值是 。36.设 intj=5;,则执行语句 j+=j-=j*j;后,变量 j 的值是 。37.设 inta=2;,则执行 a+=a*=15;后,变量 a 的值是 。38.以

13、下程序运行后的输出结果是 。main()inta=0,b=0,c=0;c=(a+=a-=5),(a=b,b+3);printf(%d,%d,%dn,a,b,c);39.执行语句 y=10;x=y+;后变量 x 的值为 。40.设 intx=011;printf(%dn,+x);后的输出结果是 。41.设 inta=010,b=10;则语句 printf(%d,%dn,a+,-b);的结果为 。42.设 intx=14;,则表达式 x+%-5 的值为 。43.利用运算符-,下列两条语句 b=5+a;a-=1;可以仅由一条语句实现,这条语句是 。44.在 C 语言中,优先级最低的运算符是 。45.

14、若 x、i、j 和 k 都是 int 型变量,则计算下面表达式 x=(i=4,j=16,k=32)后,x 的值为 。46.若 a 是 int 型变量,则表达式(a=4*5,a*2),a+6 的值为 。47.设 inta,b;,表达式 a=2,b=5,b+,a+b 的值是 。48.在 C 语言中,假设所有变量均为整型,则表达式(a=3,b=7,a+,a+b)的值是 。49.设 inta,b,c;则执行 a=(b=3,c=5,b=10);后变量 a 的值是 。50.若定义了 inta=1;,则执行 printf(%dn,(a=a+4,a+5),a+6);语句的输出结果是 。51.()C 程序中,%

15、是只能用于整数运算的运算符。52.()在 C 程序中,APH 和 aph 是两个不同的变量。53.()x=(i=4,j=16,k=32);x 的结果是 32。54.()常量-1 按无符号整型输出是,现实 65535。55.()print 可以作为变量名使用。56.()intIf=0;会出现编译错误。57.()变量一旦被说明,则该变量被分配存储空间。第三章顺序结构1.有以下程序main()inta=666,b=888;printf(%dn,a,b);程序运行后的输出结果是A.错误信息B.666C.888D.666,8882.设有如下程序段,则以下叙述中正确的是main()intx=2002,y=

16、2003;printf(%dn,(x,y);A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 20033.以下程序的输出结果是main()inta=1234;printf(%2dn,a);A.12B.34C.1234D.提示出错,无结果4.运行时从键盘上输入 9876543210(表示回车),则该程序的输出结果是main()inta;floatb,c;scanf(%2d%3f%4f,&a,&b,&c);printf(a=%d,b=%f,c=%fn,a,b,c);A.a=98,b=765,c=4321B.a=10,b=432,c

17、=8765C.a=98,b=765.000000,c=4321.000000D.a=98,b=765.0,c=4321.05.(1)设变量均已正确定义,若要通过 scanf(%d%c%d%c,&a1,&c1,&a2,&c2);语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是(注:代表空格字符)A.10X20YB.10X20YC.10XD.10X20Y20Y(2)若有定义:inta,b;,通过语句 scanf(%d,%d,&a,&b);,能把整数 3 赋给变量 a,5 赋给变量 b 的输入数据是()A.35B.3,5C.

18、3;5D.356.(1)以下程序运行后的输出结果是 。main()inta=10;printf(%d,%o,%xn,a,a,a);(2)以下程序运行后的输出结果是 。main()inta,b,c;a=25;b=025;c=Ox25;printf(%d%d%dn,a,b,c);(3)以下程序运行后的输出结果是 。main()inta=1,b=2;a=a+b;b=a-b;a=a-b;printf(%d,%dn,a,b);(4)设整型变量 a 和 b 中的值分别为 7 和 9,要求按一下格式输出 a 和 b 的值:a=7b=9请完成输出语句:printf( ,a,b);7.(1)有程序如下,要求给

19、i 赋 10,给 j 赋 20,则应该从键盘输入 。main()inti,j;scanf(i=%d,j=%d,&i,&j);printf(i=%d,j=%d,i,j);(2)输入 123456,则输出结果是 。main()inta,b;scanf(%2d%2d,&a,&b);printf(%d,%dn,a,b);8.对应 scanf(a=%d,b=%d,&a,&b);语句的输入 a 为 3,b 为 7 的键盘输入格式是 。9.不用第三个变量,将变量 a 和 b 的值进行互换的操作是 。10.()语句 scanf(%5.2f,&a);是非法的。11.()语句 printf(%d,3)的输出结果是

20、 51。12.()常量-1 按无符号整型输出是,现实 65535。13.()C 语言本身未提供输入输出语句,但可通过输入输出函数来实现数据的输入输出。14.()当输入数据时,必须指明变量的地址。第四章选择结构1. 以下程序的输出结果是main()inta=3,b=4;printf(%dn,a=y)&(y=z)B.(x=y)AND(y=z)C.(x=y=z)D.(x=y)&(y=z)4. 能正确表示 a10 或 a0 的关系表达式是A.a=10ora=10|a=10|a=10&ab)&(n=cd);后 n 的值为A.1B.2C.3D.46. 以下程序的输出结果是#includemain()int

21、a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ab);printf(%d,%dn,k,m);A.0,0B.0,1C.1,0D.1,17. 设 x、y、t 均为 int 型变量,则执行语句:x=y=3;t=+x|+y;后,y 的值为A.1B.2C.3D.48. 设 intx=-1;执行表达式+x|+x|+x|+x,x 的值是A.0B.1C.2D.49. 设 a=1,b=2,c=3,d=4,则表达式 ab?a:cd?a:d 的结果是A.4B.3C.2D.110.设 w、x、y、z、m 均为 int 型变量,则以下程序段执行后,m 的值w=1;x=2;y=3;z=4;m=(wx)?w:

22、x;m=(my)?m:y;m=(mz)?m:z;A.4B.3C.2D.111.若有条件表达式(exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是A.(exp=0)B.(exp!=0)C.(exp=1) D.(exp!=1)12.以下程序的输出结果是#includemain()inta=2,b=-1,c=2;if(ab)if(bb)if(bc)printf(%d,d+1);elseprintf(%d,+d+1);printf(%dn,d);程序运行后的输出结果是A.2B.3C.43D.4414.以下程序段的输出结果是main()intx=1,y=2,z=3;if(xy)if(y

23、z)printf(%d,+z);elseprintf(%d,+y);printf(%dn,x+);A.331B.41C.2D.115.若执行以下程序时从键盘上输入 9,则输出结果是main()intn;scanf(%d,&n);if(n+5)printf(%d,x);elseprintf(%dn,x-);A.7 和 5B.6 和 3C.7 和 4D.6 和 417.已知 intx=10,y=20,z=30;以下语句执行后 x,y,z 的值是if(xy)z=x;x=y;y=z;A.x=l0,y=20,z=30B.x=20,y=30,z=30C.x=20,y=30,z=10D.x=20,y=30,

24、z=2018.下面的程序的输出结果是main()intx=3,y=0,z=0;if(x=y+z)printf(*);elseprintf(#);A.有语法错误不能通过编译B.输出*C.可以通过编译,但是不能通过连接D.输出#19.以下程序的输出结果是main()inta=5,b=4,c=3,d=2;if(abc)printf(%dn,d);elseif(c-1=d)=1)printf(%dn,d+1);elseprintf(%dn,d+2);A.2B.3C.4D.520.若运行时从键盘上输入 2.0(表示回车),则下面程序的输出结果是main()floatx,y;scanf(%f,&x);if

25、(x0.0)y=0.0;elseif(x5.0)&(x!=2.0)y=1.0/(x+2.0);elseif(x0);的输出结果是 。25.执行 printf(%dn,1+!2+(3b)&(c=1)后 c 的值是 。27.设 inta=-3,b=7,c=-1;则执行(a=0)&(a=a%b3|-b4;后变量 c 的值为 。29.设 a、b、c 为整型变量,若 a 的值为 1,b 的值为 2,则执行 c=a+|b+;语句后,变量 b 的值为 。30.设 inty;执行表达式(y=4)|(y=5)|(y=6)后,y 的值是 。31.设 intm=0;,执行表达式 m|(m=2)|(m=3)|(m=4

26、)后,m 的值是 。32.设 inta=0,b=0,c=2,d=4;,则执行(c=a=b)|(d=b=a);后变量 d 的值是 。33.设 inta=1,b=2,m=2,n=2;,执行表达式(m=a=0?x:-x;后 y 的值是 。35.设 inta=1,b=2,c=3,d=4,f;,执行语句 f=(a!=b)?c+:d+;后 f 的值是 。36.设 intx=1,y=3,z;,执行 z=xy?+x:y+;后,z 的值是 。37.()7&3+12 的值是 15。38.()运算符的优先级依次为(由高到低):!(非)、关系运算符、算术运算符、&和|、赋值运算符。39.()if(a=0)i=1;是合

27、法的 C 语句。40.【程序】#includemain()inti,j,k,a=3,b=2;i=(-a=b+)?-a:+b;j=a+;k=b;printf(i=%d,j=%d,k=%dn,i,j,k);【运行结果】41.【程序】#includemain()inta=1,b=3,c=5,d=4,x;if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;printf(x=%dn,x);【运行结果】42.【程序】#includemain()intx=0,y=1;switch(x)case0:switch(y)case1:printf(

28、*1*n);break;case2:printf(*2*n);break;case1:printf(*3*n);break;【运行结果】43.【程序】#includemain()intx=2,y=4;switch(x)case2:switch(y)case4:printf(firstn);break;case8:printf(secondn);break;case4:printf(thirdn);break;【运行结果】44.程序运行时,输入 A#includemain()charn;scanf(%c,&n);switch(n)casea:caseA:printf(nverygood);cas

29、eb:caseB:printf(ngood);casec:caseC:cased:caseD:printf(npass);casee:caseE:printf(nwarn);default:printf(nerror);【运行结果】第五章循环结构1. 以下循环的输出结果是intn=10;while(n7)n-;printf(%dn,n);A.10B.9C.10D.998988787762. 以下程序的输出结果是main()intnum=0;while(numbc)t=a;a=b;b=t;c+;printf(%d,%d,%d,a,b,c);A.2,3,0B.3,2,0C.3,2,-1D.2,3,

30、-16. 当执行以下程序段时:x=-1;dox=x*x;while(!x);A循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误7. 有以下程序段,则此处 do-while 循环的结束条件是intn=0,p;doscanf(%d,&p);n+;while(p!=12345&n3);A.p 的值不等于 12345 并且 n 的值小于 3B.p 的值等于 12345 并且 n 的值大于等于 3C.p 的值不等于 12345 或者 n 的值小于 3D.p 的值等于 12345 或者 n 的值大于等于 38. 若有以下程序,结果正确的是main()intx=3;dopr

31、intf(%dn,x-=2);while(!(-x);A.输出的是 1B.输出的是 1 和-2C.输出的是 3 和 0D.是死循环9. 若要使程序的输出值为 2,则应该从键盘给 n 输入的值是main()ints=0,a=1,n;scanf(%d,&n);dos+=1;a=a-2;while(a!=n);printf(%dn,s);A.-1B.-3C.-5D.010.以下程序的输出结果是#includemain()inta,b,t;for(a=3,b=0;!a=b;a-,b+)if(ab)t=a;a=b;b=t;printf(%d,%dn,a,b);A.4,1B.1,4C.4,-1D.-1,4

32、11.执行语句:for(i=1;i+8;y=+i)printf(%d%d,x-,y);A.10192B.9876C.10990D.10109113.设 j 为 int 型变量,则下面 for 循环语句的执行结果是for(j=10;j3;j-)if(j%3)j-;-j;-j;printf(%d,j);A.63B.74C.62D.7314.以下程序的输出结果是#includemain()inti=0,s=0;doif(i%2)i+;continue;i+;s+=i;while(i7);printf(%dn,s);A.16B.12C.28D.2115.以下程序的输出结果是#includemainin

33、ta,b;for(a=1,b=1;a=10)break;if(b%3=1)b+=3;continue;printf(%dn,a);A.101B.6C.5D.416.以下程序的输出结果是#includemain()inti;for(i=1;i=5;i+)if(i%2)printf(*);elsecontinue;printf(#);printf($n);A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$17.有以下程序,程序执行后输出结果是#includemain()inti,n=0;for(i=2;i5;i+)doif(i%3)continue;n+;while(!i);n+;p

34、rintf(n=%dn,n);A.n=5B.n=2C.n=3D.n=418.C 语言的三种循环语句是 、 、 。19.设 for(k=0;k0;i-);后,变量 i 的值是 。22.()for(表达式 1;表达式 3)可理解为 for(表达式 1;1;表达式 3)。23.()break,return 所起的作用是一样的,都是跳出循环。24.()for(;)S 中的语句 S 必执行无穷多次。25.【程序】#includemain()inta,s,n,count;a=2;s=0;n=1;count=1;while(count=4)n=n*a;s=s+n;+count;printf(s=%dn,s)

35、;【运行结果】26.【程序】#includemain()inta=1,b=10;dob-=a;a+;while(b-0);printf(a=%d,b=%dn,a,b);【运行结果】27.【程序】#includemain()inti=10,j=0;doj=j+i;i-;while(i2);printf(%dn,j);【运行结果】28.有以下程序:程序运行时,从键盘输入:01main()chark;inti;for(i=1;i3;i+)scanf(%c,&k);switch(k)case0:printf(anothern);case1:printf(numbern);【运行结果】29.【程序】#i

36、ncludemain()inti;for(i=0;i3;i+)switch(i)case1:printf(%d,i);case2:printf(%d,i);default:printf(%d,i);【运行结果】30.【程序】#includemain()inta=0,i;for(i=1;i5;i+)switch(i)case0:case3:a+=2;case1:case2:a+=3;default:a+=5;printf(%dn,a);【运行结果】31.【程序】#includemain()intk,s;for(k=1,s=0;kk)break;elses+=k;printf(%d,%d),k,s

37、);【运行结果】32.【程序】#includemain()inti,j,x=0;for(i=0;i2;i+)x+;for(j=0;j3;j+)if(j%2)continue;x+;x+;printf(x=%dn,x);【运行结果】33.【程序】程序运行时输入 6514#includemain()intm,n;scanf(%d%d,&m,&n);while(m!=n)while(mn)m-=n;while(nm)n-=m;printf(m=%d,n=%dn,m,n);【运行结果】第六章函数1. 以下叙述中正确的是A.在 C 程序中,主函数必须位于程序的最前面B.在 C 程序中,一行只能写一条语句

38、C.C 程序的基本结构是程序行D.C 语句是完成某种程序功能的最小单位2. C 语言规定,在一个 C 程序中,主函数的位置A.必须在开始B.必须在最后C.可以任意D.必须在系统调用的库后3. 一个 C 语言程序由A.若干过程组成B.若干子程序组成C.若干程序段组成D.若干函数组成4. 以下叙述中正确的是A.构成 C 程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main()函数必须放在其它函数之前 D.所有被调用函数一定要在调用之前进行定义5. 以下说法中正确的是A.C 语言程序总是从第一个函数开始执行B.在 C 语言程序中,要调用的函数必须在 main()函数中定义C.C 语言程

39、序总是从 main()函数开始执行D.C 语言程序中的 main()函数必须放在程序的开始部分6. 在 C 语言中,以下正确的说法是A.实参和与其对应的形参各占用独立的存储单元B.实参和与其对应的形参共占用一个存储单元C.只有当实参和与其对应的形参同名时才共占用相同的存储单元D.形参是虚拟的,不占用存储单元7. 在 C 语言中,以下不正确的说法是A.实参可以是常量,变量或表达式B.形参可以是常量,变量或表达式C.实参可以为任意类型D.如果形参和实参的类型不一致,以形参类型为准8. C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是A.地址传递B.值传递C.有实参传给形参,再由形

40、参传给实参D.由用户指定传递方式9. 在 C 语言中,以下函数值的类型是fun(floatx)floaty;y=3*x4;returny;A.intB.autoC.voidD.float10.C 语言规定,函数返回值的类型是由()决定的。A.return 语句中的表达式类型B.调用该函数时的主调函数类型C.调用该函数时由系统临时D.在定义函数时所指定的函数类型11.有如下函数调用语句:fun(rec1,rec2+rec3,(rec4,rec5);在该函数调用语句中,含有的实参个数是A)2B)3C)4D)512.以下程序段的输出结果是#includeintfun(intx,inty)return

41、(x+y);main()inta=1,b=2,c=3,sum;sum=fun(a+,b+,a+b),c+);printf(%dn,sum);A.6B.7C.8D.913.C 语言规定,程序中各函数之间A.既允许直接递归调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用14.以下程序的输出结果是#includelongfun(intn)longs;if(n=1|n=2)s=2;elses=n-fun(n-1);returns;main()printf(%ldn,fun(3);A.1B.2C.3D.415.以

42、下程序的输出结果是#includelongfib(intn)if(n2)return(fib(n-1)+fib(n-2);elsereturn(2);main()printf(%ldn,fib(3);A.2B.4C.6D.816.以下程序的输出结果是#includeintf(intx)inty;if(x=0|x=1)return(3);elsey=x*x-f(x-2);returny;main()printf(%dn,f(3);A.0B.9C.6D.817.已知一个函数的定义如下:doublefun(intx,doubley)则该函数正确的函数原型声明为:A.doublefun(intx,do

43、ubley)B.fun(intx,doubley)C.doublefun(int,double);D.fun(x,y);18.以下正确的描述是A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用均不可以嵌套D.函数的定义和函数的调用均可以嵌套19.已知函数定义:voiddothat(intn,doublex),其函数声明的写法为 。20.C 语言函数返回类型的默认定义类型是 。21.函数的实参传递到形参有两种方式: 和 。22.在一个函数内部直接或间接调用该函数成为函数 的调用方式。23.可以将被调函数中获得的值返回给主调函数的

44、语句是 。24.C 语言规定简单变量做实参的时候,它和对应形参之间的数据传递方式是 。25.若函数调用语句为 fun(a,b,fun(a+b,a-b,b);,则函数 fun 的参数个数是 。26.若函数调用语句为 func(rec1,rec2+rec3,(rec4,rec5);则含有的实参个数是 。27.()unsigned 和 void 在 C 中都是保留的。28.()在 C 语言中,除了 main 函数外,任何函数都可以递归调用。29.()所有被调用的函数一定要在调用之前进行定义。30.()C 语言中所有函数的执行都是从主函数开始的。31.()C 语言所有函数的执行都是从主函数开始。32.

45、()函数只能调用其他函数,不能调用自身。33.()主函数只能调用其他函数,不能调用自身。34.()C 程序中有调用关系的所有函数必须放在同一个源程序文件中。35.()通过 return 语句,函数可以带回一个或者一个以上的返回值。36.【程序】#includevoidechonum(inti,intj)intt;t=i;i=j;j=t;printf(i=%d,j=%dn,i,j);main()inti=1,j=2;echonum(i,j);printf(i=%d,j=%dn,i,j);【运行结果】37.【程序】#includeintfun(intx)intp;if(x=0|x=1)p=3;el

46、sep=x-fun(x-2);returnp;main()printf(%dn,fun(7);【运行结果】38.【程序】#includeintpower(intx,intn)intp;if(n0)p=power(x,n-1)*x;elsep=1;return(p);main()intx=2,n=3;printf(%dn,power(x,n);【运行结果】第七章数组1.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达2.在 C 语言中,一维数组的定义方式为:类型说明符数组名A.常量表达式B.整型表达式C.整型常量或整型

47、表达式D.整型常量3.以下错误的数组定义形式是A.inta10B.inta3+2;C.inta3*3;D.inta3.2;4.以下正确的数组定义形式是A.intn;scanf(%d,&n);intan;B.inta1.10;C.inta3.2;D.#defineN10intaN;5.以下对一维整型数组 a 的正确说明是A.inta(l0);B.intn=l0,an;C.intn;D.#defineSIZE10scanf(%d,&n);intan;intaSIZE;6.以下程序的输出结果是main()inti,a10;for(i=9;i=0;i-)ai=10-i;printf(%d%d%d,a2

48、,a5,a8);A.258B.741C.852D.3697.以下程序的输出结果是main()inti,k,a10,p3;k=5;for(i=0;i10;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;printf(%dn,k);A.20B.21C.22D.238.以下程序的输出结果是main()intp7=11,13,14,15,16,17,18,i=0,k=0;while(i7&pi%2)k=k+pi;i+;printf(%dn,k);A.58B.56C.45D.249.下列二维数组初始化语句中正确且与语句 floata3=0,

49、3,8,0,9等价于A.floata2=0,3,8,0,9;B.floata3=0,3,8,0,9,0;C.floata3=0,3,8,0,9,0; D.floata2=0,3,8,0,9,0;10.下列二维数组初始化语句中,正确的是A.inta3=8,0,7,0,3,1,2,5;B.inta=9,3,1,8,4,2,3,5,7;C.floata23=1,2,3,4,5,6 ;D.floata3=1,2,3,4,5,6,7,8,9;11.以下能正确定义二维数组的是A.inta3;B.inta3=2*3;C.inta3=;D.inta23=1,2,3,4;12.以下数组定义中不正确的是A.int

50、a23;B.intb3=0,1,2,3;C.intc100100=0;D.intd3=1,2,1,2,3,1,2,3,4;13.以下不能正确定义二维数组的选项是A.inta22=1,2;B.inta2=1,2,3,4;C.inta22=1,2,3;D.inta2=1,2,3,4;14.若有说明 inta54,则对数组元素的正确引用是A.a3+12*2B.a(2+1)(0)C.a2+2,3D.a2*2315.若有说明:inta34,则对 a 数组元素的正确引用是A.a24B.a1,3C.a1+10D.a(2)(1)16.以下程序的输出结果是main()inta44=1,3,5,2,4,6,3,5

51、,7;printf(%d%d%d%dn,a03,a12,a21,a30);A.0650B.1470C.5430D.输出值不定17.定义如下变量和数组:inti,x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是for(i=0;i3;i+)printf(%d,xi2-i);A.159B.147C.357D.36918.以下程序的输出结果是#includemain()intm3=1,4,7,2,5,8,3,6,9;inti,j,k=2;for(i=0;i3;i+)printf(%d,mki);A.456B.258C.369D.78919.设 inta10;则数组 a 的首元素是 。

52、20.在 C 语言中,有语句“inta=0,1,2,3;” ,则数组 a 的长度是 。21.在 C 语言中,有语句“charch10;” ,则数组 ch 所占字节数为 。22.若有 C 语句:inta3=1,2,3,4,5,6,7,8;则数组 a 第一维的大小为 。23.在 C 语言中,声明一个 2 行 3 列的二维整型数组 a 的语句是“ ;” 。24.设 doubley45;,则数组 y 中元素的个数是 。25.设 inta4=l,2,3,4,5,6,7;,则 a13的值是 。26.设 inta34=1,2,5,3,2,4,7,9,3,6,5,8;则表达式 a12+a23的值是 。27.(

53、)二维数组 a34可分解为三个一维数组 a0、a1、a2,这三个一维数组都有 4 个元素。28.()charstr10;是错误的说明语句。29.【程序】#includemain()inta33=1,2,3,4,5,6,7,8,9,i,j;for(i=0;i3;i+)for(j=0;j3;j+)if(i=j)printf(%d,aii);【运行结果】30.【程序】#includemain()inti,j,row,column,m;intarray33=100,200,300,28,72,-30,-850,2,6;m=array00;for(i=0;i3;i+)for(j=0;j3;j+)if(a

54、rrayijm)m=arrayij;row=i;column=j;printf(%d,%d,%dn,m,row,column);【运行结果】第八章指针1.以下程序段执行后,a 的值为int*p,a=10,b=1;p=&a;a=*p+b;A.12B.11C.10D.132.执行如下一段程序后,ab 值为int*var,ab;ab=100;var=&ab;ab=*var+10;A.120B.110C.100D.903.程序的输出结果是若 inta=511,*b=&a;则 printf(%dn,*b);A.无确定值B.a 的地址C.512D.5114.分析下面程序,程序的输出结果是main()int

55、*p1,*p2,*p,a=5,b=8;p1=&a;p2=&b;if(ab)p=p1;p1=p2;p2=p;printf(%d,%d,*p1,*p2);printf(%d,%d,a,b);A.8,55,8B.5,88,5C.5,85,8D.8,58,55.有以下程序main()inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf(%d,%d,%d,%dn,*p,*q,a,b);程序运行后的输出结果是A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,76.以下定义语句中正确的是A.chara=Ab=B;B.floata=b=10.0;

56、C.inta=10,*b=&a;D.float*a,b=&a;7.若有说明语句:inta,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c 的语句是A.scanf(%d%d%d,&a,&b,d);B.scanf(%d%d%d,&a,&b,&d);C.scanf(%d%d%d,a,b,d);D.scanf(%d%d%d,a,b,*d);8.设有定义:inta,*pa=&a;以下 scanf 语句中能正确为变量 a 读入数据的是A.scanf(%d,pa);B.scanf(%d,a);C.scanf(%d,&pa);D.scanf(%d,*pa);9.若有以下定义和语句:int

57、a10=1,2,3,4,5,6,7,8,9,10,*p=a;则不能表示 a 数组元素的表达式是A.*pB.a10C.*aD.ap-a10.若已定义:inta9,*p=a;并在以后的语句中未改变 p 的值,不能表示 a1地址的表达式是A.p+1B.a+1C.a+D.+p11.设有以下语句 inta10=0,1,2,3,4,5,6,7,8,9,*p=a;则_不是对 a 数组元素的正确引用,其中(0i10)A.ap-aB.*(&ai)C.piD.*(*(a+i)12.有以下程序段,b 中的值是inta10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b;b=p5;A.5B.6C.8D.9

58、13.以下程序的输出结果是main()inta=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(%dn,*p+9);A.0B.1C.10D.914.以下程序的输出结果是main()inta10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(%dn,*(p+2);A.3B.4C.1D.215.以下程序的输出结果是main()intx8=8,7,6,5,0,0,*s;s=x+3;printf(%dn,s2);A.随机值B.0C.5 D.616.若有以下说明:inta10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 6 的表达式是A.*p+6

59、B.*(p+6)C.*p+=5D.p+517.以下程序的输出结果是main()inti,x33=9,8,7,6,5,4,3,2,1,*p=&x11;for(i=0;i4;i+=2)printf(%d,pi);A.52B.51C.53D.9718.以下执行程序段后,m 的值为inta23=1,2,3,4,5,6;intm,*p;p=&a00;m=(*p)*(*(p+2)*(*(p+4);A.15B.14C.13D.1219.设有说明 int(*ptr)m;其中标识符 ptr 是A.m 个指向整型变量的指针B.指向 m 个整型变量的函数指针C.一个指向具有 m 个整型元素的一维数组的指针D.具有

60、m 个指针元素的一维指针数组,每个元素都只能指向整型量20.若有定义 int*p3;则以下叙述中正确的是A.定义了一个基类型为 int 的指针变量 p,该变量具有三个指针B.定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针C.定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素D.定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int 类型元素21.以下程序的输出结果是voidprtv(int*x)printf(%dn,+*x);main()inta=25;prtv(&a);A.23B.24C.25D.2622.以下程序的输出结果是v

61、oidfun(intx,inty,int*cp,int*dp)*cp=x+y;*dp=x-y;main()inta,b,c,d;a=30;b=50;fun(a,b,&c,&d);printf(%d,%dn,c,d);A.50,30B.30,50C.80,-20D.80,2023.以下程序的输出结果是int*f(int*x,int*y)if(*x*y)returnx;elsereturny;main()inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(%d,%d,%dn,*p,*q,*r);A.7,8,8B.7,8,7C.8,7,7D.8,7,824.数

62、组名作为函数调用的实参,传递给形参的是A.数组的首地址B.数组的第一个元素的值C.数组中全部元素的值D.数组元素的个数25.在 C 语言的函数中A.必须有形参B.形参必须是变量名C.可以有也可以没有形参D.数组名不能作形参26.以下程序的输出结果是#includeintf(intb,intm,intn)inti,s=0;for(i=m;in;i=i+2)s=s+bi;returns;main()intx,a=1,2,3,4,5,6,7,8,9;x=f(a,3,7);printf(%dn,x);A10B.18C.8D.1527.变量的指针,其含义的指该变量的 。28.设 inta=10,*p=&

63、a;,则执行 printf(%dn,*p+a);的结果是 。29.printf(%dn,NULL);的结果为 。30.设 inta,*p=&a;,通过指针变量 p 为 a 输入值的 scanf 语句是 。31.设有定义:intn,*k=&n;以下语句将利用指针变量 k 读写变量 n 中的内容,请将语句补充完整。scanf(%d, );printf(%dn, );32.设 inta10=1,2,3;则*(a+3)的值是 。33.设 inta5=l,3,5,7,9,*p=&a2;,则+(*p)的值是 。34.若有如下定义语句:inta4=10,20,30,40,*p=&a2;则*p的值为 。35.

64、设 inta32=2,4,6,8,10;则*(a2+1)的值是 。36.设 ints32=1,2,3,4,5,6,(*p)2=s;,则*(*(p+1)+1)的值是 。37.在 C 语言中,当调用函数时,实参是一个数组名,则函数传送的是数组的 。38.()C 语言中的所有变量都不能存放地址。39.()指针就是地址,因此一个变量的指针就是该变量的地址。40.()inti,*p=&i;是正确的 C 说明语句。41.()语句 int*p;*p=0;存在着潜在的危险。42.()语句 int*p;p=0;是错误的。43.()函数调用时,若形参和实参均为地址量,则形参与实参结合的传递方式为双向传递。44.(

65、)int*p3;定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针。45.()C 语言函数的返回值只能是数值,不能是地址。46.()设有定义:int*ptr();ptr 为函数名,该函数返回一个 int 型指针47.()函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。48.()以数组名作函数实参时,实参数组与形参数组都不必定义长度,因此实参与形参的结合方式是地址结合,与数组长度无关。49.【程序】#includemain()int*p1,*p2;intx=23,y=40;p1=&x,p2=&y;*p1=

66、*p1+*p2;printf(x=%dn,x);【运行结果】50.【程序】#includeintswap(int*p,*int*q)intt;t=*p;*p=*q;*q=t;main()inta=3,b=5;swap(&a,&b);printf(%d,%dn,a,b);【运行结果】51.【程序】#includemain()inta34=1,3,5,7,9,11,13,15,17,19,21,13;int(*ptr)4;intsum=0,i,j;ptr=a;for(i=0;i3;i+)for(j=0;j2;j+)sum+=*(*(ptr+i)+j);printf(%dn,sum);【运行结果】第

67、九章字符串1.设有数组定义:chararray=China;则数组 array 所占的空间字节数为A.4B.5C.6D.72.对于以下定义正确的叙述为charx=abcdefg;chary=a,b,c,d,e,f,g;A.数组 x 和数组 y 等价B.数组 x 和数组 y 的长度相同C.数组 x 的长度大于数组 y 的长度D.数组 x 的长度小于数组 y 的长度3.以下程序段:printf(“%dn”,strlen(ATSn0121);的输出结果是A.11B.10C.9D.84.以下程序的输出结果是main()charstr12=s,t,r,i,n,g;printf(%dn,strlen(st

68、r);A.6B.7C.11D.125.以下语句 printf(%dn,strlen(t065xffn);的输出结果是A.5B.14C.8D.96.以下程序段的输出结果是main()chars=141141abct;printf(%dn,strlen(s);A.9B.12C.13D.147.以下程序段的输出结果是main()charstr=abn012;printf(%dn,strlen(str);A.3B.4C.6D.128.以下程序段的输出结果是main()charstr=abn012;printf(%dn,strlen(str);A.14B.7C.9D.109.以下程序的输出结果是main

69、()chara=a,b,c,d,e,f,g,h,0;inti,j;i=sizeof(a);j=strlen(a);printf(%d,%dn,i,j);A.9,9B.8,9C.1,8D.9,810.有以下程序,执行后输出结果是main()chara=abcdefg,b10=abcdefg;printf(%d%dn,sizeof(a),sizeof(b);A.77B.88C.810D.101011.以下程序的输出结果是main()chars=n123;printf(%d,%dn,strlen(s),sizeof(s);A.6,7B.5,6C.6,6D.赋初值的字符串有错12.以下程序的输出结果是

70、main()charstr20=hello0t;printf(%d%dn,strlen(str),sizeof(str);A.99B.520C.1320D.202013.设有 charstr=Beijing;则执行 printf(%dn,strlen(strcpy(str,China);后的输出结果为A.5B.7C.12D.1414.函数调用:strcat(strcpy(str1,str2),str3)的功能是A.将串 str1 复制到串 str2 中后再连接到串 str3 之后B.将串 str1 连接到串 str2 之后再复制到串 str3 之后C.将串 str2 复制到串 str1 中后再

71、将串 str3 连接到串 str1 之后D.将串 str2 连接到串 str1 之后再将串 str1 复制到串 str3 中15.以下不能正确进行字符串赋初值的语句是A.charstr5=good!;B.charstr=good!;C.char*str=good!;D.charstr5=g,o,o,d;16.以下程序片段的输出结果是charstr=ABCD,*p=str;printf(%dn,*(p+4);A.68B.0C.不确定的值D.字符D的地址17.设有如下程序段,执行完该程序段后,*(ptr+5)的值为charstr=hello,*ptr;ptr=str;A.OB.0C.不确定的值D.

72、O的地址18.以下程序的输出结果是#includemain()char*p=abcde0fghjik0;printf(%dn,strlen(p);A.12B.15C.6D.519.设有以下程序段:chars=china;char*p=s;则下列叙述正确的是A.s 和 p 完全相同B.数组 s 中的内容和指针变量 p 中的内容相等C.s 数组长度和 p 所指向的字符串长度相等 D.*p 与 s0相等20.有以下程序main()charstr10=China,Beijing,*p=str;printf(%sn,p+10);程序运行后的输出结果是A.ChinaB.BeijingC.ngD.ing21

73、.()语句 char*p=TurboC;的含义是将字符串赋给字符型指针 p。22.()对于两个数据 a 和 b 的初始化“chara=ABCDE;” 、 “charb=A,B,C,D,E;” ,则a 数组和 b 数组等长。23.【程序】#includemain()chara=ABCDEFGH;charb=aBCdefGh;char*p1,*p2;intk;p1=a;p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k)printf(%c,*(p1+k);printf(n);【运行结果】24.【程序】#includemain()chara=programming,b=lan

74、guage;char*p1,*p2;inti;p1=a;p2=b;for(i=0;i7;i+)if(*(p1+i)=*(p2+i)printf(%c,*(p1+i);【运行结果】25.【程序】#includemain()chara=struct,b=student;char*p1,*p2;inti;p1=a;p2=b;for(i=5;i=0;i-)if(*(p1+i)=*(p2+i)printf(%c,*(p1+i);【运行结果】26.【程序】#includemain()charch25=6937,8254,*p2;inti,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0

75、;i0;j+=2)s=10*s+pij-0;printf(%dn,s);【运行结果】27.【程序】#includemain()char*s=12134211;intv4=0,0,0,0,k,i;for(k=0;sk;k+)switch(sk)case1:i=0;case2:i=1;case3:i=2;case4:i=3;vi+;for(k=0;k4;k+)printf(%d,vk);【运行结果】第十章变量的作用域与存储类1. 在 C 语言中,如果在一个函数中的复合语句中定义了一个变量,则该变量A.只在该复合语句中有定义B.在该函数中有定义C.在本程序范围内有定义D.为非法变量2. 在 C 语言

76、中,以下不正确的说法是A.在不同函数中可以使用相同名字的变量B.形式参数是局部变量C.在函数内定义的变量只在本函数范围内有定义D.在函数内的复合语句中定义的变量在本函数范围内有定义3. 在下列叙述中,错误的一条是A.主函数 main 中定义的变量在整个文件或程序中有效B.不同函数中,可以使用相同名字的变量C.函数中的形式参数是局部变量D.在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效4. 以下程序的输出结果是#includeinta,b;voidfun()a=100;b=200;main()inta=5,b=7;fun();printf(%d%dn,a,b);A.1002

77、00B.57C.200100D.755. 在 C 语言中,以下不正确的说法是A.形参的存储单元是动态分配的B.函数中的局部变量都是动态存储C.全局变量都是静态存储D.动态分配的变量的存储空间在函数结束调用后就被释放了6. 在下列叙述中,错误的一条是A.scanf 函数可以用来输入任何类型的多个数据B.数组名作函数参数时,也采用“值传递”方式C.如果形参发生改变,不会改变主调函数的实参值D.函数的实参与形参的类型应一致7. 在 C 语言中,以下不正确的说法是A.全局变量,静态变量的初值是在编译时指定的B.静态变量如果没有指定初值,则其初值为 0C.局部变量如果没有指定初值,则其初值不确定D.函数

78、中的静态变量在函数每次调用时,都会重新设置初值8. 在 C 语言中,变量的隐含存储类别是A.autoB.staticC.externD.register9. C 语言变量按其作用域分为 和 ,按其生存期分为 和 。10.静态局部变量的作用域为 ,生存期为 。11.函数的形式参数的作用域为 ,全局的外部变量与函数体内定义的内部变量重名时, 优先。12.C 语言变量的存储类别有 , , 和 。13.凡在函数中未指定存储类别的局部变量,其默认的存储类别为 。14.在一个 C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 。15.()C 语言中的变量按作

79、用域分为两种:即局部变量和全局变量。16.【程序】#includeintd=1;intfun(intp)staticintd=5;d+=p;printf(%d,d);return(d);main()inta=3;printf(%dn,fun(a+fun(d);【运行结果】17.【程序】#includeintf(inta)intb=0;staticintc=3;a=c+,b+;return(a);main()inta=2,i,k;for(i=0;i2;i+)k=f(a+);printf(%dn,k);【运行结果】18.【程序】#includeintfun(intx,inty)staticintm

80、=0,i=2;i+=m+1;m=i+x+y;returnm;main()intj=1,m=1,k;k=fun(j,m);printf(%3d,k);k=fun(j,m);printf(%3d,k);【运行结果】19.【程序】#includeintfun(intn)staticintf=1;f=f*n;returnf;main()inti;for(i=1;i=5;i+)printf(%dt,fun(i);【运行结果】20.【程序】#includemain()inta=3,b=2,c=1;c-=+b;b*=a+c;intb=5,c=12;c/=b*2;a-=c;printf(%d,%d,%d,a,

81、b,c);a+=-c;printf(%d,%d,%dn,a,b,c);【运行结果】第十一章编译预处理1.以下程序的输出结果是#defineMA(x)x*(x-1)main()inta=1,b=2;printf(%dn,MA(1+a+b);A.6B.8C.10D.122.以下程序的输出结果是#defineM(x,y,z)x*y+zmain()inta=1,b=2,c=3;printf(%dn,M(a+b,b+c,c+a);A.19B.17C.15D.123.以下程序段的输出结果是#defineMIN(x,y)(x)(y)?(x):(y)main()inti=10,j=15,k;k=10*MIN(

82、i,j);printf(%dn,k);A.15B.100C.10D.1504.以下程序的输出结果是#defineSQR(X)X*Xmain()inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf(%dn,a);A16B.2C.9D.15.以下程序的输出结果是#definep3#defineS(a)p*a*amain()intar;ar=S(3+5);printf(%dn,ar);A.192B.29 C.27D.256.以下程序中的 for 循环执行的次数是#defineN2#defineMN+1#defineNUM2*M+1main()inti;for(i=1

83、;i=NUM;i+)printf(%dn,i);A.5B.6C.7D.87.以下 for 语句构成的循环执行了()次#defineN2#defineMN+1#defineNUM(M+1)*M/2main()inti,n=0;for(i=1;i=NUM;i+)n+;printf(%dn,n);printf(n);A.5B.6C.8D.98.在下列#include 命令中,正确的一条是A.#includestring.hB.#includemath.hC.#include(stdio.h)D.#include9.在“文件包含”预处理语句的使用形式中,当#inlcude 后面的文件名用“” (双引号

84、)括起时,寻找被包含文件的方式是A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录10.C 语言提供的预处理功能主要有三种: 、文件包含和条件编译。11.C 语言提供的预处理命令为了与一般的 C 语句相区别,这些命令以符号 开头。12.在程序中使用库函数,一般在文件开始使用 命令。13.宏定义必须写在函数之外,其作用域从宏定义命令起到源程序结束。若要终止其作用域,可使用 命令。14.()包含命令中文件名可以用双引号括起来,也可以用尖括号括起来。如:#include、#includestdio.h两者是完全一样

85、的。15.()宏名必须使用大写字母。16.()宏定义不是 C 语言语句,行末不必加分号。17.【程序】#include#defineMAX(x,y)(x)(y)?(x):(y)main()inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(%dn,t);【运行结果】18.【程序】#include#defineCIR(r)r*rmain()inta=1,b=2,t;t=CIR(a+b);printf(%dn,t);【运行结果】第十二章结构体与共用体1. 设有以下说明语句:structexintx;floaty;charz;example;则下面的叙述中不正

86、确的是A.struct 是结构体类型的关键字B.example 是结构体类型名C.x,y,z 都是结构体成员名 D.structex 是结构体类型名2. 设有以下说明语句typedefstructdataintn;charch8;PER;则下面叙述中正确的是A.structdata 是结构体变量名B.PER 是结构体类型名C.typedefstruct 是结构体类型D.struct 是结构体类型名3. 在程序 VC6.0 下,若有如下定义:structdatainti;charch;doublef;b;则结构体变量 b 占用内存的字节数是A.13B.3C.8D.114. 以下程序在 VC6.0

87、 下的运行结果是#includemain()structdateintyear,month,day;today;printf(%dn,sizeof(structdate);A.6B.8C.10D.125. 设有如下定义:structskinta;floatb;data,*p;若有 p=&data,则对 data 中的成员 a 的正确引用是A.(*p).data.aB.(*p).a C.p-data.a D.p.data.a6. 以下对结构体变量 stu1 中成员 age 的非法引用的是structstudentintage;intnum;stu1,*p=&stu1;A.stu1.ageB.st

88、udent.ageC.p-ageD.(*p).age7. 有以下说明和语句:structworkerintno;char*name;work,*p=&work;则以下引用方式不正确的是Awork.noB.(*p).no C.p-noD.work-no8. 已知有如下定义:structacharx;doubley;data,*t;,若有 t=&data,则对 data 中的成员的正确引用是A.(*t).data.xB.(*t).xC.t-data.xD.t.data.x9. 设有如下定义:struckskinta;floatb;data;int*p;若要使 p 指向 data 中的 a 域,正确

89、的赋值语句是A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;10.下列程序的输出结果是#includestructabcinta,b,c;main()structabcs2=1,2,3,4,5,6;intt;t=s0.a+s1.b;printf(%dn,t);A.5B.6C.7D.811.下面程序的运行结果是#includemain()structcmplxintx;inty;cnum2=1,3,2,7;printf(%dn,cnum0.y/cnum0.x*cnum1.x);A.0B.1C.3D.612.若有以下说明和语句,则下面表达式中的值为 1002 的

90、是structstudentintnum;intage;structstudentstu3=1001,20,1002,19,1003,21;structstudent*p;p=stu;A.(p+)-ageB.(+p)-numC.(*p).numD.(*+p).age13.根据下面的定义,能打印出字母 M 的语句是structpersoncharname9;intage;structpersonclass10=John,17,Paul,19,Mary18,adam,16;A.printf(%cn,class3.name0);B.printf(%cn,class3.name1);C.printf(

91、%cn,class2.name1);D.printf(%cn,class2.name0);14.若有以下程序段:#includestructdentintn;int*m;inta=1,b=2,c=3;structdents3=101,&a,102,&b,103,&c;main()structdent*p;p=s;则以下表达式值为 2 是A.(p+)-mB.*(p+)-mC.(*p).mD.*(+p)-m15.C 语言结构体类型变量在程序执行期间A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中16.C 语言共用体类型变量在程序运行期间A.所

92、有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中17.在说明一个联合体变量时,系统分配给它的存储空间是A.该联合体中第一个成员需存储空间B.该联合体中最后一个成员所需存储空间C.该联合体中占用最大存储空间的成员所需存储空间D.该联合体中所有成员所需存储空间的总和18.以下程序在 VC6.0 下的运行结果是#includemain()unionlonga;intb;charc;m;printf(%dn,sizeof(m);A.2B.4C.6D.819.以下程序的输出结果是#includeunionmyunstructintx,y,z;u;intk

93、;a;main()a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(%dn,a.u.x);A.4B.5C.6D.020.结构体变量成员的引用方式是使用 运算符21.结构体指针变量成员的引用方式是使用 运算符。22.设 structstudentintno;charname12;floatscore3;s1,*p=&s1;用指针法给 s1 的成员 no 赋值 1234 的语句是 。23.运算符 sizeof 是求变量或类型的 ,typedef 的功能是 。24.C 语言可以定义枚举类型,其关键字为 。25.设在 VC6.0 下若有结构体类型说明和变量定义,则变量 a 在内

94、存中所占的字节数是 ,变量 p 在内存中所占的字节数是 。structstudcharnum6;ints4;doubleave;a,*p;26.在程序 VC6.O 下,设 unionstudentintn;chara100;b;则 sizeof(b)的值是 。27.在程序 VC6.O 下,若有以下定义和语句,则 sizeof(a)的值是 ,而 sizeof(a.share)的值是 。structdateintday;intmonth;intyear;unionintshare1;floatshare2;share;a;28.()函数的返回值类型不能是结构体类型,只能是简单类型。29.()函数可

95、以返回指向结构体变量的指针。30.()通过结构体变量的指针可以访问结构体变量的成员。31.()结构体变量之间可以整体赋值。32.()共用体类型的变量的字节数等于各成员字节数之和。33.()一个共用体变量中不能同时存放其所有成员。34.()typedef 实际上是用来定义新的数据类型。35.()结构体的数目固定,类型相同或不同的若干有序变量的集合。36.()结构体类型名占内存空间。附录一:C 语言的关键字(保留字)1. auto:声明自动变量2. short:声明短整型变量或函数3. int:声明整型变量或函数4. long:声明长整型变量或函数5. float:声明浮点型变量或函数6. dou

96、ble:声明双精度变量或函数7. char:声明字符型变量或函数8. struct:声明结构体变量或函数9. union:声明共用数据类型10.enum:声明枚举类型11.typedef:用以给数据类型取别名12.const:声明只读变量13.unsigned:声明无符号类型变量或函数14.signed:声明有符号类型变量或函数15.extern:声明变量是在其他文件中声明16.register:声明寄存器变量17.static:声明静态变量18.volatile:说明变量在程序执行中被隐含地改变19.void:声明函数无返回值或无参数20.if:条件语句21.else:条件语句否定分支22.

97、switch:用于开关语句23.case:开关语句分支24.for:一种循环语句25.do:循环语句的循环体26.while:循环语句的循环条件27.goto:无条件跳转语句28.continue:结束当前循环,开始下一轮循环29.break:跳出当前循环30.default:开关语句中的“其他”分支31.sizeof:计算数据类型长度32.return:子程序返回语句附录二:运算符的优先级和结合性优先级运算符运算符功能运算类型最高15()-.圆括号、函数参数表数组元素下标指向结构体成员结构体成员14!+、-+-*&逻辑非按位取反自加 1、自减 1求正求负间接运算符求地址运算符单目运算(类型名

98、)sizeof强制类型转换求所占字节数13*、/、%乘、除、整数求余双目算术运算12+、-加、减双目算术运算11左移、右移移位运算10、=小于、小于等于、大于、大于等于关系运算9=、!=等于、不等关系运算8&按位与位运算优先级运算符运算符功能运算类型7按位异或位运算6|按位或位运算5&逻辑与逻辑运算4|逻辑或逻辑运算3?:条件运算三目运算2=、+=、-=、*=、/=、%=、&=、=、|=、=赋值、运算且赋值双目运算最低 1,顺序求值顺序运算其中,2、3、14 的结合性为从右至左,其余为从左至右。附录三:C 语言历年真题2011 年天津市大学软件学院高职升本专业课试题-C 语言部分考场号 考生号

99、 姓名 第一部分 C 语言部分 100 分一、单项选择题(共 25 小题,每题 2 分,共 50 分)以下每小题列出的四个备选答案中只有一个符合题目要求,请将正确答案填入“单项选择题答题表”对应的格中,未填入答题表,错选或多选均不得分。1. 设有类型说明 unsignedinta=65535;,按%d 格式输出 a 的值,其结果是() 。A.65536B.-1C.1D.-327672. 以下程序输出的结果是() 。#includemain()inta=-1,b=4,k;k=!(+a0)&!(b-0);printf(%d%d%dn,k,a,b);A.104B.103C.013D.0043. 设有

100、 inti;则表达式 i=1,+i,+i|+i,i 的值为() 。A.1B.2C.3D.44. 设有 inta=10,11,12,*p=&a0;则执行完*p+;*p+=1;后 a0,a1,a2的值依次是() 。A.10,11,12B.11,12,12C.10,12,12 D.11,11,125. 设有说明 ints2=0,1,*p=s;则下列错误的 C 语句是() 。A.s+=1;B.p+=1;C.*p+;D.(*p)+;6. 以下程序的输出结果是() 。#includevoidprtv(int*x)printf(%dn,+*x);main()inta=25;prtv(&a);A.25B.26

101、C.27D.以上均不对7. 下列叙述中正确的是() 。A.C 语言的函数可以嵌套定义B.C 语言的子程序有过程和函数两种C.C 语言编译时不检查语法D.C 语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数8. 以下程序的输出结果是() 。#includemain()charst20=hello0t;printf(%d%dn,strlen(st),sizeof(st);A.520B.99C.1320D.20209. inta,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量 a、b、c 的语句是() 。A.scanf(%d%d%d,a,b,d);B.scanf(%d%d

102、%d,&a,&b,&d)C.scanf(%d%d%d,&a,&b,d);D.scanf(%d%d%d,a,b,*d);10.以下程序的输出结果是() 。#includemain()intx=10,y=10,i;for(i=0;x8;y=+i)printf(%d%d,x-,y);A.10192B.10990C.9876D.10109111.以下定义语句中正确的是() 。A.inta=10,*b=&a;B.floata=b=10.0;C.chara=Ab=B;D.float*a,b=&a;12.下列关于单目运算符+、-的叙述中正确的是() 。A.它们的运算对象可以是 char 型变量、int 型变

103、量和 float 型变量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是任何变量和常量13.设 a=5、b=6、c=7、d=8、m=2、n=2,执行(m=ab)&(n=cd)后 n 的值为() 。A.4B.2C.3D.114.以下程序段的输出结果是() 。chars=141141abct;printf(%dn,strlen(s);A.9B.10C.12D.1415.若有说明:inti,j=7,*p=&i;则与 i=j;等价的语句是()

104、。A.i=*p;B.i=*p;C.i=&j;D.*p=*&j;16.以下叙述正确的是() 。A.可以把 define 和 if 定义为用户标识符B.可以把 if 定义为用户标识符,但不能把 define 定义为用户标识符C.define 和 if 都不能定义为用户标识符D.可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符17.设有 inti,j,k;则表达式 i=1,j=2,k=3,i&j&k 的值为() 。A.1B.2C.3D.018.下面的程序执行后,变量 a 的值是() 。#include#defineSQR(x)x*xmain()inta=10,k=2,m=1;

105、a/=SQR(k+m)/SQR(k+m);printf(%dn,a);A.10B.1C.9D.019.为了避免嵌套的条件分支语句 if-else 的二义性,C 语言规定:C 程序中 else总是与()组成配对关系A.缩放位置相同的 ifB.在其之前未配对的 ifC.在其之前未配对的最近的 ifD.同一行上的 if20.以下程序的输出结果是() 。intx=10,y=10;printf(%d%dn,x-,-y);A.1010B.99C.910D.10921.选出下列标识符中不是合法的标识符的是() 。A.hot_doB.cat1C._priD.2ab22.设有说明 double(*p1)N;其中

106、标识符是() 。A.N 个指向 double 型变量的指针B.指向 N 个 double 型变量的函数指针C.一个指向由 N 个 double 型元素组成的一位数组的指针D.具有 N 个指针元素的一维指针数组,每个元素都指向 double 变量23.在 C 程序中有如下语句:char*func(intx,inty);它是A.对函数 func 的定义B.对函数 func 的调用C.对函数 func 的原型说明D.不合法的24.下列叙述中不正确的是() 。A.可以对整型数组进行整体的输入、输出B.可以对字符数组进行整体的输入、输出C.字符数组中可以存放字符串D.不能在赋值语句中通过赋值运算符“=”

107、对字符数组进行整体赋值25.以下对二维数组 a 进行正确初始化的是() 。A.inta23=1,2,3,4,5,6; B.inta3=1,2,3,4,5,6;C.inta2=1,2,3,4,5,6;D.inta2=1,2,3,4;二、填空题(共 10 个空,每空 1 分,共 10 分)请按照试题中对应的标号顺序填写到答题表中26.设 a 为整型变量,初值为 12,执行赋值表达式 a+=a-=a*a 后,a 的值是 。27.设整型变量 a 的值为-1,在 16 位微机中用 16 进制打印 a 的值是 。28.C 语言提供的预处理功能主要有三种:宏定义,文件包含和条件编译。条件编译命令有三种基本形

108、式:#ifdef 标识符# 标识符#if 表达式程序段 1 程序段 1 程序段 1#else#else#else程序段 2 程序段 2 程序段 2#endif#endif#endif29.类型定义:inta10,*p;执行赋值语句 p=a;之后,那么 p+5 是 。30.在内存中供用户使用的存储空间可分为三个区:存储程序的程序区,存储数据的静态存储区和动态存储区。在静态存储区中存放的数据是 变量和局部静态变量。31.C 语言中静态变量和外部变量的初始化是在 阶段完成的。32.设 a 和 x 都为整型变量,执行赋值表达式 x=(a=3,6*3)后,x 值为 。33.执行下列语句 inta=8;a

109、+=a-=a*a;后,a 的值是 。34.如有下列语句:charA=Iamastudent;该字符串的长度是 。35.如有下列输入语句:scanf(a=%d,b=%d,c=%d,&a,&b,&c);为使变量 a 的值为1,b 的值为 3,c 的值为 2,从键盘输入数据的正确形式应是 。三、判断题判断下题是否正确,正确的划,错误的划(每题 1 分,共 15 分)36.()if(a=0)i=1;是合法的 C 语句。37.()for(;)S 中的语句 S 必执行无穷多次。38.()print 可以作为变量名使用。39.()在 C 程序中,函数既可以嵌套定义,也可以嵌套调用。40.()int*p3;定

110、义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针。41.()语句 int*p;*p=0;存在着潜在的危险。42.()语句 int*p;p=0;是错误的。43.()所有被调用的函数一定要在调用之前进行定义。44.()A-=7 等价于 a=a-745.()构成 C 程序的基本单位是函数。46.()利用 fcolse 函数可以关闭已打开的文件。47.()charstr10;是错误的说明语句。48.()unsigned 和 void 在 C 中都是保留的。49.()数组名可以作为参数进行传递。50.()intIf=0;会出现编译错误。四、阅读程序题本题共 5 小题,每小题

111、 5 分,共 25 分,请写出程序的运行结果51.【程序】inta3=1,2,3,4,5,6;main()inti,j,(*p)3;p=a;printf(%d%d%dn,p00,*(p0+1),(*p)2);printf(%d%d%dn,p10,*(p1+1),(*(p+1)2);for(i=0;i2;i+)for(j=0;j3;j+)printf(%d,*(*(p+i)+j);printf(n);【运行结果】52.【程序】#includemain()chara=Language,b=Programe;char*p1,*p2;intk;p1=a;p2=b;for(k=0;k=7;k+)if(*

112、(p1+k)=*(p2+k)printf(%c,*(p1+k);【运行结果】53.【程序】#includemain()inti,n=0;for(i=2;i5;i+)doif(i%3)continue;n+;while(!i);n+;printf(n=%dn,n);【运行结果】54.【程序】#includemain()inti,j,k,a=5,m66;i=1;k=(a+1)/2;for(j=1;j=a*a;j+)mik=j;if(j%a=0)i=(i%a)+1;continue;k=(k%a)+1;i-;if(i=0)i=a;for(i=1;i=a;i+)for(j=1;j=a;j+)print

113、f(%4d,mij);printf(n);【运行结果】55.【程序】#includemain()intx,y,z;x=y=z=-1;printf(x=%dty=%dtz=%dn,x,y,z);+y&+x|+z;printf(x=%dty=%dtz=%dn,x,y,z);x=y=z=-1;+x|y+&z;printf(x=%dty=%dtz=%dn,x,y,z);【运行结果】2012 年天津市大学软件学院高职升本专业课试题考场号 考生号 姓名 第一部分 C 语言部分 100 分一、单项选择题(共 25 小题,每题 2 分,共 50 分)以下每小题列出的四个备选答案中只有一个符合题目要求,请将正确

114、答案填入“单项选择题答题表”对应的格中,未填入答题表,错选或多选均不得分。1. 一个 C 语言程序是由()组成的。A.一个主程序和若干个子程序B.函数C.若干过程D.若干子程序2. 若 x、i、j 和 k 均是 int 型变量,则计算表达式 x=(i=4,j=16,k=32)后,x 的值为() 。A.4B.16C.32D.523. 下列程序不是死循环的是() 。A.inti=100;B.intk=0;while(1)do+k;while(k=0);i=i%100+1;if(i100)break;C.for(;);D.ints=36;while(s);-s;4. 在 C 语言中一维数组的定义形式

115、为:类型说明符数组名() 。A.常量表达式B.整型表达式C.整型常量或整型表达式D.整型常量5. 下面四个选项中,均是正确的八进制数或十六进制数的选项是() 。A.-10B.0abc-0x8f-017-0110xcC.010D.0a12-0x11-0x1230xf1-Ox86. putchar 函数可以向终端输出一个() 。A.整型变量表达式值B.实型变量值C.字符串D.字符或字符型变量值7. 下列程序的输出结果是() 。main()printf(%x,A);A.65B.41C.AD.1018. 程序 inta10=9,8,7,6,5,4,3,2,1,0,*p=a+5;的输出结果是() 。pr

116、intf(%d,*-p);A.非法B.a4的地址C.5D.39. 以下选项中,与 k=n+完全等价的表达式是() 。A.k=n,n=n+1B.n=n+1,k=nC.k=+nD.k+=n+110.被调函数调用结束后,返回到() 。A.主调函数中该被调函数调用语句处B.主函数中该被调函数调用语句处C.主调函数中该被调函数调用语句的前一语句 D.主调函数中该被调函数调用语句的后一语句11.以下程序的输出结果是() 。#defineMIN(x,y)(x)(y)?(x):(y)main()inti,j,k;i=10,j=15;k=10*MIN(i,j);printf(%dn,k);A.15B.100C.

117、10D.15012.对于以下变量定义,正确的赋值是() 。int*p3,a3;A.p=aB.*p=a0C.p=&a0D.p0=&a013.C 语言允许函数值类型缺省定义,此时该函数值隐含的类型是() 。A.float 型B.long 型C.int 型D.double 型14.以下关于指针概念的叙述中,错误的是() 。A.一个指针变量只能指向同一类型的变量B.一个变量的地址称为该变量的指针C.两个同类型的指针变量可以加减运算D.任何指针变量都可以与指针 NULL 进行比较15.C 语言的整型数据在内存中的存储形式是() 。A.原码B.反码C.补码D.ASCII 码16.调试程序是指对程序进行()

118、 。A.编辑B.编译C.查错和排错D.连接17.以下叙述正确的是() 。A.可以把 define 和 if 定义为用户标识符B.可以把 if 定义为用户标识符,但不能把 define 定义为用户标识符C.define 和 if 都不能定义为用户标识符D.可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符18.以下程序的输出结果是() 。voidprtv(int*x)printf(%dn,+*x);main()inta=25;prtv(&a);A.25B.26C.27D.以上均不对19.在 C 语言程序中() 。A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不

119、可以嵌套,但函数的调用可以嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套20.以下程序的输出结果是() 。main()inta10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(%dn,*(p+2);A.3B.4C.1D.221.构成 C 语言程序的基本单位是() 。A.过程B.函数C.语句D.命令22.在 C 语言中,复合语句的构成是将一系列语句置于() 。A.begin 和 end 之间B.方括号“”之间C.圆括号“()”之间D.花括号“”之间23.以上对一维整型数据 a 进行正确初始化的语句是() 。A.inta10=(0,0,0,0,0);B.i

120、nta10=;C.inta=;D.inta10=10*1;24.在 C 语言中,要求运算数必须是整型的运算符是() 。A./B.+C.!=D.%25.以下程序的输出结果是() 。#definePS3+4#includemain()intz;z=PS*2;printf(%d,z);A.14B.11C.2D.24二、填空题(共 5 小题,每题 1 分,共 10 分,请按照试题中对应的标号顺序填写到答题表中)26.设有定义 intx=9,y=8;表达式 x=y+1 的结果是 。27.在内存中存储A要占用 个字节,存储A要占用 个字节。28.访问变量的方式有 和 。29.结构化程序的三种结构是 、 、

121、 。30.C 语言中,数组在内存中是一块 的存储区域,由 代表它的首地址。三、判断题判断下题是否正确,正确的划,错误的划(每题 1 分,共 15 分)31.()在 C 语言中,除了 main 函数外,任何函数都可以递归调用。32.()break 和 return 语句所起的作用是一样的,都是跳出循环。33.()结构体类型本身不占内存空间,结构体变量占用内存空间。34.()C 语言函数的返回值只能是数值,不能是地址。35.()在 C 语言中,字符串常量存放在字符数组中要有一个结束符,该结束符是0。36.()在 C 语言中,逗号既可以作为运算符,也可以作为分隔符。37.()任何表达式语句都是表达式

122、加分号组成的。38.()形参只有在被调用时才分配存储空间。39.()对于二维数组 a 来说 a+1 与*(a+1)的值相等,因此二者的含义是一样的。40.()将一个字符串abc赋值给字符串变量 str 的方法是 str=abc。41.()C 语言的重要特点是能够直接处理物理地址,其指针类型数据就是用来存放变量地址的。42.()凡在函数中未指定存储类别的局部变量,其默认的存储类别为 static。43.()for 语句作为循环控制语句时,其括号内各个表达式与其后的分号都可省略。44.()unsigned 和 void 在 C 语言中都是保留字。45.()设有定义:int(*ptr)();ptr

123、指向函数的指针,该函数返回一个 int 型数据。四、阅读程序题本题共 5 小题,每小题 5 分,共 25 分,请写出程序的运行结果46.【程序】#includemain()inta6=12,4,17,25,27,16,b6=27,13,4,25,23,16,i,j;for(i=0;i6;i+)for(j=0;j6;j+)if(ai=bj)break;if(j6)printf(%d,ai);printf(n);【运行结果】47.【程序】#includeintf(intx,inty)return(y-x)*x);main()inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c);pr

124、intf(%dn,d);【运行结果】48.【程序】#includevoidf(intc)inta=0;staticintb=0;a+;b+;printf(%d:a=%db=%dn,c,a,b);voidmain()inti;for(i=1;i=3;i+)f(i);【运行结果】49.【程序】#includemain()chara=Language,b=Programe;char*p1,*p2;intk;p1=a;p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k)printf(%c,*(p1+k);【运行结果】50.【程序】#includemain()inti;for(i

125、=1;i=1&x=200&x=1|x=200|x=1&x=200&x=1|x=200|x=210)2. 若有以下定义:inta=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0i9,则为数组元素 ai不正确的引用是A.*(p+i)B.*(a+i)C.piD.*ai3. 判断 char 型变量 ch 是否为数字的 C 表达式为A.(0=ch&ch=0&ch=0&ch=0&ch=9)4. 以下程序段构成的循环是for(x=0,y=0;(y!=12&x4);x+);A.无限循环B.循环次数不定C.执行 4 次D.执行 3 次5. 以下程序的输出结果是#includemain()inti

126、;for(i=1;i=5;i+)if(i%2)printf(*);elsecontinue;printf(#);A.*#*#*#B.*#*#*#*#C.*#*#D.#*#*6. 以下程序的输出结果是#include#defineMAX(x,y)(x)=(y)?(x):(y)main()inti=10,j=15;printf(%d,10*MAX(i,j);A.15B.100C.10D.1507. 设有说明:int(*ptr)8;则 ptr 是A.指向整形变量的指针B.指向函数的指针,该函数的返回值为 int 数据C.指向一维数组的指针,该数组的基类型为 intD.长度为 8 的一维指针数组8.

127、以下程序段的输出结果是chara=0123456789,*p=a+4;printf(%c,*p+);A.4B.a4的地址C.6D.59. 下面程序的运行结果是#includemain()inta=1,b=10;dob=a;a+;while(b0);printf(a=%d,b=%dn,a,b);A.a=3,b=11B.a=2,b=8C.a=1,b=1D.a=4,b=910.执行下面程序,输入 2 后的输出结果是#includemain()intk;scanf(%d,&k);switch(k)case1:printf(%dn,k+);break;case2:printf(%dn,k+);case3

128、:printf(%dn,k+);break;default:printf(Full!n);A.1B.2C.23D.23Full11.若有以下结构体和变量定义,则以下引用方法不正确的是structworkerintsno;char*name;work,*p=&work;A.work.snoB.(*p).nameC.p-snoD.work-sno12.chars10,*p=s;则以下不正确的表达式是A.p=s+1;B.p=s+;C.*(s+1)=*p;D.*p+=s2;13.以下不能对二维数组 a 正确初始化的语句是A.inta23=1,2,3,4,5,6;B.inta3=1,2,3,4,5,6;

129、C.inta24=1,2,3;D.inta3=1,0,1,1,1;14.若有以下说明和语句,则输出结果是charsp=tn0willn;printf(%d,strlen(sp);A.4B.3C.9D.字符串中有非法字符15.对于结构体类型,以下说法正确的是A.定义结构体时不能定义结构体变量B.结构体变量所占的空间等于占空间最大的成员所需空间C.结构体类型可以作为返回值类型D.结构体定义后可以与标准类型一样使用,但前面必须使用 struct16.在 C 语言中,要求运算数必须是整型的运算符是A./B.+C.!=D.%17.以下程序段在 VC6.0 环境中运行的输出结果是structstudent

130、infocharname10;intSNO;charsex;student,*ps=&student;printf(%d,%d,sizeof(student),sizeof(ps);的输出结果是A.15,15B.15,4C.15,2D.4,218.根据 17 题中的结构体和变量定义,不能正确输出 name 成员的语句是A.printf(%s,student.name);B.printf(%s,ps-name);C.printf(%s,*ps.name);D.printf(%s,(*ps).name);19.以下程序的输出结果是main()inta44=1,3,5,2,4,6,3,5,7;pri

131、ntf(%d%d%d%dn,a03,a12,a21,a30);A.0650B.147C.5430D.输出值不定20.设有以下变量定义:charstr20,i;当输入“zhang 空格 hong 回车”时,能正确读入“zhanghong”的程序段是A.scanf(%s,str);B.for(i=0,stri=getchar();stri!=n;)stri+=getchar();C.gets(str);D.for(i=0,stri=getchar();stri!=0;i+)stri=scanf(%c,stri);二、填空题(共 10 题,每题 1 分,共 10 分)请按照试题中对应的标号顺序填写到

132、答题表中21.C 函数中若省略函数类型说明,则该函数类型默认为 。22.局部变量默认的存储类型为 。23.文件包含命令#include 有两种形式,区别是搜索路径不同。包含系统文件 string.h 应该使用 。24.如果要限定变量的作用域仅在当前文件有效,应使用 关键字。25.break 和 continue 都可以用于循环结构中,其中 只是结束本次循环,回到循环体第一条语句开始下次循环。26.C 语言变量有四种存储类别,其中关键字 extern 的含义是 。27.静态变量的初始化是在 阶段完成的。28.数组名作为实参使用时,传送的是 。29.sizeof 运算符的对象即可以是变量,也可以是

133、 。30.C 语言中多维数组可嵌套定义,即 n 维数组可看作元素类型为 。三、判断题判断下题是否正确,正确的划,错误的划(每题 1 分,共 15 分)31.在 do-while 循环中,循环体至少执行一次。 ()32.C 语言中局部变量和全部变量可以同名,并且在函数内局部变量优先于全局变量。 ()33.预处理命令都是以#号开头,且每行只能写一条命令。 ()34.定义二维数组时,如果对数组的所有元素赋值,则可省略长度说明。 ()35.C 语言要求所有被调用的函数一定要在调用语句之前进行定义。 ()36.函数内定义的静态变量当函数执行完其值依然存在。 ()37.void 关键字只能用于定义函数,不

134、能定义变量。 ()38.一个函数直接或间接的调用自己,称作递归调用。 ()39.全局变量是指在 main 函数中定义的变量。 ()40.for(exp1;exp2;exp3)语句 s;中的 s 可以是空语句。 ()41.结构体可以与标准类型一样使用,但前面须用 struct 关键字。 ()42.main 函数称为主函数,是个无参函数。 ()43.表达式 n=+i 等价于 n=i;i=i+1;。 ()44.语句 chars=test;与 chars=t,e,s,t;是等价的。 ()45.C 函数中的函数即可以嵌套定义,也可以嵌套调用。 ()四、阅读程序题本题共 5 小题,每小题 5 分,共 25

135、 分,请写出程序的运行结果46.【程序】#include#includemain()chari,s581,max=0;printf(input5strings);for(i=0;i5;i+)gets(si);for(i=0;imax)max=i;puts(smax);【运行结果】写出从键盘输入以下 5 个字符串时程序的运行结果Program,test,Iamastudent,wee,computer47.【程序】#includemain()inti,f1=1,f2=1;for(i=1;i=5;i+)printf(t%dt%d,f1,f2);f1=f1+f2;f2=f1+f2;printf(%d

136、,%dn,f1,f2);【运行结果】48.【程序】#includevoidfun(intn)staticintfn=1;fn=fn*n;printf(t%d,fn);main()inti;for(i=2;i=5;i+)fun(i);【运行结果】49.【程序】#includevoidselect(intmax,inta,intn)inti;max=a0;for(i=1;imax)max=ai;main()inti,max=10,a10=10,20,30,40,50,60,70,80,90,100;select(max,a,10);printf(nmax=%d,max);【运行结果】50.【程序】

137、写出输入 84 时程序运行结果#includemain()intscore;printf(ninputscore:);scanf(%d,&score);switch(score/10)case10:case9:printf(n 优);case8:printf(n 良);case7:case6:printf(n 及格);default:printf(n 不及格);【运行结果】五、编程题(本题共 1 题,10 分)已知每张选票上按序印有候选人姓名,要求选民从中勾选 3 人,多选或少选都视为废票不予统计,统计选票时输入数据的格式为长度为 5 的由 0 和 1 组成的字符串:“1”表示对相应候选人被选中, “0”表示未选中,如“01011”表示第 2、4、5 个候选人被选中。请编写程序读入每张选票的投票信息,若为有效选票则统计到结果中,当输入空串时结束,输出以下统计结果:1. 总有效投票数。2. 每个候选人姓名及投票数。提示:候选人信息已保存在以下的数组中,无须再从键盘输入。structitem/*保存候选人及得票信息的结构体*/charname20;/*候选人姓名*/intcount;/*得票数*/mans5=name1,0,name2,0,name3,0,name4,0,name5,0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号