云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 全国计算机等级考试二级C语言笔试题详解

全国计算机等级考试二级C语言笔试题详解

  • 62 次阅读
  • 3 次下载
  • 2025/6/24 2:58:18

解析:本题main函数中定义了指引p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5, a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][O]=O,a[2][1]=0,a[2][2]=0。通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。具体运行过程如下:

i=0:

j=O:p[0]=a[0][0],即p[0]=1; j=1:p[1]=af0][1], 即p[1]=3; j=2:p[2]=a[0][2], 即p[2]=5; i=1:

j=O:p[3]=a[1][0], 即p[3]=2; j=1:p[4]=a[1][1], 即p[4]=4; j=2:p[5]=a[11[2], 即p[5]=6; i=2:

j=O:p[6]=a[2][0],即p[61=O; j=1:p[7]=a[2][1], 即p[7]=O; j=2:p[8]=a[2][2], 即p[8]:O; 因此,输出p[2],p[5]为56。

(207)以下程序的输出结果是______。 int a,b; Void fun()

{ a=100;b=200; } main()

{ int a=5,b=7; fun();

printf(“%d%d\\n”,a,b); }

A)100200 B)57 C)200100 D)75 参考答案:B

考察知识点:c语言中的变量作用域

解析:全程变量是可以在子函数中对其值作改变,且它也可作为函数问的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。所以本题主函数的局部变量a,b把同名的全程变量屏蔽了。

(208)以下程序的输出结果是______。 #define M(x,y,z) x*y+z main()

{ int a=1,b=2,c=3;

printf(“%d\\n”,M(a+b,b+c,c+a)); }

A)19 B)17 C)15 D)12 参考答案:D

考察知识点:c语言的宏定义

解析:c语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定

义,其形式为:#define宏名(形参表) 字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。 (210)下面的程序执行后,文件test.t中内容是_______。 #include

void fun(char*fname,char*st) { FILE*myf;int i;

myf=fopen(fname,\for(i=O;i

main()

{fun(“test.t”,”new world”);fun(“test.t”,”hello,”);}

A)hello. B)new worldhello C)new world D)hello,rld 参考答案:A

考察知识点:c语言中的文件操作方面的知识

解析:c语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

(214)在单链表中,增加头结点的目的是________。

A)方便运算的实现 B)使单链表至少有一个结点

C)标识表结点中首结点的位置 D)说明单链表是线性表的链式存储实现 参考答案:A

考察知识点:线性单链表、双向链表与循环链表的结构及其基本运算 解析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

(225)以下程序中,while循环的循环次数是______。 main() { int i=0; while(i<10)

{ if(i<1)continue; if(i==5)break; i++: } ?? }

A)1 B)10 C)6 D)死循环,不能确定次数 参考答案:D

考察知识点:while和do-while循环结构

解析:题目中,进入循环后,先执行一个条件语句,如果i的值小于1,那么直接进入下一轮循环,因为i的初始值是0,小于1,故直接进入下一轮循环,又因为i的值始终没有改变,所以这个循环成了死循环。

(227)以下程序的输出结果是________。 main()

{ int a=4,b=5,c=0,d;

d=!a&&!b||!c;

printf(“%d\\n”,d); }

A)1 B)0 C)非0的数 D)-1 参考答案:A

考察知识点:表达式语句,空语句,复合语句 解析:!a值为0,故!a&&!b的值为0,!c的值为1,而0||1的值应该是1。所以答案是A。 (229)以下程序的输出结果是________。 int f()

{ static int i=0; int s=1;s+=i;i++; return s; } main()

{ int i,a=0;

for(i=0;i<5;i++)a+=f(); printf(“%d\\n”,a); }

A)20 B)24 C)25 D)15 参考答案:D

考察知识点:变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期 解析:本题主要考的是对变量存储属性的理解,一个变量被指定为静态变量,在编译时就为其分配了存储空间,程序一开始执行使被建点,直到该程序执行结束都存在,而不像动态变量只存在于函数或分程序被调用期间。在函数多次被调用的过程中静态局部变量的值具有可继承性。在第一次凋用函数结束时,i的值是1,返叫值1,第二次调用函数时,i的值保持为1,执行自加操作后,j的值变成了2,到了第三次调用时,i的值保持了上次调用结束时的值,再执行自加,值变成了3。到第五次调用结束叫,i的值是5。而s的值不具备i的这种可继承性,每次调用时,它都先被重新赋值为1,再执行下面的操作。

(232)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是________。

A)p=2*(int*)malloc(sizeof(int)); B)p=(int*)malloc(2*sizeof(int)) C)p=(int*)malloc(2*2) D)p=(int*)calloc(2,sizeof(int)) 参考答案:A

考察知识点:用指针作函数参数

解析:malloc函数的作用是在内存开辟指定大小的存储空间,并将此存储空间的地址作为函数值带回,它的原型为void*malloc(unsigned int size),函数值为指针,这个指针指向void类型,也就是不规定指向任何具体的类型。如果要将此返回地址赋给一个指向特定类型的指针变量,则应进行强制类型转换。calloc函数的模型是:void*calloc(unsigned int num,unsigned int size),作用是分配num个大小为size字节的空间。

(233)以下程序的输出结果是_______。 main()

{ int x=040;

printf(“%0\\11”,x<<1); }

A)100 B)80 C)64 D)32 参考答案:A

考察知识点:简单的位运算

解析:040用二进制表示就是00100000,左移一位,得到的值应该是01000000,化成八进制应该是0100。

(234)若要打开A盘上的user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是_______。

A)fopen(“A:\%user\\abc.txt”,”r”) B)fopen(“A:\\\%user\\\\abc.txt”,”r+”)

C)fopen(“A:\%user\\abc.txt”,”rb”) D)fopen(“A:\\\%user\\\\abc.txt”,”w”) 参考答案:B

考察知识点:文件的打开与关闭(fopen,fclose)

解析:本题考查点是fopen函数中文件使用方式的指定。

文件使用方式“r”,表示以“只读”方式打开一个字符文件。 文件使用方式“r+”,表示以“读写”方式打开一个字符文件。 文件使用方式”rb”,表示阻“只读”方式打开一个二进制文件。 文件使用方式“w”,表示以“只写”方式打开一个字符文件。 (235)以下不能正确进行字符串赋初值的语句为________。 A)char str[5]=“good! “ B)char str[]=“good!”

C)char *str=“good! “ D)char str[5]:{‘g’,‘o’,‘o’,‘d’} 参考答案:A

考察知识点:字符串与字符数组

解析:因为用字符串作初值为字符数组赋值时,系统总会自动在字符串的末尾补上一个“\\O”,作为字符串的结束标志。如果如A中定义的话,本来应该把第6个字符也就是“\\0”赋给str数组,但此数组只含5个元素,因此最后一个字符“\\0”未能放入str数组,而是放到了str数组之后的存储单元中,这就可能会破坏其他数据区或程序本身。

(236)若有下面的说明和定义: struct test

{ int m1;char m2;float m3;

union uu{char u1[5];int u2[2];}ua; }myaa;

则sizeof(struct test)的值是________。

A)12 B)16 C)14 D)9 参考答案:A

考察知识点:结构体和共用体类型数据的定义方法和引用方法 解析:在定义了结构体变量后,系统会为之分配内存单元,在内存中一个整型占2个字节,一个字符占1个字节,一个数组元素占1个字节,一个浮点型占4个字节。结构体变量所占内存长度是各成员所占内存长度之和;而共用体变量所占的内存长度等于最长的成员的长度。所以test在内存中占12个字节(2+1+4+5=12)。

(237)若有定义:int aa[8];,则以下表达式中不能代表数组元素aa[1]的地址的是_______。

A)&aa[0]+1 B)&aa[1] C)aa[0]++ D)aa+1 参考答案:C

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

解析:本题main函数中定义了指引p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5, a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][O]=O,a[2][1]=0,a[2][2]=0。通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。具体运行过程如下: i=0: j=O:p[0]=a[0][0],即p[0]=1; j=1:p[1]=af0][1], 即p[1]=3; j=2:p[2]=a[0][2], 即p[2]=5; i=1: j=O:p[3]

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com