[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷1及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷1及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷1及答案与解析.doc(28页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(编译预处理和指针)模拟试卷 1及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)在 C语言中,预处理命令行都以 ”#”开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #include必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 2 以下关于宏的叙述中正确的是 ( A)宏定义必须位于源程序中所有语句之前 ( B)宏名必须用大写字母表示 ( C)宏调用比函数调用耗费时间 ( D)宏替换没有数据类型限制 3 设有宏定义: #define IsDIV(k, n)(k n=1)?1: 0)且变量 m已正确定义并赋值,则宏调
2、用: IsDIV(m, 5)&IsDIV(m, 7)为真时所要表达的是 ( A)判断 m是否能被 5和 7整除 ( B)判断 m被 5或者 7整除是否余 1 ( C)判断 m被 5和 7整除是否都余 1 ( D)判断 m是否能被 5或者 7整除 4 有以下程序 #include #define f(x)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 5 以下叙述中错误的是 (
3、 A)预处理命令行的最后不能以分号表示结束 ( B) C程序对预处理命令行的处理是在程序执行的过程中进行的 ( C) #define MAX是合法的宏定义命令行 ( D)在程序中凡是以 “#”开始的语句行都是预处理命令行 6 若有以下程序 #define S(x)x*x #define T(x)S(x)*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 7 有以下程序 #inc lude #define
4、 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 8 有以下程序 #inc lude #define SQR(X) X*X main() int a=10, k=2, m=1; a =SQR(k+m) SQR(k+m); printf(“ d n”, a); 程序的输出结果是 ( A) 0 ( B) 1 ( C) 9 ( D) 10 9 有以下程序 #include #include int fun(int n) int*p;
5、 p=(int*)malloc(sizeof(int); *p=n; returb*p; main() int a; a=fun(10); printf(“ d n“, a+fun(10); 程序的运行结果是 ( A) 10 ( B) 20 ( C) 0 ( D)出错 10 有以下程序 void fun(int*p1, int*p2, int*s) s=(int*)malloc(sizeof(int); *s=*p1+*(p2+); main() int a2=1, 2, b2=10, 20, *s=a; fun(a,b, s); printf(“ d n“, *s); 程序运行后的输出结果是
6、 ( A) 10 ( B) 11 ( C) 2 ( D) 1 11 有以下程序 void funf double*p1, double*p2, double*S) s=(double*)calloc(1, sizeof(double); *s=*p1+*(p2+1); main() double a2=1 1, 2 2), b2=10 0, 20 0), *s=a; fun(a, b, s); printf(“ 5 2f n“, *s); ) 程序的输出结果是 ( A) 1 10 ( B) 11 10 ( C) 12 10 ( D) 21 10 12 设有定义语句 int(*f)(int);则
7、以下叙述正确的是 ( A) f是基类型为 int的指针变量 ( B) f是指向 int类型一维数组的指针变量 ( C) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 13 以下叙述中正确的是 ( A)函数的类型不能是指针类型 ( B)函数的形参类型不能是指针类型 ( C)基类型不同的指针变量可以相互混用 ( D)设有指针变量为 double*p,则 p+1将指针 P移动 8个字 节 14 设有定义: int x=0, *p;紧接着的赋值语句正确的是 ( A) *p=NULL; ( B) p=NULL; ( C) p=
8、x; ( D) *p=x; 15 设已有定义: float x;则以下对指针变量 P进行定义且赋初值的语句中正确的是 ( A) int*p=(float)x; ( B) float*p=&x; ( C) float p=&x; ( D) float*p=1024; 16 下面选项中的程序段,没有编译错误的是 ( A) char*sp, s10; sp=“Hello“; ( B) char*sp, s10; s=“Hello“; ( C) char str110=“computer“, str210; str2=str1; ( D) char mark; mark=“PROGRAM“; 17 有
9、以下程序 main() int a=1, b=3, c=5; int*p1=&a, *p2=&b, *p=&c; *P=*p1*(*p2); printf(“ d n“, c); ) 执行后的输出结果是 ( A) 2 ( B) 3 ( C) 1 ( D) 4 18 若有定义语句: int year=2009, *p=&year;以下不能使变量 year中的值增至2010的语句是 ( A) (*p)+; ( B) +(*p); ( C) *p+; ( D) *p+=1; 19 以下叙述中正确的是 ( A)如果 p是指针变量,则 *p表示变量 p的地址值 ( B)如果 p是指针变量,则 &p是不合
10、法的表达式 ( C)在对指针进行加、减算术运算时,数字 1表示 1个存储单元的长度 ( D)如果 P是指针变量,则 *p+1和 *(p+1)的效果是一样的 20 设有定义: char*c;以下选项中能够使 c正确指向一个字符串的是 ( A) char str=“string“; c=str; ( B) scanf(“ s“, c); ( C) c=getchar(); ( D) *c=“string“; 21 若有定义语句: double a, *p=&a;以下叙述中错误的是 ( A)定义语句中的 *号是一个说明符 ( B)定义语句中的 p只能存放 double类型变量的地址 ( C)定义语句
11、中 *p=&a把变量 a的地址作为初值赋给指针变量 p ( D)定义语句中的 *号是一个问址运 算符 22 有以下程序 int funl(double a)return a*=a; int fun2(double x,double y) double a=0, b=0; a=funI(x); b=fun1(y); retum(int)(a+b); main() double w; w=fun2(1 1, 2 0); 程序执行后输出结果是 ( A) 5 00 ( B) 5 ( C) 5 21 ( D) 0 0 23 有以下程序 void fun(int n, int*s) int f= if(n
12、=1)*s=n+1; elsefun(n-1, &f); *s=f; main() int x=0: fun(4, &x); printf(“ d n“, x); 程序运行后的输出结果是 ( A) 1 ( B) 3 ( C) 4 ( D) 2 24 有以下程序 #include #define N 4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii; main() int xN=1, 2, 3), 4), 5, 6, 7, 8), 9, 10, yN, i; fun(x, y); for(i=0; i N; i+) printf(“
13、 d“, yi); printf(“ n“); 程序的运行结果是 ( A) 1, 2, 3, 4, ( B) 1, 4, 5, 9, ( C) 1, 0, 7, 0, ( D) 3, 4, 8, 10, 25 有以下程序 #include void fun(char*c, int d) *c=*c+1; d=d+1; printf(“ c, c, “, *c, d); main() char b=a, a=A; fun(&b, a); printf(“ c, c n“, b, a); 程序 运行后的输出结果是 ( A) b, B, b, A ( B) b, B, B, A ( C) a, B,
14、 B, a ( D) a, B, a, B 26 有以下程序: #include void fun(char*c) while(*c) if(*c =a&*c =z)*c=*c-(a-A); c+; void main() char s81; gets(s); fun(s); puts(s); 当执行程序时从键盘上输入 Hello Beijing,则程序的输出结果是 ( A) HELLO BEIJING ( B) Hello Beijing ( C) hello Beijing ( D) hELLO Beijing 27 有以下程序 #include void fun(int*a,int*b)
15、 int*c; c=a; a=b; b=c; main() int x=3, y=5, *p=&x, *q=&y; fun(p, q); printf(“ d, d, “, *p, *q); 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, 3 28 有以下程序 #include int fun(char S) int n=0; while(*s =9&*s =0)n=10*n+*s-0; s+; ) return(n
16、); main() char si10=6, 1, *, 4, *, 9, *, 0, *); printf(“ d n“, fun(s); 程序的运行结果是 ( A) 61490 ( B) 61 ( C) 9 ( D) 5 29 若有以下程序 #include stdio h int k=7; void f(int*s) int*t=&k; *s=t; printf(“ d, d, d, “, k, *t, *s); main() int i=3, *p=&i, *r=&p; f(r); printf(“ d, d, d n“, i, *p, *r); 则程序的输出结果是 ( A) 3, 7
17、, 7, 7, 7, 7 ( B) 7, 7, 7, 3, 3, 3 ( C) 3, 3, 3, 7, 7, 7 ( D) 7, 7, 7, 3, 7, 7 30 若有以下程序 #include stdio h void sp(int*a) int b=2; *a=*a*2; printf(“ d, “, *a); a=&b: *a=*a*2: printf(“ d, “, *a): main() int k=3; sp(&k); printf(“ d n“, k); 则程序的输出结果是 ( A) 6, 4 6 ( B) 6, 4, 3 ( C) 6, 12, 12 ( D) 9, 4, 9
18、31 若有以下程序 #include 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, j, *P, *q, *r); 则程序的输出结果是 ( A) 3, 5, 5, 3, 5 ( B) 3, 5, 3, 5, 5 ( C) 5, 3, 5, 3, 5 ( D) 5, 3, 3, 5, 5 32 有以下程序 void fun(int X, int y, i
19、nt*c, int*d) *c=x+y; *d=x-y; ) main() int a=4, b=3, c=0, d=0; fun(a, b, &c, &d); printf(“ d d n“, c, d); ) 程序的输出结果是 ( A) 4 3 ( B) 3 4 ( C) 7 1 ( D) 0 0 33 有以下程序 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“); 若
20、运行时从键盘上输入 OPEN THE DOOR,程序的输出结果是 ( A) oPEN tHE dOOR ( B) open the door ( C) OPEN THE DOOR ( D) Open The Door 34 有以下函数 int fun(char*x, char*y) int n=0: while(*x=*y)&*x!= 0) x+; y+; n+; return n; ) 函数的功能是 ( A)查找 x和 Y所指字符串中是否有 0 ( B)统计 X和 Y所指字符串中最前面连续相同的字符个数 ( C)将 v所指字符串赋给 x所指存储空间 ( D)统计 X和 Y所指字符串中相同的字
21、符个数 35 有以下程序 (说明:字母 A的 ASCII码值是 65) void fun(char*s) while(*s) if(*s 2) printf(“ c“, *s); s+; ) main() char a=“BYTE“; fun(a); printf(“ n“); ) 程序运行后的输出结果是 ( A) BT ( B) YE ( C) YT ( D) BY 36 有以下程序 void funl(char*p) char*q; q=p; while(*q!= 0) (*q)+; q+; ) main() char a=“Program“), *p; p=&a3; fun1(p); p
22、rintf(“ s n“, a); 程序执行后的输出结果是 ( A) Prphsbn ( B) Prohsbn ( C) Progsbn ( D) Program 37 下列函数的功能是 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 38 有以下程序 #include void fun(char*t, char*S) while(*t!=0)t+; while(*t+=*
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 编译 预处理 指针 模拟 答案 解析 DOC
