[计算机类试卷]国家二级C语言(指针、编译预处理和动态存储分配)机试模拟试卷3及答案与解析.doc
《[计算机类试卷]国家二级C语言(指针、编译预处理和动态存储分配)机试模拟试卷3及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言(指针、编译预处理和动态存储分配)机试模拟试卷3及答案与解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言(指针、编译预处理和动态存储分配)机试模拟试卷3及答案与解析 一、选择题 1 有以下程序: #include stdio h voidf(int*p, int*q); main( ) int m=1, n=2, *r=&m; f(r, &n); prinff(“ d, d“, m, n); void f(int*p, int*q) p=p+1: *q=*q+1; 程序的运行结果是 ( )。 ( A) 2, 3 ( B) 1, 3 ( C) 1, 4 ( D) 1, 2 2 设已有定义 float x;,则下列对指针变量 p进行定义且赋初值的语句中正确的是( )。 ( A) in
2、t*p=(float)x; ( B) float*p=&x; ( C) float p=&x; ( D) float*p=1024; 3 若有定义语句 double a, *P=&a;,下列叙述中错误的是 ( )。 ( A)定义语句中的 *号是一个间址运算符 ( B)定义语句中的 *号是一个说明符 ( C)定义语句中的 p只能存放 double类型变量的地址 ( D)定义语句中, *p=&a把变量 a的地址作为初值赋给指针变量 p 4 有以下程序: #include stdio h main( ) int a=1, b=3, c=5; int*p1=&a, *p2=&b, *p=&c; *p=
3、*p1*(*p2); printf(“ d n“, c); 程序的运行结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 5 有以下程序: #include stdio h main( ) int n, *p=NULL; *p=&n: prinff(“Input n: “); scanf(“ d“, &p); printf(“output n: “); printf(“ d n“, p); 该程序试图通过指针 p为变量 n读入数据并输出,但程序有多处错误,下列语句中正确的是 ( )。 ( A) int n, *p=NULL; ( B) *p=&n; ( C) scanf(
4、“ d“, &p); ( D) prinff(“ d n“, p); 6 若有定义语句 double x, y, *px, *py;,执行了 px=&x; py=&y;之后,正确的输入语句是 ( )。 ( A) searlf(“ If le“, px, py); ( B) seanf(“ f f“&x, &y); ( C) scard“(“ f f“, x, y); ( D) seanf(“ If If“, x, y); 7 下列程序段中完全正确的是 ( )。 ( A) int*p; scanf(“ d“, &p); ( B) int*p; scanf(“ d“, p); ( C) int k
5、, *p=&k; scanf(“ d“, p); ( D) int k, *p; *p=&k; scanf(“ d“, p); 8 若有定义语句 int a23, *p3;,则以下语句中正确的是 ( )。 ( A) p=a; ( B) p0=a; ( C) p0=&a12; ( D) p1=&a; 9 设有以下函数: void fun(int n, char*s) ,则下列对函数指针的定义和赋值均正确的是 ( )。 ( A) void(*pf)(int, char); pf=&fun; ( B) void*pf( ); pf=fun; ( C) void*pf( ); *pf=fun; ( D
6、) void(*pf)(int, char*); pf=fun; 10 )下列函数的功能是 ( )。 void fun(char*a, char*b) while(*b=*a)!= 0)a+; b+; ( A)将 a所指字符串赋给 b所指空间 ( B)使指针 b指向 a所指字符串 ( C)将 a所指字符串和 b所指字符串进行比较 ( D)检查 a和 b所指字符串中是否有 0 11 有以下程序: #include stdio h #define N4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii-aiN-1-i; main( ) i
7、nt xNN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16, yN, i; fun(x, y); for(i=0; i N; i+) prinff(“ d, “, yi); prinff(“ n“); ( A) -3, -1, 1, 3, ( B) -12, -3, 0, 0, ( C) 0, 1, 2, 3, ( D) -3, -3, -3, -3, 12 有以下程序: #include stdio h #include string h main( ) char str20=“One*World“, “One*Dream!“, *
8、p=str1; prinff(“ d, “, strlen(p); prinff(“ s n“, p); 程序的运行结果是 ( )。 ( A) 10 One*Dream! ( B) 9, One*Dream! ( C) 9 One*Worid ( D) 10, One*World 13 若有定义 int w35;,则以下不能正确表示该数组元素的表达式是 ( )。 ( A) *(&w00+1) ( B) *(*+3) ( C) *(*(w+1) ( D) *(w+1)4 14 下列语句组中正确的是 ( )。 ( A) char*s; s=“Olympic“; ( B) char s7; s=“O
9、lympic“; ( C) char*s; s=“Olympic“; ( D) char s7; s=“Olympic“; 15 有以下程序 (注:字符 a的 ASCII码值为 97): #include stdio h main( ) char*s=“abc“; do prinff(“ d“, *s 10); +s: while(*s); 程序的运行结果是 ( )。 ( A) 789 ( B) abc ( C) 7890 ( D) 979899 16 设有定义 “char*c; ”,以下选项中能够使 c正确指向一个字符串的是 ( )。 ( A) char str=“string“; c=st
10、r; ( B) scanf(“ s“, c); ( C) c=getchar( ); ( D) *c=“string“; 17 有以下函数: int fun(char*x, char*y) int n=0; while(*x=y)&*x!= 0) x+; y+; n+; return n; 函数的功能是 ( )。 ( A)将 y所指字符串赋给 x所指存储空间 ( B)查找 x和 y所指字符串中是否有 0 ( C)统计 x和 y所指字符串中最前面连续相同的字符个数 ( D)统计 x和 y所指字符串中相同的字符个数 18 下列语句组中正确的是 ( )。 ( A) char*s; s=“BOOK!“
11、; ( B) char*s; s=“BOOK!“; ( C) char s10; s=“BOOK!“; ( D) chars; s=“BOOK!“; 19 设有定义语句 “int(*f)(int); ”则下列叙述中正确的是 ( )。 ( A) f是基类型为 int的指针变量 ( B) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( C) f是指向 int类型一维数组的指针变量 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 20 有以下程序: #include stdio h int add(int a, int b) return(a+b); main( )
12、int k, (*f)( ), a=5, b=10; f=add; 则以下函数调用语句错误的是 ( )。 ( A) k=f(a, b); ( B) k=add(a, b); ( C) k=(*f)(a, b); ( D) k=*f(a, b); 21 下列语句中存在语法错误的是 ( )。 ( A) char ss620; ss1=“right?“; ( B) char ss20=“right?“; ( C) char*ss6; SS1=“right?“; ( D) char*ss=“right?“; 22 下列叙述中正确的是 ( )。 ( A)在 C语言中,预处理命令行都以 “#”开头 ( B
13、)预处理命令行必须位于 C源程序的起始位置 ( C) #include stdio h必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 23 下列关于宏的叙述中正确的是 ( )。 ( A)宏替换没有数据类型限制 ( B)宏定义必须位于源程序中所有语句之前 ( C)宏名必须用大写字母表示 ( D)宏调用比函数调用耗费时间 24 有以下程序: #include stdio h #define PT3 5: #define S(x)PT*x*x; main( ) int a=1, b=2; prinff(“ 4 1f n“, S(a+b); 程序的运行结果是 ( )。
14、( A) 7 5 ( B) 31 5 ( C)程序有错无输出结果 ( D) 14 0 25 若程序中有宏定义行: #define N100,则下列叙述中正确的是 ( )。 ( A)宏定义行中定义了标识符 N的值为整数 100 ( B)在编译程序对 C源程序进行预处理时用 100替换标识符 N ( C)上述宏定义行实现将 100赋给标识符 N ( D)在运行时用 100替换标识符 N 26 有以下程序: #include stdio h #define S(x)4*(x)*x+1 main( ) int k=5, j=2; printf(“ d n“, S(k+j); 程序的运行结果是 ( )。
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 指针 编译 预处理 动态 存储 分配 模拟 答案 解析 DOC
