




已阅读5页,还剩230页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 程序设计基础 考点1 程序的构成,main函数和其它函数 2010.03.1.11 分值:1分 以下叙述正确的是 A)C语言的程序是由过程和函数组成的 B)C语言的函数可以嵌套调用,例如:fun(fun(x) C)C语言函数不可以单独编译 D)C语言中除了main函数,其它函数不可作为单独文件形式存在 参考答案:B) 解答: A)不正确,在C语言程序中,没有过程,过程是Pascal语言中的表示方 式。在C语言中,只有函数这个概念,简单的说C程序由函数组成。 B)正确,C语言中允许函数自身调用自身,即递归调用。 C)不正确,C语言中的函数,可以作为程序中的一部分,单独进行编译 。 D)不正确,C语言中,函数可作为程序中的一部分而存在。可以不含有 主函数。 2007.09.1.14 分值:1分 下列叙述中正确的是 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将 从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行 ,在此结束 D)main可作为用户标识符,可以命名任意一个函数作为主函数 参考答案:C) 解答: A)错误,由于main()不一定写在第一个位置上,所以该句话不准确。 B)错误,C语言中规定,程序必须从主函数开始执行,在主函数中结束 。 C)正确。 D)错误,在main()函数中,main不可以作为标识符的名,但是在其它函 数中,main可作为标识符的名称。main()是程序的开始和结束的位置, 不是任意函数都可以作为主函数。 考点2 头文件,数据说明,函数以及程序中的注释 2010.03.1.12 分值:1分 以下关于C语言的叙述中正确的是 A)C语言中的注释不可以夹在变量名或关键字中间 B)C语言中的变量可以在使用之前的任何位置进行定义 C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须 一致 D)C语言的数值常量中夹带空格不影响常量的正确表示 参考答案:A) 解答: A)正确,C语言中的注释不可以夹在变量名或关键字中间。 B)不正确,这个法则,在C+编译中,允许;在标准C中不允许,标准C 变量类型说明必须在该段程序的可执行语句之前。考试一般以标准C语 言为准。 C)不正确,在C语言算术表达式的书写中,运算符两侧的运算数可以是 任意类型。 D)不正确,C语言的数值常量在书写时中间部可以出现空格。 2010.03.1.13 分值:1分 以下C语言用户标识符中,不合法的是 A)_1 B)AaBb C)a_b D)ab 参考答案:D) 解答: A)合法。 B)合法。 C)合法。 D)不合法,在C语言命名法则中,不允许出现连接符“”这个符号。 以上均参看C语言标识符命名法则。 2009.09.1.12 分值:1分 以下选项中,能用作用户标示符的是 A)void B)8_8 C)_0_ D)unsigned 参考答案:C) 解答: A)不能用作,void 为C语言的保留字。 B)不能用作,阿拉伯数字不能出现在标识符的第一个位置上。 C)能用作,符合C语言标识符命名法则。 D)不能用作,unsigned为C语言的保留字。 2009.03.1.11 分值:1分 以下选项中,合法的标示符是 A)1_1 B)1-1 C)_11 D)1_ 参考答案:C) 解答: A)不合法。 B)不合法。 C)合法,符合C语言标识符命名法则。 D)不合法。 以上均参看C语言标识符命名法则。阿拉伯数字不能出现在标识符 的第一个位置上。 2008.09.1.11 分值:1分 以下叙述中正确的是 A)C程序的基本组成单位是语句 B)C程序中的每一行只能写一条语句 C)简单C语句必须以分号结束 D)C语句必须在一行内完成 参考答案:C) 解答: A)不正确,C程序的基本组成单位应该是函数,函数的组成单位是语 句。 B)不正确,C程序中的每一行可写多条语句,如:x=1;y=2;z=3;。 C)正确。 D)不正确,C语句不一定在一行内完成。 考点3 源程序的书写格式 2008.04.1.11 分值:1分 以下叙述中正确的是 A)C程序中的注释只能出现在开始的位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一个语句 C)C程序书写格式自由,一个语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 参考答案:C) 解答: A)不正确,也可能出现在语句行与语句行之间。 B)不正确,C程序中的每一行可写多条语句,如:x=1;y=2;z=3;。 C)正确。 D)不正确,用C语言编写的程序可以放在不同的程序文件中。 2010.09.1.13 分值:1分 以下叙述中错误的是 A)C程序在运行过程中所有计算都以二进制方式进行 B)C程序在运行过程中所有计算都以十进制制方式进行 C)所有C程序都需要编译链接无误后才能运得 D)C程序中整型变量只能存放整数,实型变量只能存放浮点数 参考答案:B) 解答: A)正确。 B)错误,C语言运行过程中是以机器代码进行计算的,机器代码都是 二进制代码,而不是十进制代码。 C)正确。 D)正确。 考点4 C语言的风格 2008.09.1.12 分值:1分 计算机能直接执行的程序是 A)源程序 B)目标程序 C)汇编程序 D)可执行程序 参考答案:D) 解答: A)不可执行,源程序为文本文件,不可执行。 B)不可执行,目标程序为编译过程中中间代码,不可执行。 C)不可执行,汇编程序为文本文件,不可执行。 D)可执行。 以上均参看C程序编译过程知识。 2010.09.1.15 分值:1分 以下选项中能表示合法常量的是 A)整数:1,200 B)实数:1.5E2.0 C)字符斜杠; D)字符串:“007” 参考答案:C) 解答: A)错误,在C语言中,整型常量中不能使用“,”做分隔符,这种表示 方法不是C语言中的表示方法。 B)错误,C语言中指数的表示方法中“E”后面的指数部分必须是一个 整数。 C)错误,单一的斜杠不能作为任何变量的常量。 D)正确,表示的是一个字符串常量。 考点5 C的数据类型及其定义方法 2010.09.2.6 分值:2分 以下程序运行后的输出结果是 【 】 。 # include main() int a=200,b=010; printf(“%d%dn“,a,b); 参考答案:2008 解答: a为十进制数200,b为八进制数,转换成十进制数为8。输出格式为 十进制整数输出格式,输出的两个数之间没有空隙,所以输出的序 列为“2008”。 2010.09.1.38 分值:2分 有以下程序 #include main() int s,t,A=10; double B=6; s=sizeof (A); t=sizeof(B); printf(“%d,%dn“,s,t); 在VC6平台上编译运行,程序运行后的输出结果是 A)2,4 B)1,4 C)4,8 D)10,6 参考答案:C) 解答: 在本题中sizeof(A)和sizeof(B)是求变量A,B所占的字节数。在VC6编译 系统中,规定所有整型数均占用4个字节,双精度数占用8个字节。所以答 案C)是正确的。 2010.03.1.16 分值:1分 以下关于C语言数据类型使用的叙述中差错的是 A)若要准确无误差的表现自然数,应使用整数类型 B)若要保存带有多位小数的数据,应使用双精度类型 C)若要处理如“人员信息”等含有不同类型的相关数据,应自定 义结构体类型 D)若只处理“真”和“假”两种逻辑,应使用逻辑类型。 参考答案:D) 解答: A)正确。 B)正确。 C)正确。 D)错误。在C语言中,没有逻辑类型。 2010.03.1.22 分值:2分 有以下程序,其中k的初值为八进制数 #include main() int k=011; printf(“%dn“, k+); 程序运行后的输出效果是 A)12 B)11 C)10 D)9 参考答案:D) 解答: 该题是将一个八进制数“11”按十进制输出,输出结果“9”。 2010.09.1.14 分值:1分 有以下定义:int a; long b; double x,y; a则以下选项中正 确的表达式是 A)a%(int)(x-y) B)a=x !=y; C)(a*y)%b D)y=x+y=x 参考答案:B) 解答: A)错误,x-y的值可能出现“0”,0不能作除数。 B)正确,a=x !=y可看成a=(x !=y), “x !=y”的值可能为“0”也可能 为“1”。所以该表达式是正确。 C)错误,(a*y)的值是一个实型数,C语言中求余计算“%”,必须 是实型数之间进行计算。 D)错误,该赋值方式相当于给表达式赋值,所以是错误的。 考点6 C运算符的种类、运算优先级和结合性 2010.03.1.17 分值:1分 若a是数值型,则逻辑表达式(a=1)|(a!=1)的值是 A) 1 B) 0 C) 2 D) 不知道a的值,不能断定 参考答案:A) 解答: a的值只有两种可能,等于“1”或者不等于“1”。该表达式 (a=1)|(a!=1)的值永远为真,所以,该表达式的值为“1”。 2010.03.2.6 分值:2分 设x为int变量,请写出一个关系表达式 【 】 ,用以确定 x 同时为3和7的倍数时,关系的表达式值为真。 参考答案:(x%3=0) printf(“%d,%d,%dn“, 【 】,x/10%10,x/100); 参考答案:x%10或x%100%10 解答: 本答案是按题中所给的思路提出的一个答案,要想得到本题中个位 的数字有多种办法,因x为整型数,所以,也可写成“x%100%10“。 2006.09.2.6 分值:2分 设有定义:float x=123.4567; 则执行以下语句后的输出结果是【 】。 printf(“%fn“,(int)(x*100+0.5)/100.0); 参考答案:123.460000 解答: 从该题中,考生要掌握这样的知识:x为实型数,有效位数7位;“%f”的输 出格式为保留小数点后6位。 本题重点计算(int)(x*100+0.5)/100.0表达式: (int)(x*100+0.5)/100.0等价 (int)(123.4567*100+0.5)/100.0等价 (int)(12345.67+0.5)/100.0等价 (int)(12346.17)/100.0等价 12346/100.0=123.46 所以输出为“123.460000”。 考点7 不同类型数据间的转换与运算 2006.04.1.14 分值:1分 表达式3.6-52+1.2+52的值是 A)4.3 B)4.8 C)3.3 D)3.8 参考答案:D) 解答: 该表达式的值3.6-52+1.2+52=3.6-2+1.2+1=3.8 2010.09.1.16 分值:1分 表达式a+=a-=a=9的值是 A)9 B)9 C)13 D)0 参考答案:D) 解答: 表达式a+=a-=a=9可化为a+=a-=9可化为a+=a=9-9可化为a+=a=0可化为 a+=0。即a=0。 考点8 C表达式类型和求值规则 2010.09.2.8 分值:2分 在C语言中,当表达式值为0时表示逻辑值“假”,当表达值为 【 】 表示逻辑值“真”。 参考答案:非零 解答: C语言中的逻辑值的定义为“非零为真”。 2010.03.1.14 分值:1分 有定义:double a=22;int i=0,k=18;,则不符合C语言规 定的赋值语句是 A)a=a+,i+; B)i=(a+k) main() int a=1,b=0; printf(“%d“,b=a+b); printf(“%dn“,a=2*b); 程序运行后输出的结果是 A)0,0 B)1,0 C)3,2 D)1,2 参考答案:D) 解答: 表达式b=a+b计算后,b的值为“1”;表达式a=2*b计算后,a的值为“2”。 考点9 表达式语句,空语句,复合语句 2009.09.1.23 分值:2分 有以下程序 #include main() char c1,c2; c1=A+8-4; c2=A+8-5; printf(“%c,%dn“,c1,c2); 已知字母A的ASCII码为65,程序运行后的输出的结果是 A)E,68 B)D,69 C)E,D D)输出无定值 参考答案:A) 解答: 考生注意本题的关键在于下面的表达式 c1=A+8-4=65+56-52=69 是“E”的ASCII值。 c2=A+8-5=65+56-53=68 是“D”的ASCII值。 在输出时 printf(“%c,%dn“,c1,c2); c1按字符输出,所以将字符“E”输出。 c2按有符号的十进制整形数输出,所以将数值“68”输出。 2010.09.2.7 分值:2分 有以下程序 #include main() int x,y; scanf(“%2d%1d”,printf(“%dn“,x+y); 程序运行时输入:1234567,程序的运行结果是【 】。 参考答案:15 解答: x变量的读入格式为“%2d”,所以将输入的1234567中的12赋给了x。 y变量的读入格式为“%1d”,所以将输入的1234567中的3赋给了y。 输出的是x+y的值“15”。 考点10 输入输出函数,正确输入数据并正确设计输出格式 2010.03.1.15 分值:1分 有以下程序 #include main() char a, b, c, d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%cn“,a,b,c,d); 当执行程序时,按下列方式输入数据(从第1列开始,代表回 车,注意:回车 也是一个字符) 12 34 则输出的效果是 A)1234 B)12 C)12 D)12 3 34 参考答案:C) 解答: scanf(“%c%c“, 该语句将“12”分别读入a和b。 c=getchar();该语句将回车读入。d=getchar();该语句将“3”读入, 它们读入的ASCII的值分别为,a=49,b=50,c=13,d=51。 2009.03.1.15 分值:1分 程序段:int x=12;double y=3.141593;printf(“%d%8.6f“,x,y),时输出结果是 A)123.141593 B)12 3.141593 C)12,3.141593 D)123.1415930 参考答案:A) 解答: A)正确。由于格式为“%d%8.6f“,所以输出整型数12后接着输出 3.141593,虽然是双精度数,但是按单精度输出,单精度的有效位 为7位,保留小数点后6位。 B)错误,12和3.141593之间多了一个空格。 C)错误,12和3.141593之间多了一个逗号。 D)错误,3.141593多了一位“0”。 2009.03.1.16 分值:1分 若有定义语句:double x,y,*px,*py;执行了px=py=char c1,c2; scanf(“%d%c%d%c“, printf(“%d,%c,%d,%c“,a1,c1,a2,c2); 若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为 字符a,c2的值为字符b,程序输出结果是:12,a,34,b。则 正确的输入格式是(以下代表空格,CR代表回车) A)12a34b B)12a34b C)12,a,34,b D)12a34b 参考答案:A) 解答: 在输入格式语句中输入格式的描述出现“%d%c”在输入时数和字符连接起来 输入。如果还有下一组,组与组之间用空格,回车,键均可以。 2009.03.2.7 分值:2分 若变量x,y已定义为int类型且x的值为99,y的值为9,请将输出 语句printf( 【 】 , x, y);补充完整,使其输出的结果形式 为:x/y=11。 参考答案:“x/y=%d“ 解答: 本题需要输出一个字符串“x/y=”,所以在输出格式描述中要加入这 样的字符串。 2009.03.2.8 分值:2分 有以下程序 #include main() char c1, c2; scanf(“%c“, while(c190) scanf(“%c“, c2=c1+32; printf(“%c,%cn“,c1,c2); 程序运行输入65回车后,能否输出结果,结束运行(请回答能或者 不能) 【 】 。 参考答案:不能 解答: 程序运行后输入“65”,并不是将“65”这个数值输给c1这个变量。由于c1的 输入格式为“%c”,所以在输入“65”时,c1接收的是“6”这个字符的ASCII的 值,即:“54”。所以,while(c190)永远为真,系统无限循环执 行scanf(“%c“, 语句。所以,该程序不能有输出。 2010.09.1.17 分值:1分 若变量已正确定义,在if (W)printf(“%fn“,k);中,以下不可 替代W的是 A)a”这样的运算符。 B)正确。if (W)中的“W”可以是任意表达式。 C)正确。同上。 D)正确。同上。 考点11 用if语句实现选择结构 2010.09.1.18 分值:1分 有以下程序 #include main() int a=1, b=0; if (!a) b+; else if(a=0) if(a)b+=2; else b+=3; printf(“%dn“, b ); 程序运行的结果是 A)0 B)1 C)2 D)3 参考答案:A) 解答: 本题的逻辑关系如图12-12所示。 在本题中,第一个判断为“假”,第二个判断也为“假”。所以,b的值仍然 为“0”。 2010.03.2.7 分值:2分 有以下程序 #include main() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3) d=1; else d=2; else if(c!=3) d=3; else d=4; else d=5; printf(“%dn“,d); 程序运行后的输出效果 【 】 参考答案:4 解答:考生看下面程序中的红色字部分,即所得答案。 #include main() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3) d=1; else d=2; else if(c!=3) d=3; else d=4; else d=5; printf(“%dn“,d); 2009.09.1.17 分值:1分 设有定义:int a=1, b=2, c=3;,以下语句中执行效果与其它 三个不同的是 A)if(ab) c=a, a=b, b=c; B)if(ab)c=a, a=b, b=c; C)if(ab) a=b; b=c; D)if(ab)c=a; a=b; b=c; 参考答案:C) 解答: 该题的含义是“ab”为“真” A)执行c=a, a=b, b=c;逗号表达式语句。 B)执行c=a, a=b, b=c;复合语句。 C)只执行a=b;这条语句。 D)执行c=a; a=b; b=c;复合语句。 2009.03.1.17 分值:1分 以下是if语句的基本形式 if(表达式)语句 其中表达式 A)必须是逻辑表达式 B)必须是关系表达式 C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式 参考答案:D) 解答: 根据C语言的法则,可以是任意表达式。 2010.09.1.19 分值:1分 若有定义语句int a , b ; double x; 则下列选项中没有错误的是 A)switch (x%2) B)switch(int)x/2.0) case 0: a+; break; case 0: a+; break; case 1: b+: break; case 1: b+; break; default: a+; b+; default: a+; b+; C)switch(int)x%2) D)switch(int)(x)%2) case 0: a+; break; case 0.0: a+;bresk; case 1: b+; break; case 1.0: b+;break; default: a+; b+ default: a+; b+; 考点12 用switch语句实现多分支选择结构 参考答案:C) 解答: A)错误,在C语言中求余运算必须在整型数之间运算。 B)错误,在switch(int)x/2.0)中,不应出现2.0实型数。 C)正确。 D)错误。case 0.0,表示错误。 2010.03.1.18 分值:1分 以下选项中与if(a=1)a=b;else a+;语句功能不同的 switch语句是 A)switch(a) B)switch(a=1) case 1: a=b;break; case 0: a=b;break; default: a+; case 1: a+; C)switch(a) D)switch(a=1) defaule:a+;break; case 1: a=b;break; case 1: a=b; case 0: a+; 参考答案:B) 解答: 在B)选项中表达的是a=1时做a+;,与题意相反。 2009.09.1.18 分值:1分 有以下程序 #include main() int c=0,k; for(k=1;kc)?b:c); C)k=(ab?(bc?1:0):0;功能相同的是 A)if(ab) B)if(ab)|(bc) k=1; else k=0 else k=0 C)if(ab)k=1; else if(bc)k=1 else k=0 参考答案:A) 解答: 该题的流程图请参看图8-5所示。 从该逻辑框图中,可判断出A)的描述与题意吻合,其它的都不能 表达该题意。 2009.03.1.18 分值:1分 有以下程序 #include main() int x; scanf(“%d“, if(x3时且不等于10,就可以有输出。 2009.03.1.19 分值:1分 有以下程序 #include main() int a=1,b=2,c=3,d=0; if(a=1 else printf(“%d,%d,%d,%d“,a,b,c); else printf(“%d,%d,%d,%d“,a,b,c); 程序运行后输出的结果是 A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1 参考答案:C) 解答: 该题的执行过程是下面程序中的红色字部分 #include main() int a=1,b=2,c=3,d=0; if(a=1 else printf(“%d,%d,%d,%d“,a,b,c); else printf(“%d,%d,%d,%d“,a,b,c); 在if(a=1 for(;a main() int f,f1,f2,i; f1=0;f2=1; printf(“%d %d “,f1,f2); for(i=3;i main() int i,j,sum; for(i=3;i=1;i-) sum=0; for(j=1;j main() int x=8; for(;x0;x-) if(x%3)printf(“%d,“,x-);continue; printf(“%d,“,-x); 程序的运行结果是 A)7,4,2, B)8,7,5,2, C)9,7,6,4 , D)8,5,4,2, 参考答案:D) 解答: 当x=8时: 执行循环体if(x%3)printf(“%d,“,x-);continue;,判断8除3的余数 是否不为“0”,不为“0”,输出“8”,输出“8,”之后,x的值被减掉“1”, x=7,继续循环。执行x-,x=6。 当x=6时: 执行循环体if(x%3)printf(“%d,“,x-);continue;,判断6除3的余数 是否不为“0”,为“0”。执行printf(“%d,“,-x);,输出时先将x的值减“1” ,再输出,所以输出“5,”,继续循环。执行x-,x=4。 当x=4时: 执行循环体if(x%3)printf(“%d,“,x-);continue;,判断4除3的余数 是否不为“0”,不为“0”,输出“4,”,输出“4”之后,x的值被减掉“1”, x=3,继续循环。执行x-,x=2。 当x=2时: 执行循环体if(x%3)printf(“%d,“,x-);continue;,判断2除3的余数 是否不为“0”,不为“0”。输出“2,”,输出“2”之后,x的值被减掉“1”, x=1,继续循环。执行x-,x=0。 当x=0时: 循环结束。输出的序列为“8,5,4,2,”。程序运行结束。 2008.04.2.8 分值:2分 若有定义:int k;,以下程序段输出的结果是【 】 。 for(k=2;k main() int x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i=0;i main() int a=1,b=2; while(a main() int y=10; while(y-); printf(“y=%dn“,y); 程序执行后的输出结果是 A)y=0 B) y=-1 C) y=1 D) while 构成无限循环 参考答案:B) 解答: 本题注意,while(y-);。该语句后面有一个“;”。实际上该循环执行 的是一个空语句,但变量y每执行一次会被减“1”。所以y的值最终为“- 1”。 2010.03.2.8 分值:2分 有以下程序 #include main() int m,n; scanf(“%d%d“, while(m!=n) while(mn) m=m-n; while(m时,输出效果是【 】 参考答案:7 解答: 当m=14,n=63时,执行while(m!=n) 执行while(mn) m=m-n;,m=7,n=7 当m=7,n=7时,while(m!=n)条件为假,退出while()循环。循环结束,输 出m的值“7”。 2009.9.1.21 分值:2分 有以下程序 #include main() int n=2,k=0; while(k+ printf(“%d %dn“,k,n); 程序运行后的输出结果是 A)0 2 B)1 3 C)5 7 D)1 2 参考答案:D) 解答: while循环执行的是空语句,在表达式k+语句输出的序列为“1 2”。程序运行结束 。 2009.09.2.9 分值:2分 以下程序运行后输出结果是【 】 。 #include main() int a=1,b=7; do b=b/2;a+=b; while(b1); printf(“%dn“,a); 参考答案:5 解答: 本题的do-while()循环三次: 第一次:b=7,a=1。 第二次:b=3,a=4。 第三次:b=1,a=5。 结束。 2009.03.1.22 分值:2分 设变量已正确定义,以下不能统计出一行中输入字符个数(不 包括回车符)程序段是 A)n=0;while(ch=getchar()!=n)n+; B)n=0;while(getchar()!=n)n+; C)for(n=0;getchar()!=n;n+); D)n=0;for(ch=getchar();ch!=n;n+); 参考答案:D) 解答: A)正确。 B)正确。 C)正确。 D)错误,在for()循环体内,第一个表达式仅执行一次,所以读不到 给出的其它字符。 2009.03.2.9 分值:2分 以下程序运行输出的结果是 【 】 。 #include main() int k=1,s=0; do if(k%2!=0) continue; s+=k;k+; while(k10); printf(“s=%dn“,s); 参考答案:s=0 解答: 本题在do-while循环中,加入了if判断语句。我们知道do-while循环 至少循环一次,在这一次循环中,判断k的值是否能被“2”整除。由于 k的初值为“1”,不能被“2”整除。所以执行continue;语句,做 while(k10);,此时,k的值为“1”,该条件不成立退出do-while循环 。所以,s+=k;k+;这两条语句没有被执行。s的值就是初值“0”。 2009.03.2.10 分值:2分 下列程序运行时,若输入1abcdef2df,输出结果为【】 #include main() char a=0,ch; while(ch=getchar()!=n) if(a%2!=0 for(i=1;i0;j-) if (i*j3) break; m*=i*j; printf(“m=%dn“,m); 程序运行后的输出效果是 A)m=6 B)m=2 C)m=4 D)m=5. 考点17 循环的嵌套 参考答案:A) 解答: 当i=1,j=3时,满足计算条件,m=3。 当i=1,j=2时,满足计算条件,m=6。 当i=1,j=1时,满足计算条件,m=6。 然后输m=6。 2009.03.1.20 分值:1分 以下程序段中的变量已正确定义 for(i=0;i main() int i, j; for(i=3;i=1;i-) for(j=1;j void fun (int *a, int n) int i,j,k,t; for(i=0;iak) k=j; t=ai; ai=ak; ak=t; main() int aa10=1,2,3,4,5,6,7,i; fun(aa,7); for(i=0;iak) k=j; t=ai; ai=ak; ak=t; 可以看出,是降幂排序,所以选择答案A)。 2010.09.2.9 分值:2分 有以下程序 #include main( ) int i,n =0,0,0,0,0; for(i=1;Iarowcol) (row=i;co1=j;) return 【 】; 参考答案:arowcol 解答: 在本题中,row记录着最小值的行下标,col记录着最小值的列下标。 所以返回最小值是arowcol。 2010.09.2.13 分值:2分 有以下程序 #include main() int n2,i,j; for(i=0;i main() int a5=1,2,3,4,5,b5=0,2,1,3,0, i, s=0; for (i=0;i main() int b33=0,1,2,0,1,2,0,1,2,i, j, t=1; for (i=0;i main() int i, j, a3=1,2,3,4,5,6,7,8,9; for(i=0;i main() int a=1,2,3,4,5,6,*k3,i=0; while(i main() int a33=1,2,3,4,5,6,7,8,9; int b3=0, i; for(i=0;i #include main() char a20=“ABCD0EFG0“,b=“IJK“; strcat(a,b);printf(“%sn“,a); 程序运行后的输出结果是 A)ABCDEWFG0IJK B)ABCDIJK C)IJK D)EFGIJK 考点19 字符串与字符数组 参考答案:B) 解答: strcat函数是将b字符串连接在a字符串中第一个尾标志“0”开始的 位置。 字符串a的存储格式为: ABCD0EFG00 字符串b的存储格式为: IJK0 连接后字符串a的存储格式为: ABCDIJK000 所以输出的字符串为“ABCDIJK”,选择答案B)。 2010.09.1.34 分值:2分 有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写 字母 #include #include void fun(char *p) int i=0; while(pi) if(pi= i+; main() char s1100=“ab cd EFG !“; fun(s1); printf(“%sn“,s1); 程序运行后的输出结果是 A)ab cd EFG ! B)Ab Cd EFg ! C)aB cD EFG ! D)ab cd Efg ! 参考答案:C) 解答: 本题存在问题,下标变量i的值不能从“0”开始。若从“0”开始,p 数组会出现下标为“-1”的情况,这样不符合C语言对数组下标的定 义,即,数组下标是从“0”开始的法则。 函数islower()是判断一个字符是不是小写字母,如果是“真”其值 是一个非“0”的数。 本题是将字符串中满足小写字母加空格这样条件中的小写字母转 换成大写字母。本题中有“b ”和“d ”两个满足情况的小写字母, 被转换成“B ”和“D ”,其他位置的字符没有被改变,所以答案C) 是正确的。 2010.09.1.31 分值:2分 下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求 是 A)if (strcmp(s2,s1)= =0) ST; B) if (sl= =s2) ST; C)if (strcpy(s1,s2)= =1) ST; D) if(s1-s2= =0) ST; 参考答案:A) 解答: A)正确。 B)错误,无论s1,s2是字符串数组名,还是字符串指针名,这样的比 较是无法判断出两个串的大小关系,他们判断的是两个字符串首地址 值的大小关系。 C)错误,strcpy()函数是穿拷贝或复制函数,无法判断它的值,达到 执行ST的要求。 D)错误,这种表示意味着s1串的首地址和s2串的首地址之间的差。 2010.09.1.22 分值:2分 有以下程序 #include char s“rstuv“; printf“%cn“,*s+2; 程序运行后的输出结果是 A)iuv B)字符t的ASCII码值 C) t D)出错 参考答案:C) 解答: 本题考生应该理解*s+2的概念。在*s+2中“*”运算优先级高于“+”。所 以先将*s的值取出来加“2”,而*s中存放的是“r”的ASCII值,进行加 “2”后,是“t”的ASCII值,所以输出的是字符“t”。 如果考将*s+2理解成*(s+2),虽然输出也是字符“t”那只是一个巧合 。如果给出的字符串是“rabcd”。那么,*(s+2)输出的是“b”。 2010.09.1.23 分值:2分 有以下程序 #include #include main() char x=“STRING“; x0=0; x1=0;x2=0; printf (“%d %dn“,sizeof(x),strlen(x); 程序运行后的输出结果是 A)6 1 B)7 0 C)6 3 D)7 1 参考答案:B) 解答: 考生应该清楚0和0的概念,他们都是将ASCII值的“0”赋给了x0和 x1,而0是将“0”的十进制ASCII的值“48”赋给了x2。在本题中 sizeof()函数计算字符串所占字节的大小是按定义时分给字符串数组 的空间大小,即字符串的个数加“1”,即加入一个尾标志。所以 sizeof(x)所占字节数为7个字节。字符串长度函数是取该字符串第一 个“0”之前的字符个数。 本题中x的初值存储格式为(字符表示) STRING0 实际存储的十进制ASCII的值为 1151161141051101030 当执行x0=0; x1=0; x2=0; 语句后,其字符表示为 00RING0 其ASCII值的格式为 0048105 110 103 0 其ASCII值的格式为 2010.03.2.14 分值:2分 以下程序用以删除字符串中所有的空格,请填空 #include main() char s100=“Our teacher teach C language!“; int i, j; for(i=j=0;si!=0;i+) if( si!= ) sj=si;j+; sj= 【 】; printf(“%sn“,s); 参考答案:si+1 解答: 本考题已明确所要解决的问题是去掉字符串中的空格,考生遇到这样的问 题,首先要理解算法。而该题算法的主题思想是,利用两个变量i,j值的 变化,去掉空格。 s字符数组的存储分配如图10-5所示。 图10-5 存储分配图 当i循环遇到空格时,i向下一个位置前进,即取i下一个非空格字符,赋给j所在 位置。 执行for(i=j=0;si!=0;i+) if( si!= ) sj=si;j+;语句后,s 数组的存储分配图如图10-6所示。 图10-6 存储分配图 已完成空格的清除动作。 而sj= 【】;这一句,是让考生将尾标志写到正确的位置。而i的位置是字符串 最后一个字符的位置,即“!”的位置,那么尾标志的位置就是i+1。所以填写 si+1。看图10-7所示。 图10-7 存储分配图 当执行sj=si+1;后,s数组的存储分配图如图10-8所示。 图10-8 存储分配图 2009.09.1.20 分值:1分 有以下程序 #include main() char s=“012xy“;int i,n=0; for(i=0;si!=0;i+) if(si=a printf(“%d %dn“,strlen(a),sizeof(a); 程序运行后输出结果是 A)7,4 B)4,10 C)8,8 D)10,10 参考答案:B) 解答: 字符串的长度是指字符串内的实际字符数,该字符数的长度统计的法则为从字符串开始的位置到第一 个“0”结束。sizeof(a)统计的是字符占用的存储空间,单位为字节。统计的法则为字符串实际数量 加“1”。 例如: #include #include void main() char x=“abcd0abcd“; printf(“%d, %d“,strlen(x),sizeof(x); 输出为4,10。 2009.09.2.13 分值:2分 有以下程序 #include main() char a20=“How are you?“,b20; scanf(“%s“,b);printf(“%s %sn“,a,b); 程序运行时,从键盘输入:How are you? 则输出的结果为【 】 。 参考答案:How are you? How 解答: 本题考生应该注意,用scanf(“%s“,b);来读取一个字符串时,遇 到空格,输入就会被中断。所以,b数组获得的字符串为“How”。 2010.09.1.25 分值:2分 以下程序段完全正确的是 A)int *p; scanf(“%d“, B)int *p; scanf (“%d“,p); C)int k,*p= scanf(“%d“,p); D)int k,*p;*p= scanf(“%d“,p); 参考答案:D) 解答: A)错误,p已被定义成指针,在读入时,不需要在p的前面加上取地 址运算符“,相当于将一个地址赋给一个变量。 考点20 库函数的正确调用 2009.03.1.30 分值:2分 设有定义:char s81;int i=0;,以下不能将一行(不超过 80个字符)带有空格的字符串正确读入的语句或语句组是 A)gets(s); B)while(si+=getchar()!=n);si=0; C)scanf(“%s“,s); D)doscanf(“%c“,while(si+!=n);si=0; 参考答案:C) 解答: A)能够正确输入。输入的字符串存入字符数组s。 B)能够正确输入。功能为:键盘键入一个字符,该字符就被送到 字符数组s中,存储起来。 C)不能够正确输入。遇到“空格”、“TAB”、“回车”键,输入字符串 结束。 D)能够正确输入。用标准的输入函数一个字符一个字符地读入字 符串,遇到“回车”,输入结束。 2008.04.1.30 分值:2分 以下叙述中错误的是 A)gets 函数用于从终端输入字符串 B)getchar函数用于从磁盘文件读入字符 C)fputs 函数用于把字符串输出到文件 D)fwrite 函数用于以二进制形式输出数据到文件 参考答案:B) 解答: A)正确。 B)错误,getchar()函数是从键盘读入一个字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脊髓损伤病人护理查房
- 塔里木职业技术学院《中华射艺》2023-2024学年第一学期期末试卷
- 宁夏回族自治区中学卫市第五中学2025届初三第二次诊断性考试语文试题含解析
- 辽宁装备制造职业技术学院《生物组学》2023-2024学年第二学期期末试卷
- 景德镇陶瓷职业技术学院《基础医学实验(一)》2023-2024学年第一学期期末试卷
- 上海欧华职业技术学院《国际结算与贸易融资》2023-2024学年第二学期期末试卷
- 云南科技信息职业学院《药物分析》2023-2024学年第一学期期末试卷
- 山西卫生健康职业学院《高级生物信息学》2023-2024学年第二学期期末试卷
- 秦皇岛市重点中学2025届高三下学期研七考试化学试题含解析
- 铜川职业技术学院《花纸设计与排版》2023-2024学年第二学期期末试卷
- 保险信息服务合同范本
- 老年人康乐活动-老年节庆活动组织策划
- 预防接种服务提质行动方案2-4-10
- 绿化带改停车位施工方案
- 绿化苗木组织供应及售后服务方案
- 2023-2024学年浙江省环大罗山联盟高一下学期4月期中物理试题(解析版)
- 合用变压器协议
- 护理人员岗位绩效考核评价标准
- 2024年郑州轨道工程职业学院单招职业适应性测试题库学生专用
- 2024年山西省太原市中考二模地理试卷
- 《通信原理》樊昌信曹丽娜编著第六版课件
评论
0/150
提交评论