[计算机类试卷]国家二级C语言(编译预处理和指针)机试模拟试卷4及答案与解析.doc
《[计算机类试卷]国家二级C语言(编译预处理和指针)机试模拟试卷4及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言(编译预处理和指针)机试模拟试卷4及答案与解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言(编译预处理和指针)机试模拟试卷 4及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)在 C语言中,预处理命令行都以 “#“开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #include必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 2 有以下程序,程序运行后的输出结果是 #include stdio h #define S(x)4*(x)*x4+1 void main() int k=5, j=2; printf(“ d n“, S(k+j); ( A) 197 ( B) 143 ( C) 33 ( D) 28 3
2、有以下程序,程序运行后的输出结果是 #include stdio h #define fix)x*x*x main()int a=3, s, t; s=f(a+1); t=f(a+1); printf(“ d, d n“, s, t); ( A) 10, 10 ( B) 10, 64 ( C) 64, 10 ( D) 64, 64 4 若程序中有宏定义行: #define N 100则以下叙述中正确的是 ( A)宏定义行中定义了标识符 N的值为整数 100 ( B)上述宏定义行实现将 100赋给标示符 N ( C)在运行时用 100替换标识符 N ( D)在编译程序对 C源程序进行预处理时用
3、100替换标识符 N 5 有以下程序,程序运行后的输出结果是 #include stdio h #define SUB(X, Y)(X+1)*Y main()int a=3, b=4; printf(“ d n“, SUB(a+, b+); ( A) 20 ( B) 12 ( C) 16 ( D) 25 6 以下叙述中正确的是 ( A)在包含文件中,不得再包含其 他文件 ( B) #include命令行不能出现在程序文件的中间 ( C)在一个程序中,允许使用任意数量的 #include命令行 ( D)虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接 7 有以下程序,程序运行后
4、的输出结果是 void fun(int*p1, int*p2, int*s) s=(int*)malloc(sizeof(int); *s=*p1+*(p2+); main()int a2=1, 2, b21=10, 20, *s=a; fun(a, b, s); printf(“ d n“, *s); ( A) 10 ( B) 11 ( C) 2 ( D) 1 8 设有以下函数: void fun(int n, char*s) 则下面对函数指针的定义和赋值均正确的是 ( A) void*pf(); pf=fun; ( B) void(*pf)(int, char*); pf=fun; ( C
5、) void*pf(); *pf=fun; ( D) void(*pf)(int, char); pf=&fun; 9 以下叙述中正确的是 ( A)函数的类型不能是指针类型 ( B)函数的形参类型不能 是指针类型 ( C)基类型不同的指针变量可以相互混用 ( D)设有指针变量为 “double*p”,则 “p+1”将指针 P移动 8个字节 10 以下叙述中错误的是 ( A)函数可以返回地址值 ( B)改变函数形参的值,不会改变对应实参的值 ( C)当在程序的开头包含头文件 stdio h时,可以给指针变量赋 NULL ( D)可以给指针变量赋一个整数作为地址值 11 下面选项中的程序段,没有编
6、译错误的是 ( A) char*sp, s10; sp=“Hello“; ( B) char*sp, s10; s=“Hello“; ( C) char strl10=“computer“, str210; str2=str1; ( D) char mark1; mark=“PROGRAM“; 12 若有定义语句: int a23, *p3;则以下语句中正确的是 ( A) p0=&a12; ( B) p0=a; ( C) p=a; ( D) p1=&a; 13 以下叙述中正确的是 ( A)如果 p是指针变量,则 *p表示变量 P的地址值 ( B)如果 p是指针变量,则 &p是不合法的表达式 (
7、 C)在对指针 进行加、减算术运算时,数字 1表示 1个存储单元的长度 ( D)如果 p是指针变量,则 *p+1和 *(p+1)的效果是一样的 14 有以下程序 #include stdio h main() int n, *p=NULL; *p=&n; printf(“Input n: “); scanf(“ d“, &p); printf(“output n: “); printf(“ d n“, p); 该程序试图通过指针 p为变量 n读入数据并输出,但程序有多处错误,以下语句正确的是 ( A) int n, *p=NULL; ( B) *p=&n; ( C) scanf(“ d“, &
8、p) ( D) printf(“ d n“, p); 15 有以下程序 int fun1(double a)return a*=a; int fun2(double x, double y) double a=0, b=0; a=fun1(x); b=fun1(y); return(int)(a+b); main() double w; w=fun2(1 1, 2 0); 程序执行后输出结果是 ( A) 5 00 ( B) 5 ( C) 5 21 ( D) 0 0 16 有以下程序 #include stdio h int fun(char*s)char*p=s; while(*p!=0)p+
9、; return(p-s); main()printf(“ d n“, fun(“goodbey!“); 程序的输出结果是 ( A) 6 ( B) 8 ( C) 0 ( D) 7 17 有以下程序 #include stdio h main() void fun(char*c, int d char b=a, a=“A; *c=*c+1; d=d+1; fun(&b, a); printf(“ c, c n“, b, a); printf(“ c, c, “, *c, d); 程序运行后的输出结果是 ( A) b, B, b, A ( B) b, B, B, A ( C) a, B, B, a
10、 ( D) a, B, a, B 18 有以下程序 #include stdio h void f(int*p, int*q) void f(int*p, int*q); main() p=p+1; *q=*q+1; int m=1, n=2, *r=&m; f(r, &n); printf(“ d, d“, m, n); 程序运行后的输出结果是 ( A) 2, 3 ( B) 1, 3 ( C) 1, 4 ( D) 1, 2 19 有以下程序 #include stdio h int fun(char s) main() int n=0; char s10=6, 1, *, 4, *, 9,
11、*, 0, *: while(*s =9&*s =0)printf(“ d n“, fun(s); n=10*n+*s-0; s+; return(n); 程序的运行结果是 ( A) 61490 ( B) 61 ( C) 9 ( D) 5 20 若有以下程序 #include stdio h int*f(int*s, int*t)int*k; if(*s *t) k=s; s=t; t=k; return s; main()int i=3, j=5, *p=&i, *q=&j, *r; r=f(p, q); printf(“ d, d, d, d, d n“, i, j9*p, *q, *r)
12、; 则程序的输出结果是 ( A) 3, 5, 5, 3, 5 ( B) 5, 3, 5, 3, 5 ( C) 5, 3, 3, 5, 5 ( D) 3, 5, 3, 5, 5 21 若有以下程序 #include stdio h int*flint*s, int*t)int k; if(*s *t) k=*s; *s=*t; *t=k; return s; main()int i=3, j=5, *p=&i, *q=&j, *r; r=f(p, q); printf(“ d, d, d, d, d n“, i, J, *p, *q, *r); 则程序的输出结果是 ( A) 3, 5, 5, 3
13、, 5 ( B) 3,5, 3, 5, 5 ( C) 5, 3, 5, 3, 5 ( D) 5, 3, 3, 5, 5 22 有以下程序 void fun(int*p, int*q)int t; t=*p; *p=*q;幸 q=t; *q=*p; main()int a=0, b=9; fun(&a, &b); printf(“ d d n“, a, b); 程序的输出结果是 ( A) 0 0 ( B) 9 9 ( C) 9 0 ( D) 0 9 23 有以下函数 int fun(char*x, char*y)int n=0; while(*x: =*y)&*x!= 0) x+; y+; n+
14、; return n; 函数的功能是 ( A)查找 x和 y所指字符串中是否有 0 ( B)统计 x和 y所指字符串中最前面连续相同的字符个数 ( C)将 y所指字符串赋给 x所指存储空间 ( D)统计 x和 y所指字符串中相同的字符个数 24 有以下程序 #include stdio h void fun(char*p) +p; printf(“ sha“, *p); main() char*a=(“Morning“, “Afternoon“, “Evening“, “Night“); fun(a); 程序的运行结果是 ( A) ftemoon ( B) Morning ( C) ornin
15、g ( D) Afternoon 25 下列函数的功能是 void fun(char*a, char*b)while(*b=*a)!= 0)a+; b+; ) ( A)使指针 b指向 a所指字符串 ( B)将 a所指字符串和 b所指字符串进行比较 ( C)将 a所指字符串赋给 b所指空间 ( D)检查 a和 b所指字符串中是否有 0 26 有以下程序 #include stdio h #include string h void fun(char*w, int m) char s, *p1, *p2; p1=w; p2=w+m-1; while(p1 p2)s=*p1; *p1=*p2; *p
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 编译 预处理 指针 模拟 答案 解析 DOC
