ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:24.87KB ,
资源ID:6831088      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6831088.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国二级C语言复习资料3.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全国二级C语言复习资料3.docx

1、全国二级C语言复习资料3一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(11)以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(11)D 【解析】 在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b

2、本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。(12)请选出可用作C语言用户标识符的是A)void,define,WORD B)a3_b3,_123,IF C)FOR,-abc,Case D)2a,Do,Sizeof(12)B 【解析】 C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。(13)以下选项中,不能作为合法常量的是A)1

3、.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0(13)B 【解析】 C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。(14)在C语言中,运算对象必须是整型数的运算符是A)%B) C)%和D)*(14)A 【解析】 在C语言中,%运算符两侧的运算数必须是整型。(15)若变量均已正确定义并赋值,以下合法的C语言赋值语句是A)x=y=5; B)x=n%2.5; C)x+n=i; D)x=5=4+1; (15)A 【解析】 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选

4、项C)和D)错误。%运算符两侧都应当是整型数据,选项B)错误。(16)有以下程序段 char ch; int k; ch=a; k=12; printf(%c,%d,ch,ch,k); printf(k=%d n,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12(16)D 【解析】 输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;

5、第二个输出语句输出的结果为k=12。(17)已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是 A)kk=A& Z B)!(kk=A|kk=a&(kk+32)=Z D)isalpha(kk)&(kk=2& c=2&c=2& c=2&c=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为真。(19)若有条件表达式 (exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是 A)(exp=0) B)(exp!=0)

6、 C)(exp=1) D)(exp!=1)(19)B 【解析】 条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意+、-的用法。(20)以下不正确的定义语句是 A)double x5=2.0,4.0,6.0,8.0,10.0; B)int y5=0,1,3,5,7,9; C)char c1=1,2,3,4,5; D)char c

7、2=x10, xa, x8;(20)B 【解析】 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。(21)下列程序执行后的输出结果是 main() int a33, *p,i; p=&a00; for(i=1; i2!1 (26)D 【解析】 C语言中数组下标是从0开始的,所以二维数组a23的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a00。(27)有定义语句:char s10;,若要从终端给s输入5个字符,错误的输入语句是 A)gets(&s0

8、); B)scanf(%s,s+1); C)gets(s); D)scanf(%s,s1);(27)D 【解析】 在格式输入中,要求给出的是变易的地址,而D)答案中给出的s1是一个值的表达式。(28)有以下程序 #include #define N 5 #define M N+1 #define f(x) (x*M) main() int i1,i2; i1=f(2); i2=f(1+1); printf(%d %dn,i1,i2); 程序的运行结果是 A)12 12 B)11 7 C)11 11 D)12 7(28)B 【解析】 根据宏替换的替换规则,我们可知,f(2)=2*N+1=2*5+

9、1=11,f(1+1)=1+1*N+1=1+1*5+1=7。(29)若有以下说明和定义 union dt int a; char b; double c;data; 以下叙述中错误的是 A)data的每个成员起始地址都相同 B)变量data所占内存字节数与成员c所占字节数相等 C)程序段:data.a=5;printf(%fn,data.c);输出结果为5.000000 D)data可以作为函数的实参 (29)D 【解析】 选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.00

10、0000;选项D)C语言规定,不能把共用体变量作为函数的参数。(30)有以下程序 #include main() FILE *fp;int k,n,a6=1,2,3,4,5,6; fp=fopen(d2.dat,w); fprintf(fp,%d%d%dn,a0,a1,a2); fprintf(fp,%d%d%dn,a3,a4,a5); fclose(fp); fp=fopen(d2.dat,r); fscanf(fp,%d%d,&k,&n);printf(%d%dn,k,n);fclose(fp); 程序运行后的输出结果是 A)1 2 B)1 4 C)123 4 D)123 456(30)D

11、 【解析】 将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。(31)若已定义 int a=0,1,2,3,4,5,6,7,8,9, *p=a,i; 其中 则对a数组元素不正确的引用是 A)ap-a B)*(&ai) C)pi D)a10(31)D 【解析】 通常,引用一个数组元素可以用下标法,如ap-a形式,或指针法,如*(&ai)的形式。本题中a9=9,a10显然超出数组范围,注意,数组的下标是从0开始的。(32)有以下程序 #include void fun(int

12、 *s,int n1,int n2) int i,j,t; i=n1; j=n2; while(ij) t=si;si=sj;sj=t;i+;j-; main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;kl0;k+)printf(%d,ak); printf(n); 程序的运行结果是 A)0987654321 B)4321098765 C)5678901234 D)0987651234 (32)C 【解析】 函数fun(int *s,int n1,int n2)的功能是对数组s中的元

13、素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a12=4,3,2,1,5,6,7,8,9,0;再执行fun(a,4,9),数组a12=4,3,2,1,0,9,8,7,6,5;再执行fun(a,0,9)后,数组a12=5,6,7,8,9,0,1,2,3,4。(33)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为 #include #include #include int fun (char *str) int i,j=0; for(i=0;stri!= 0;i+) if(stri!= )strj+=stri; strj= 0; main() ch

14、ar str81; int n; printf(Input a string : ); gets(str); puts(str); fun(str); printf(%sn,str); A)asdafaaz67 B)asd af aa z67 C)asd D)z67(33)A 【解析】 本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用留下字符的算法,以前的题目亦是如此。用stri从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存strj中。注

15、意j的下标变化、初值及最后加串结束符0。(34)有以下程序 int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(%d,&x); x=fun(x);printf(%dn,x) 执行程序时,给变量x输入10,程序的输出结果是 A)55 B)54 C)65 D)45(34)A 【解析】 本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。(35)下面程序段中,输出*的个数是 char *s=

16、ta018bc; for(;*s!=0;s+)printf(*); A)9 B)5 C)6 D)7 (35)C 【解析】 本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。(36)C语言结构体类型变量在程序运行期间 A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元 B)所有的成员一直驻留在内存中 C)只有最开始的成员驻留在内存中 D)部分成员驻留在内存中(36)B 【解析】

17、结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。(37)已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是 A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项(37)C 【解析】 这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。(38)设有以下语句 char x=3,y=6,z; z=xy2; 则z的二进制值是 A)00010100 B)00011011 C)

18、00011100 D)00011000(38)B 【解析】 本题考查两个位运算符。 按位异或运算符是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。左移运算符是双目运算符,其功能把 左边的运算数的各二进位全部左移若干位,由右边的数指定移动的位数,高位丢弃,低位补0,并且运算符的优先级于。(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 A)auto和register B)extern和register C)auto和static D)static和register(39)A 【解析】 在C语言中只有自动变量和寄存器变量在使用时才占用

19、内存单元。(40)设有定义语句int ( *f)(int);,则以下叙述正确的是 A)f是基类型为int的指针变量 B)f是指向函数的指针变量,该函数具有一个int类型的形参 C)f是指向int类型一维数组的指针变量 D)f是函数名,该函数的返回值是基类型为int类型的地址(40)B 【解析】 本题考查的是指向函数的指针。语句 int (* f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。 二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(6)阅读下面程序段,则执行后输出的结果是 【6】 。 #include

20、 stdio.h main() char fun(char,int); char a=A; int b=13; a=fun(a,b); putchar(a); char fun(char a,int b) char k; k=a+b; return k;(6)【6】 N 【解析】 函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符A的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。(7)函数fun的返回值是 【7】 fun(char *a,char *b) int num=0,n=0; while(*(a+num)!=0)mm+; while(bn)

21、*(a+num)=bn;num+;n+; return num; (7)【7】 字符串a和b的长度之和 【解析】 本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。(8)以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 请填空。 #include #define N 80 i

22、nt fun(int a, int n) int i,j=1; for(i=1;in;i+) if(aj-1 【8】 ai) aj+=ai; 【9】 ; main() int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10, i, n=19; printf(The original data : n); for(i=0; in; i+)printf(%3d,ai); n=fun(a,n); printf(nThe data after deleted: n); for(i=0; in; i+)printf(%3d,ai); printf(nn); 8)

23、【8】!= 【9】 return j 【解析】 本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是aj-1!=ai,其中aj-1就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以ai要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。(9)以下程序的运行结果是 【10】 。 #include main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+; bre

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1