[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷2及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷2及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷2及答案与解析.doc(28页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(编译预处理和指针)模拟试卷 2及答案与解析 一、选择题 1 有以下程序 #define PT 3 5; #define S(x)PT*x*x; main() int a=1, b=2; printf(“ 4 1 f n“, S(a+b); ) 程序运行后的输出结果是 ( A) 31 5 ( B) 7 5 ( C)程序有错无输出结果 ( D) 14 0 2 有以下程序 #include #define S(x)4*(x)*x+1 void main() int k=5, j=2; printf(“ d n“, S(k+j); 程序运行后的输出结果是 ( A) 197 ( B
2、) 143 ( C) 33 ( D) 28 3 有以下程序 #include #define suB(a)(a)-(a) main() int a=2, b=3, c=5, d; d=SUB(a+b)*c: pfintf(“ d n“, d); 程序运行后的输出结果是 ( A) -12 ( B) 0 ( C) 10 ( D) -20 4 有下列程序: #include #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); 程序的 运
3、行结果是 ( A) 12 7 ( B) 12 12 ( C) 11 11 ( D) 11 7 5 若程序中有宏定义行: #define N 100则以下叙述中正确的是 ( A)宏定义行中定义了标识符 N的值为整数 100 ( B)上述宏定义行实现将 100赋给标示符 N ( C)在运行时用 100替换标识符 N ( D)在编译程序对 C源程序进行预处理时用 100替换标识符 N 6 有以下程序 #include #define N 2 #define M N+1 #define NUM(M+1)*M 2 main() printf(“ d n“, NUM); 程序运行后的输出结果是 ( A)
4、4 ( B) 8 ( C) 9 ( D) 6 7 下面选项中关于编译预处理的叙述正确的是 ( A)凡是以 #号开头的行,都被称为编译预处理命令行 ( B)预处理命令行必须使用分号结尾 ( C)预处理命令行不能出现在程序的最后一行 ( D)预处理命令行的作用域是到最近的函数结束处 8 以下叙述中正确的是 ( A)在包含文件中,不得再包含其他文件 ( B) #include命 令行不能出现在程序文件的中间 ( C)在一个程序中,允许使用任意数量的 #include命令行 ( D)虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接 9 以下程序 #include #include m
5、ain() int*a, *, *c; a=b=c=(int*)malloc(sizeof(int); *a=1; *b=2, *c=3; a=b; printf(“ d, d, d n“, *a, *, *c); 程序运行后的输出结果是 ( A) 2 2 3 ( B) 3, 3, 3 ( C) 1, 2, 3 ( D) 1, 1, 3 10 有以下程序段 int*p; p=_malloc(sizeof(int);若要求使 p指向一个 int型的动态存储单元,在横线处应填入的是 ( A) (int*) ( B) int ( C) int* ( D) (*int) 11 设有以下函数: void
6、 fun(int n, char*s) 则下面对函数指针的定义和赋值均正确的是 ( A) void*Pf(); pf=fun; ( B) void(*pf)(int, char*); pf=fun; ( C) void*Pf(); *pf=fun; ( D) void(*pf)(int, char); pf=&fun; 12 以下叙述中正确的是 ( A)指针变量只能通过求地址运算符 (&)来获得地址值 ( B)语句 p=NULL;与 p= 0;是等价的语句 ( C) int*p1; int*p2; int*p3;都是合法的定义指针变量的语句 ( D)语句 p=NULL;执行后,指针 P指向地址
7、为 0的存储单元 13 设有某函数的说明为 int*func(int a10, int n);则下列叙述中,正确的是 ( A)说明中的 a10写成 a或 *a效果完全一样 ( B)形参 a对应的实参只能是数组名 ( C) func的函数体中不能对 a进行移动指针 (如 a+)的操作 ( D)只有指向 10个整数内存单元的指针,才能作为实参传给 a 14 以下叙述中错误的是 ( A)函数可以返回地址值 ( B)改变函数形参的值,不会改变对应实参的值 ( C)当在程序的开头包含头文件 stdio h时,可以给指针变量赋 NULL ( D)可 以给指针变量赋一个整数作为地址值 15 有以下程序 ma
8、in() int m=1, n=2, *p=&m, *q=&n, *r; r=p; p=q; q=r; printf(“ d, d, d, d n“, m, n, *p, *q); ) 程序运行后的输出结果是 ( A) 1, 2, 1, 2 ( B) 1, 2, 2, 1 ( C) 2, 1, 2, 1 ( D) 2, 1, 1, 2 16 设有定义 double a10, *s=a;以下能够代表数组元素 a3的是 ( A) (*s)3 ( B) *s3 ( C) *s+3 ( D) *(s+3) 17 若有定义语句: int a23, *p3;则以下语句中正确的是 ( A) p0=&a12;
9、 ( B) p0=a; ( C) p=a; ( D) p1=&a; 18 有以下程序 main() int a5=2, 4, 6, 8, 10, *p, *k; p=a; k=&p; printf(“ d“, *(p+); printf(“ d n“, *k); 程序运行后的输出结果是 ( A) 4 4 ( B) 2 4 ( C) 2 2 ( D) 4 6 19 有以下程序 (注:字符 a的 ASCII码值为 97) main() char*s=“abc“; do printf(“ d“, *s 10); +s; )while(*s); ) 程序运行后的输出结果是 ( A) abe ( B)
10、7890 ( C) 979899 ( D) 789 20 有以下程序 #include 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) scant(“ d“, &p) ( D) printf(“ d n“, p); 21 若有以下定义 int x10, *pt=x;则对 x数
11、组元素的正确引用是 ( A) *(x+3) ( B) *&x10 ( C) *(pt+10) ( D) pt+3 22 有以下程序 void fun(char*s) char a10; strcpy(a, “STRING“); s=a; main() char*p=“PROGRAM“; fun(P); printf(“ s n“, p); 程序运行后的输出结果是 (此处 口代表空格 ) ( A) STRING ( B) PROGRAM ( C) STRING ( D) STRING 23 有以下程序 #include int fun(char*s) char*p=s; while(*P!=0)
12、p+; return(p-s); main() printf(“ d n“, fun(“goodbey!“); 程序的输出结果是 ( A) 6 ( B) 8 ( C) 0 ( D) 7 24 有下列程序: void flint*q) int i=0; for(; i 5; i+)(*q)+; main() int a5=1, 2, 3, 4, 5, i; f(a); for(i=0; i 5; i+)printf(“ d, “, ai); 程序运行后的输出结果是 ( A) 2, 2, 3, 4, 5, ( B) 6, 2, 3, 4, 5, ( C) 1, 2, 3, 4, 5, ( D) 2
13、, 3, 4, 5, 6, 25 以下函数按每行 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(i 8=0)printf(“ n“); ( D) if(i 8=0)continue; 26 有以下程序 #include void f(int*p, int*q); main() int m=1, n=2, *r=&
14、m; f(r,&n); printf(“ 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 27 有下列程序: void f(intb) int I; for(i=2; i 6; i+)bi*=2; main() int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; f(a); for(i=0; i 10, i+)printf(“ d, “, ai); 程序运行后的输出结果是 ( A) 1, 2, 3, 4
15、, 5, 6, 7, 8, 9, 10, ( B) 1, 2, 3, 4, 10, 12, 14, 16, 9, 10, ( C) 1, 2, 6, 8, 10, 12, 7, 8, 9, 10, ( D) 1, 2, 6, 8, 10, 12, 14, 16, 9, 10, 28 若有以下程序 #include stdio h void sp(int*a) int b=2; a=&b; *a=*a*2: printf(“ d, “, *a); ) main()int k=3, *p=&k; sp(p); printf(“ d, d n“, k, *p); ) 则程序的输出结果是 ( A) 4
16、, 3, 4 ( B) 4, 3, 3 ( C) 6, 3, 6 ( D) 6, 6, 6 29 若有以下程序 #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); pfintf(“ d, d, d, d, d n“, i, j, *p, *q, *r); 则程序的输出结果是 ( A) 3, 5, 5, 3, 5 ( B) 5, 3, 5, 3, 5 ( C) 5, 3, 3, 5, 5 (
17、D) 3, 5, 3, 5, 5 30 若有以下程序 #include int k=7, m=5; void f(int*S) int*t=&k: s=&t; *s=&m; 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) 7, 5, 7, 3, 3, 3, ( B) 7, 5, 7, 3, 5, 7, ( C) 7, 5, 5, 3, 3, 3, ( D) 7, 7, 5, 3, 3, 3, 31 有以下程序 #
18、include int funa(int a, int b) return a+b; int funb(int a, int b)return a-b; int SSS(int(*t)0, int x, int Y)retum(*t)(x, Y); main() inl x: x=sss(fhna, 9, 3); x+=sss(funb, 8, 3); printf(“ d n“, x); 程序运行后的输出结果是 ( A) 17 ( B) 23 ( C) 24 ( D) 22 32 有以下程序 void fun( int*P, int*q) int t; t=*p; *p=*q; *q=t;
19、*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 33 有以下程序 void swap(char*x,char*y) char t; t=*x; *x=*y; *y=t; main() char*s1=“abc“, *s2=“123“; swap(s1, s2); printf(“ s, s n“, s1, s2); 程序执行后的输出结果是 ( A) abc, 123 ( B) 123, abe ( C) 321, c
20、ba ( D) 1bc, a23 34 有以下函数 int fun(char*s)char*t=s; while(*t+); retum(t-s); 该函数的功能是 ( A)比较两个字符串的大小 ( B)计算 s所指字符串的长度 ( C)计算 s所 指字符串占用内存字节的个数 ( D)将 s所指字符串复制到字符串 t中 35 有以下程序 #include void fun(char*P、 +p; printf(“ sha“, *p); ) main() char*a=(“Morning“, “Afternoon“, “Evening“, “Night“); fun(a); 程序的运行结果是 (
21、 A) fiemoon ( B) Morning ( C) orning ( D) Afternoon 36 有以下程序 #include void fun(char*a,char*b) while(*a=*)a+; while(*b=*a)b+; a+; ) main() char*s=“*a*b*“, t80; fun(s, t); puts(t); 程序的运行结果是 ( A) a*b ( B) *a*b ( C) a*b* ( D) ab 37 有以下程序 #include #include void fun(char S10, int n) char t; int ij; for(i=
22、0; i n-1; i+) for(j=i+1; j n; j+) if(si0 sj0)t=si0; si0=sD0; sj0=t; ) main() char ss510=“bcc“, “bbcc“, “xy“, “aaaacc“, “aabcc“); fun(ss, 5); printf(“ s, s n“, ss0, ss4); 程序的运行结果是 ( A) aaaacc, xy ( B) bcc, aabcc ( C) xy, aaaacc ( D) aabcc, bcc 38 有以下程序 #include #include void fun(char*w, int m) char s
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 编译 预处理 指针 模拟 答案 解析 DOC
