湖北汽车工业学院2012-2013年c语言课设题目及答案,湖北汽车工业学院C语言复习题.doc...

253b171540df25e1b84436cbe50dfc72.gif湖北汽车工业学院C语言复习题.doc

1设有定义float a2,b4,h3;以下c语言表达式中与代数式1/2abh计算结果不相符的是(B)A、(ab)*h/2 B 1/2*ab*h C h/2*ab Dab*h*1/22 若有说明int i,j2,*p,则能完成ij赋值功能的语句是BA i*p B*p* forb1;b10;b ifa8 break; ifa21a5;continue; a-3; printfdn,b; 程序运行后的输出结果是A。A 4 B 3 C 5 D 64. 有下程序mainint a2,4,6,8,10,y0,X,*P;p fori3;i1;i forj1;j2;j printfd,ij; printfn; 程序的运行结果是A。C 2 3 3 4 4 5D 2 3 4 3 4 5A 4 5 3 4 2 3B 4 3 2 5 4 36 有以下程序执行后W结果是;int fun1double a return a*a;int fun2double x,double y double a0,b0;afun1x; bfun1y;returnintab;main double w, wfun21.1,2.0;.参考答案5.07以下程序的输出结果是_D_。int f static int i0; int s1; si; i; return s;main int i,a0; fori0;i5;i af ; printfdn,a;A 24 B 20 C 25 D 15 8 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。void sortint a,int nint i,j,t;foriO;in-1;ifori1 0n0ifaiajtai;aiaj;ajt;mainint aa101,2,3,4,5,6,7,8,9,10,i;sortB char s5A,B,C,D,E;C char *s;sABCDEF;D char *s; scanfs,s;10.下面各语句行中,能正是行赋字符串操作的语句行是C ACHAR ST45“ABCDE”; BCHAR S5A,B,C,D,E; CCHAR *S;S“ABCDE”; DCHAR *S;SCANF“S”,S;11已知i、j、k为int型变量,若从键盘输入1,2,3,使i的值为l、j的值为2、k的值为3,以下选项中正确的输入语句是_C _。 Ascanf2d2d2 dtt, B)int _int; C)char For D)float US13若以下选项中的变量已正确定义,则正确的赋值语句是CA x126.83 B 12x2 C x30 x12 D x4123;14以下叙述中正确的是CA)break语句只能用于switch语句体中Bcontinue语句的作用是使程序的执行流程跳出包含它的所有循环Cbreak 语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同15.1以下函数值的类型是_Afunfloat x float y;y3*x-4;return y;Aint B不确定 Cvoid Dfloat知识点C语言函数的缺省的函数类型 15.2以下函数fun形参的类型是_D fun float x float y;y3*x-4;return y; A int B 不确定 C void D float 16下列叙述中正确的是(A)。A.每个c程序文件中都必须要有一个main函数B.在C程序中main()的位置是固定的C.C程序中所有函数之间都可以相互调用,与函数所在位置无关D.在C程序的函数中不能定义另一个函数17.设有定义int a,paa;以下scanf语句中能正确为变量a读入数据的是 AA) scanf(“d”,pa) ; B) scanf(“d”,A) ; C) scanf(“d”,pA) ; D) scanf(“d”,pA) ; 18若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是 CAabsx-y10 Bx-y-10 x-y10Cx-y-10y-x10 Dx-y*x-y100 19若变量已正确定义,有以下程序段Cint a3,b5,c7;ifab ab; ca;ifca cb;printfd,d,dn,a,b,c; 其输出结果是CA 程序段有语法错 B 3,5,3 C 3,5,5 D 3,5,720 以下选项中,非法的字符常量是 (C)a t b 17 c)“n” d xaa21.有以下程序main int s0,a1,n; scanfd, do s1; aa-2; whilean; printfdn,s;若要使程序的输出值为2,则应该从键盘给n输入的值是_B_。A 0 B -3 C -5 D -122.有以下程序main int i, j; fori1;i4;i forji;j4;j printfd*dd ,i,j,i*j; printfn;程序运行后的输出结果是 B 。A 1*11 1*22 2*24 1*33 2*36 3*39B 1*11 1*22 1*33 2*24 2*36 3*39C 1*11 1*22 1*33 2*12 2*24 3*13D 1*11 2*12 2*24 3*13 3*26 3*3923若有定义语句double x51.0,2.0,3.0,4.0,5.0, *px; 则错误引用x数组元素的是D。A*p1 B*p C*x D x5详细解答本题考查数组的下标是否越界,以及指针对变量的引用B选项x5,下标越界.一维数组名是地址常量(数组首地址),始终指向第一个数组元素,进行赋值px,指针变量p也指向第一个数组元素如下图 24有一个函数, 以下程序段中不能根据x的值正确计算出y的值的是【A】。A. y0;ifx0;ifx0y1;elsey-1;B. ifx0ifx0y1;elsey0;elsey-1;C. ifx0y1;elseifx0y0;elsey-1;D. y0;ifx0y1;elseifx0y-1;25以下对结构体类型变量的定义中,不正确的是CC)struct int n;float m; aa;struct aa tdl;D)struct int n;float m; tdl;A) typedef struct aa int n;float m;AA;AA tdl;B)define AA struct aaAA int n;float m; tdl;26若有定义语句char s10123456700;,则strlens的值 AA.7 B.8 C.9 D.1027. 设变量已正确定义,则以下能正确计算f n的程序段是D A) f0; B) f1; fori1;in;i f*i; fori1;in;i f*i; C f1; D) f1; forin;i1;i f*i; forin;i2;i f*i;28有定义语句int x, y;,若要通过scanfd,d,语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是 AA)11 12回车 B)11, 12回车C)11,12回车 D)11,回车 29.设有定义char p1,2,3,*qp;以下不能计算出一个char型数据所占自己数的表达式是Asizeofp Bsizeofchar Csizeof*q Dsizeofp0答案应该选A。对于B,计算的是char类型的字节大小,明显不对。C、D答案等价,计算的都是字符1的所占字节数,所以也不对。 30.下列条件语句中,功能与其他语句不同的是 DAifa printfdn,x; else printfdn,y;Bifa0 printfdn,y; else printfdn,x;Cifa0 printfdn,x; else printfdn,y;Difa0 printfdn,x; else printfdn,y;A如果a为真(不等于0就为真),就打印x,否则打印y;B如果a等于0;就打印y,否则打印x;C如果a不等于0,就打印x,否则打印y;D如果a等于0,就打印x,否则打印y;A,B,C都是如果0就打印y,否则x;31.有以下程序void fun2 char a, char b printf c c, a,b;char aA,bB;void fun1 aC ; bD; main fun1; printfc c ,a,b; fun2 E, F;程序的运行结果是D_。A .C D A B B. A B E F C .A B C D D. C D E F32在c语言中,函数中变量的隐含存储类别是。AautoBstaticCexternD无存储类别答案A评析函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。A评析函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。33在调用函数时,如果实参是简单变量,它与对应形参间的数据传递方式是 AA 单向值传递 B 传递方式由用户指定 C 地址传递 D 由实参传给形,再由形参传回实参34有以下程序mainintaa441,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,s0;for i0;i4;isaai1;printfdn,s;程序运行后的输出结果是BA11 B19 C13 D2035若有定义int aa8;。则以下表达式中不能代表数组元素aa1的地址是A) printfdn, *p *q; 程序运行后的输出结果是 BA16 B10 C8 D639设有如下说明 typedef struct int n; char c; double x; STD; 则以下选项中,能正确定义结构体数组并赋初值的语句是 AA)STD tt2 1,A,62,2,B,75 ; B)STD tt21, A,62, 2, B,75; C)struct tt2 1,A ,2,B ; D)struct tt21, A,62.5,2, B,75.0 ; 40下列函数定义中,会出现编译错误的是BA maxint x, int y,int *z B int maxint x,y *zxy xy; int z ;zxy xy;return z ;C max int x,int y D int maxint x,int y int z; returnxyxy ; zxyxy; returnz;41 有以下程序int funint n ifn1return 1; else returnnfunn-1;void main int x; scanfd, xfunx;printfdn,x;执行程序时,给变量x输入10,程序的输出结果是A A55 B54 C65 D45A)解析本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1234567891055。42有如下程序mainint n5 0,0,0,i,k 2;fori 0; i k; i ni ni 1;printfdn,nk;该程序的输出结果是A。A 0 B 2 C 1 D 不确定的值43下面程序的输出是D。int m13;int fun2int x,int y int m3; returnx*y-m; main int a7,b5; printfdn,fun2a,b/m; A.1 B.10 C.7 D.244下面程序输出的结果是Bmain() int i;int a331,2,3,4,5,6,7,8,9;for(i0;i3;i)printf(d ,a2-ii); A)1 5 9 B)7 5 3 C)3 5 7 D)5 9 145 请读程序 include include main() char*s1AbCdEf, *s2aB; s1; s2; printf(dn,strcmp(s1,s2; 上面程序的输出结果是A A) 正数 B) 负数 C) 零 D) 不确定的值46 设有如下的程序段char str Hello;char *ptr;ptrstr;执行上面的程序段后,*ptr5的值为BA oB 0C 不确定的值D o的地址47 C语言中要求操作数都为整型数据的算术符是_C_。 A、/ B、 C、 D、 48 能正确表示逻辑关系a10或a0的C语言表达式(D ) A、a10 or a0 B、a0|a10 C、a10 a0 D、a10a049若有定义int a10,则a代表的是数组a的_ C A、第一个元素 B、最后一个元素 C、首地址 D、最后一个元素的地址50 运行C源程序的命令是_ D A、ALTF5 B、ALTF9 C、CTRLF5 D、CTRLF951. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是BA)大写字母 B)连接符 C)数字字符 D)下划线52设a和b均为double型常量,且a5.5、b2.5,则表达式intab/b的值是D。 A 6.500000 B 6 C 5.500000 D 6.000000 53若有说明 int i,j7, *p, 则与ij; 等价的语句是(B )A. i *p; B. *p* C. i D. i* *p;54以下选项中,不能作为合法常量的是 BA)1.234e04 B)1.234e0.4 C)1.234e4 D)1.234e055有定义语句char s10;,若要从终端给s输入5个字符,错误的输入语句是 DA)gets B)scanf“s”,s1; C)getss; D)scanf“s”,s1;56设有说明语句char a72;则变量a() A 包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法答案是A选项,57.1若已定义x和y为double类型,则表达式x1yx3/2的值是A) 1 B) 2 C) 2.0 D) 2.5解析该表达式就是一个逗号表达式,所以要按照运算顺序先运算x1,所以变量x的值为1.0,然后运算yx3/2,此表达式中需先计算二个整数相除3/2,结果为整数1,然后再与x相加,结果为2.0。由于逗号表达式x1yx3/2的值就是其最后一个表达式即yx3/2的值,此值即为2.0,所以正确的答案应该是C。57.2若已定义x和y为double类型,则表达式x2yx3/2的值是CA)3.500000 B)3 C)3.000000 D)2.00000058.有定义语句inta1,b2,c3,x;,则以下选项中各程序段执行后,x的值不为3的是C A)ifcax1; B)ifa3x3; elseifbax2; elseifa2x2; elsex3; elsex1; C)ifa3x3; D)ifabxb; ifa2x2; ifbcxc; ifa1x1; i fcaxa;59 有以下程序main int a101,2,3,4,5,6,7,8,9,10,*pprintfdn,*p*q; 程序运行后的输出结果是D。A6 B8 C16 D1060若有以下说明int a101,2,3,4,5,6,7,8,9,10,*pa;则值为6的表达式是A。A.*p5 B.*p6 C.*p6 D.p561在嵌套使用if语句时,C语言规定else总是CA)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对62以下选项中正确的定义语句是C_。a double ab7; b double a;b; c double a7,b7; d double,a,b;63. 不能把字符串Hello赋给数组b的语句是_B_。A. char b10H,e,l, l,o,,0; B. char b10; b“Hello”; C. char b10; strcpyb, “Hello”; D. char b10 “Hello”;64.若在定义语句int a,b,c,*p之后,接着执行以下选项中的语句,则能正确执行的语句是 C A)scanfd,a,b,c; Bscanfddd,a,b,c; Cscanfd,p; Dscanfd, 65.Int w A, x 14, y 15; W x y w a ; C A.-1 B.NULL C.1 D.0 66.以下选项中,值为1的表达式B。 A)1-0 B)1-0 C)1-0 D)0-0分析A中,1-30 B中,1-0,因为0是转义代码,转义结果就是0C中,31-0 D中,0-30因为0或1是指的他的ascii码30和3167、下面程序的输出是 C不确定的值 main int x10,y3; printfdn,yx/y;A 0 B 1 C 3 D268 设有以下定义和语句char str20 Program,*p;pstr;则以下叙述中正确的是B。A str与p的类型完全相同 B *P与str0中的值相等 C str数组长度和p所指向的字符串长度相等D 数组str中存放的内容和指针变量p中存放的内容相同69不合法的标识符 CA_00 B FOR C char ch8;PER;则下面叙述中不正确的是_B_。A typedef struct是结构体类型 B PER是结构体类型名C PER是结构体变量名 D struct是结构体类型名73. int a101,2,3,4,5,6,7,8,9,10,*pa; 则数值为9的表达式是 BA *p9 B *p8 C *p9 D p8答案 记住这样一个无条件相等的等式*pi与Pi无条件等价。因为p是指向数组a首元素的地址,所以pi又和ai等价。易知B选项即为p8,也即为a8,其值为9。74若要求从键盘读入含有空格字符的字符串,应使用函数 BA)getc B gets C getchar D scanf A和C都是读取单个字符的,B和D都可以赌取字符串,但是区别在于scanf不能读空格,一遇到空格则自动结束,所以要读含有空格的字符串则只有B即是 gets()函数。75.1若变量c为char类型,能正确判断出c为小写字母的表达式是D Aacz BcaczCaC Dcacz最佳答案 D c这个字母大于 a,并且 c小于z,当两个都成立,证明这个字母是小写的表示两边都为真,才得到一个真值75.2已有定义char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是 BAisupperc BAcZ CAccZ Dc2-32a-32c76设有定义long x-123456L;, 则以下能够正确输出变量x的语句是 BA.printfxdn B.printfxldn C.printfx8dLn D.printfxLDn 77main int num0; whilenum2; num; printfdn,num; 输出 BA1234 B123 C12 D178 一个C程序的执行是从_ _A。 A、本程序中的main函数开始,到main函数结束 B、本程序中的第一个函数开始,到本程序中的最后一个函数结束C、本程序中的main函数开始,到本程序中的最后一个函数结束D、本程序中的第一个函数开始,到本程序中的main函数结束79下列描述中不正确的是_B。 A字符型数组中可以存放字符串B可以对整型数组进行整体输入、输出可以对字符型数组进行整体输入、输出不能在赋值语句中通过赋值运算符对字符型数组进行整体赋值80.1以下叙述中正确的是BA预处理命令行必须位于C源程序的起始位置B在C语言中,预处理命令行都以开头C每个C程序必须在开头包含预处理命令行includestdio.hDC语言的预处理不能实现宏定义和条件编译的功能80.2C语言中下列叙述正确的是_A_。A do-while语句构成的循环,当while语句中的表达式值为零时结束循环B do-while语句构成的循环,必须用break语句才能退出C do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D不能使用do-while语句构成的循环81若已定义X是整形变量,pb是基类型为整形的指针变量,则正确的赋值表达式是(c)。A)*pb Bpbx; Cpb D*pb*x;82与数学式子3乘以x的n次方/(2x-1)对应的C语言表达式是CA.3*xn/2*x-1 B.3*xn/2*x-1 C.3*powx,n*1/2*x-1 D.3*pown,x/2*x-1 83以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。void reverseint a,int nint i,t;fori0;in/2;itai;aian-1-i;an-1-it;mainint b101,2,3,4,5,6,7,8,9,10; int i,s0;reverseb,8;fori6;i10;i sbi;printfdn,s;程序运行后的输出结果是_A_。A 22 B10 C 34 D 30答案A评析本题并不是将整个数组中的内容逆置,而是逆置前8个元素。逆置后的数组为8,7,6,5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值