[计算机类试卷]国家二级C语言(编译预处理和指针)机试模拟试卷5及答案与解析.doc
《[计算机类试卷]国家二级C语言(编译预处理和指针)机试模拟试卷5及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言(编译预处理和指针)机试模拟试卷5及答案与解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言(编译预处理和指针)机试模拟试卷 5及答案与解析 一、选择题 1 有以下程序,程序运行后的输出结果是 #define PT 3 5; #define S(x)PT*x*x; main()int a=1, b=2; printf(“ 4 1f n“, S(a+b); ( A) 31 5 ( B) 7 5 ( C)程序有错无输出结果 ( D) 14 0 2 设有宏定义: #define IsDIV(k, n)(k n=1)?1: 0)且变量 m已正确定义并赋值,则宏调用: IsDIV(m, 5)&lsDIV(m, 7)为真时所要表达的是 ( A)判断 m是否能被 5和 7整除 (
2、B)判断 m被 5或者 7整除是否余 1 ( C)判断 m被 5和 7整除是否都余 1 ( D)判断 m是否能被 5或者 7整除 3 有下列程序,程序的运行结果是 #include stdio h #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 d n“, i1, i2); ( A) 12 7 ( B) 12 12 ( C) 11 11 ( D) 11 7 4 若有以下程序,则程序的输出结果是 #define S(x)x*x #define T(x)S(x
3、)*S(x) main()int k=5, j=2; printf(“ d, d n“, S(k+j), T(k+j); ( A) 17, 37 ( B) 49, 2401 ( C) 17, 289 ( D) 49, 289 5 下面选项中关于编译预处理的叙述正确的是 ( A)凡是以 #号开头的行,都被称为编译预处理命令行 ( B)预处理命令行必须使用分号结尾 ( C)预处理命令行 不能出现在程序的最后一行 ( D)预处理命令行的作用域是到最近的函数结束处 6 有以下程序,程序的运行结果是 #include stdio h #include stdlib h int fun(int n) ma
4、in() int*p; int a; p=(int*)malloc(sizeof(int); a=fun(10); *p=n; return*p; printf(“ d n“, a+fun(10); ( A) 10 ( B) 20 ( C) 0 ( D)出错 7 有以下 程序段 int*p; p=_malloc(sizeof(int);若要求使 P指向一个 int型的动态存储单元,在横线处应填入的是 ( A) (int*) ( B) int ( C) int* ( D) (*int) 8 设有定义语句 int(*f)(int);则以下叙述正确的是 ( A) f是基类型为 int的指针变量 (
5、B) f是指向 int类型一维数组的指针变量 ( C) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 9 设有某函数的 说明为 int*func(int a10, int n);则下列叙述中,正确的是 ( A)说明中的 a10写成 a或 *a效果完全一样 ( B)形参 a对应的实参只能是数组名 ( C) func的函数体中不能对 a进行移动指针 (如 a+)的操作 ( D)只有指向 10个整数内存单元的指针,才能作为实参传给 a 10 设已有定义: float x;则以下对指针变量 p进行定义且赋初值的语句中正确的是
6、 ( A) int*p=(float)x; ( B) float*p=&x; ( C) float p=&x; ( D) float*p=1024; 11 设有定义 double a10, *s=a;以下能够代表数组元素 a3的是 ( A) (*s)3 ( B) *s3 ( C) *s+3 ( D) *(s+3) 12 若有定义语句: int year=2009, *p=&year;以下不能使变量 year中的值增至2010的语句是 ( A) (*p)+; ( B) +(*p); ( C) *p+; ( D) *p+=1; 13 有以下程序 (注:字符 a的 ASCII码值为 97) main
7、()char*s=“abc“; doprintf(“ d“, *s 10); +s; while(*s); 程序运行后的输出结果是 ( A) abc ( B) 7890 ( C) 979899 ( D) 789 14 若有定义语句: double a, *p=&a;以下叙述中错误的是 ( A)定义语句中的 *号是一个说明符 ( B)定义语句中的 p只能存放 double类型变量的地址 ( C)定义语句中, *p=&a把变量 a的地址作为初值赋给指针变量 p ( D)定义语句中的 *号是一个间址运算符 15 有以下程序 void fun(char*s)char a10; main()char*p
8、=“PROGRAM“; strcpy(a, “STRING“); fun(p); sa; printf(“ s n“, p); 程序运行后的输出结果是 (此处 代表空格 ) ( A) STRING ( B) PROGRAM ( C) STRING ( D) STRING 16 有以下程序 #include stdio h main() #define N 4 int xN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, void fun(int aN, int b) yN, i; int i; fun(x, y); for(i=0; i N; i+)bi=aii; for(i=0
9、; i N; i+)printf(“ d, “, yi); )printf(“kn“); 程序的运行结果是 ( A) 1, 2, 3, 4, ( B) 1, 4, 5, 9, ( C) 1, 0, 7, 0, ( D) 3, 4, 8, 10, 17 以 F函数按每行 8个输出数组中的数据: void fun(int*w, int n) int i; for(i=0: i n; i+) _ printf(“ d“, wi); printf(“ n“); 下划线处应填入的语句是 ( A) if(i 8=0)printf(“ n“); ( B) if(i 8=0)continue; ( C) if
10、(i 8=0)printf(“ n“); ( D) if(i 8=0)continue; 18 有以下程序 #include stdio h main() void fun(int*a, int*b) int x=3, y5, *p=&x, *q=&y; int*c; fun(p, q); printf(“ d, d, “, *p, *q); c=a; a=b; b=c; fun(&x, &y); printf(“ d, d n“, *p, *q); 程序运行后的输出结果是 ( A) 3, 5, 5, 3 ( B) 3, 5, 3, 5 ( C) 5, 3, 3, 5 ( D) 5, 3, 5
11、, 3 19 若有以下程序 #include stdio h void sp(int*a)int b=2; main()int k=3, *p=&k; a=&b; sp(p); *a=*a*2; printf(“ d, d n“, k, *p); printf(“ d“, *a); 则程序的输出结果是 ( A) 4, 3, 4 ( B) 4, 3, 3 ( C) 6, 3, 6 ( D) 6, 6, 6 20 若有以下程序 #3include stdio_h main()int k=3; void sp(int*a)int b=2; sp(&k); *a=*a*2; printf(“ d n“
12、, k); printf(“ d, “, *a); a=&b; *a=*a*2; printf(“ d, “, *a); 则程序的输出结果是 ( A) 6, 4, 6 ( B) 6, 4, 3 ( C) 6, 12, 12 ( D) 9, 4, 9 21 有以下程序 #include stdio h int funa(int a, int b)retum a+b; int funb(int a, int b)return a-b; int sss(int(*t)(), int x, int y)retum(*t)(x, y); main()int x; X=SSS(funa, 9, 3); x
13、+=sss(funb, 8, 3); printf(“ d n“, x); 程序运行后的输出结果是 ( A) 17 ( B) 23 ( C) 24 ( D) 22 22 有以下程序 char fun(char*c)if(*c =Z&*c =A) *c-=A-a; return*c; main()char s81, *p=s; gets(s); while(*p) *p=fun(P); putchar(*p); p+; ) printf(“ n“); 若运行时从键盘上输入 OPEN THE DOOR,程 序的输出结果是 ( A) OPEN tHE dOOR ( B) open the door
14、( C) OPEN THE DOOR ( D) Open The Door 23 有以下函数 int fun(char*s)char*t=s; while(*t+); return(t-s); 该函数的功能是 ( A)比较两个字符串的大小 ( B)计算 s所指字符串的长度 ( C)计算 s所指字符串占用内存字节的个数 ( D)将 s所指字符串复制到字符串 t中 24 有以下程序 void fun1(char*p) main() char*q; char a=“Program“, *p; q=p; p=&a3; fun1(p); printf(“ s n“, a); while(*q!= 0)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 编译 预处理 指针 模拟 答案 解析 DOC
