[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷4及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷4及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷4及答案与解析.doc(28页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(编译预处理和指针)模拟试卷 4及答案与解析 一、选择题 1 有以下程序 #definePT3 5; #defineS(x)PT*x*x; main( ) inta=l, b=2; printf( 4 1fn, S(a+b); 程序运行后的输出结果是 ( A) 31 5 ( B) 7 5 ( C)程序有错无输出结果 ( D) 14 2 有以下程序 #include stdio h #defineS(x)4*(x)*x+1 yoidmain( ) intk=5,j=2: printf( dn, S(k+j); 程序运行后的输出结果是 ( A) 197 ( B) 143 ( C
2、) 33 ( D) 28 3 有以下程序 #include stdio h #defineSUB(a)(a)-(a) main( ) inta=2, b=3, c=5, d; d=SUB(a+b)*c: printf( dln, d); 程序运行后的输出结果是 ( A) -12 ( B) 0 ( C) 10 ( D) -20 4 有下列程序: #include stdio_h #deftneN5 #defineMN+1 #definefix)(x*M) main( ) inti1, i2; i1=f(2); i2=f(1+1); printf( d dn, il, i2); 程序的运行结果是
3、( A) 127 ( B) 1212 ( C) 1111 ( D) 117 5 若程序中有宏定义行: #defineN100则以下叙述中正确的是 ( A)宏定义行中定义了标识符 N的值为整数 100 ( B)上述宏定义行实现将 100赋给标示符 N ( C)在运行时用 100替换标识 符 N ( D)在编译程序对 C源程序进行预处理时用 100替换标识符 N 6 有以下程序 #include stdio h #deftneN2 #defineMN+1 #defineNUM(M+1)*M/2 main( )printf( dn, NUM); ) 程序运行后的输出结果是 ( A) 4 ( B) 8
4、 ( C) 9 ( D) 6 7 下面选项中关于编译预处理的叙述正确的是 ( A)凡是以 #号开头的行,都被称为编译预处理命令行 ( B)预处理命令行必须使用分号结尾 ( C)预处理命令行不 能出现在程序的最后一行 ( D)预处理命令行的作用域是到最近的函数结束处 8 以下叙述中正确的是 ( A)在包含文件中,不得再包含其他文件 ( B) #inc1ude命令行不能出现在程序文件的中间 ( C)在一个程序中,允许使用任意数量的 #inc1ude命令行 ( D)虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接 9 有以下程序 #include stdio h #include
5、stdio h intfun(intn) int*p; p=(int*)malloc(sizeof(int); *p=n; return*p; main( ) inta; a=fun(10); printf( dn a+fun(10); 程序的运行结果是 ( A) 10 ( B) 20 ( C) 0 ( D)出错 10 有以下程序 yoidfun(int*pl, int*p2, int*S) s=(int*)malloc(sizeof(int); *S=*pl+*(p2+); ) main( ) inta2=1,2, b2=10, 20, *s=a; fun(a,b, S); printf(
6、dha, *S); 程序运行后的输出结果是 ( A) 10 ( B) 11 ( C) 2 ( D) 1 11 有以下程序 yoidfun(double*p1, double*p2, double*S) S=(double*)calloc(1, sizeof(double); *S=*pl+*(p2+1); ) main( ) doublea2=1 1, 2 2, b2=10 0, 20 0, *s=a; fun(a, b, S); printf( 5 2fin, *s); ) 程序的输出结果是 ( A) 1 10 ( B) 11 10 ( C) 12 10 ( D) 21.1 12 设有以下函
7、数: yoidfun(intn, char*s) 则下面对函数指针的定义和赋值均正确的是 ( A) yoid*Pf0; pf=fun; ( B) yoid(*pf)(int, char*); pf=fun; ( C) yoid*pff); *pf=fun; ( D) yoid(*pf)(int, char); pf= fun; 13 以下叙述中正确的是 ( A)指针变量只能通过求地址运 算符 ( )来获得地址值 ( B)语句 p=NULL;与 p=0;是等价的语句 ( C) int*pl; int*p2; int*p3;都是合法的定义指针变量的语句 ( D)语句 p=NULL;执行后,指针 P
8、指向地址为 0的存储单元 14 设有某函数的说明为 int*func(inta10, intn);则下列叙述中,正确的是 ( A)说明中的 a10写成 a或 *a效果完全一样 ( B)形参 a对应的实参只能是数组名 ( C) func的函数体中不能对 a进行移动指针 (如 a+)的操作 ( D)只有指向 10个整数内存 单元的指针,才能作为实参传给 a 15 设有定义: intx=0, *p;紧接着的赋值语句正确的是 ( A) *p=NULL; ( B) p=NULL; ( C) p=x; ( D) *p=x; 16 设已有定义: floatx;则以下对指针变量 P进行定义且赋初值的语句中正确
9、的是 ( A) int*p=(float)x; ( B) float*p= x; ( C) floatp= x; ( D) float*p=1024; 17 下面选项中的程序段,没有编译错误的是 ( A) char*sp, s10; sp=Hello; ( B) char*sp, s10; S=Hello; ( C) charstrl10=computer, str210; str2=strl; ( D) charmark; mark=PROGRAM; 18 有以下程序 main( ) inta=l, b=3, c=5; int*pl= a, *p2= b, *p= c; *P: *p1*(*
10、p2); printf( dn, c); 执行后的输出结果是 ( A) 2 ( B) 3 ( C) 1 ( D) 4 19 若有定义语句: intyear=2009, *p= year;以下不能使变量 year中的值增至2010的语句是 ( A) (*p)+; ( B) +(*p); ( C) *p+; ( D) *p+=1; 20 以下叙述中正确的是 ( A)如果 P是指针变量,则 *p表示变量 p的地址值 ( B)如果 p是指针变量,则 p是不合法的表达式 ( C)在对指针进行加、减算 *运算时,数字 1表示 1个存储单元的长度 ( D)如果 P是指针变量,则 *p+l和 *(p+1)的效
11、果是一样的 21 设有定义: char*c:以下选项中能 够使 C正确指向一个字符串的是 ( A) charstr=string; c=str; ( B) scanf( s, c); ( C) c=getchar( ); ( D) *c=string; 22 有以下程序 #include stdio h main( ) intn, *p=NULL; *p= n; printf(Inputn: ); scanf( d, p); printf(outputn; ); printf( dn,p); 该程序试图 通过指针 P为变量 n读入数据并输出,但程序有多处错误,以下语句正确的是 ( A) int
12、n, *p=NULL; ( B) *p= n; ( C) scanf( d, p) ( D) printf( dn, p); 23 若有以下定义 intx10, *pt=x;则对 x数组元素的正确引用是 ( A) *(x+3) ( B) * x10 ( C) *(pt+10) ( D) pt+3 24 有以下程序 yoidfun(char*S) chara10; strcpy(a, STRING); S=a; main( ) char*p=PROGRAM; fun(P); printf( sn, p); ) 程序运行后的输出结果是 (此处 代表空格 ) ( A) STRNG ( B) PROG
13、RAM ( C) STRING ( D) STRING 25 有以下程序 #include stdio h intfun(char*S) char*p=s; while(*P!=0)p+; retum(p-s); main( ) printf( dkn, fun(goodbey!); ) 程序的输出结果是 ( A) 6 ( B) 8 ( C) 0 ( D) 7 26 有下列程序: yoidflint*q) finti=0; for(; i 5; i+)(*q)+; main( ) inta5=1, 2, 3, 4, 5, i; f(a); for(i=0; i 5; i+)printf( d,
14、 , ai); 程序运行后的输出结果是 ( A) 2, 2, 3, 4, 5, ( B) 6, 2, 3, 4, 5, ( C) 1, 2, 3, 4, 5, ( D) 2, 3, 4, 5, 6 27 以下函数按每行 8个输出数组中的数据: yoidfun(int*w, intn) inti; 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)cont
15、inue; 28 有以下程序 #include stdioh yoidflint*p,int*q); main( ) intm=1, n=2, *r= m; f(r, n); printf( d, d, m, n); yoidflint*p, int*q) P=p+l; *q=*q+l; ) 程序运行后的输出结果是 ( A) 2, 3 ( B) 1, 3 ( C) 1, 4 ( D) l, 2 29 有下列程序: yoidflintb) intI; for(i=2; i 6; i+)bi*=2; main( ) inta10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i;
16、fla); for(i=0; i 10, i+)printf( d, ”, ai); 程序运行后的输出结果是 ( A) 1,2, 3, 4, 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 30 若有以下程序 #include stdio h yoidsp(int*a) intb=2: a= b: *a=*a*2: printf( d, , *a); main( )intk=3
17、, *P= k; sp(p); printf( d, dn, k, *p); ) 则程序的输出结果是 ( A) 4, 3, 4 ( B) 4, 3, 3 ( C) 6,3, 6 ( D) 6,6, 6 31 若有以下程序 #include stdio h int*f(int*s, int*t) int*k; if(*S *t) k=s; s=t; t=k; ) returns; ) main( ) inti=3, 3=5, *p= i, *q= j, *r; r=f(p, q); printf( d, d, d, d, dn, i, j, *P, *q, *r); ) 则程序的输出结果是 (
18、A) 3,5, 5, 3, 5 ( B) 5, 3, 5, 3, 5 ( C) 5, 3, 3, 5, 5 ( D) 3, 5, 3, 5, 5 32 若有以下程序 #include stdio h intk=7, m=5; yoidflint*S) int*t= k: s= t; *s= m; printf( d, d, d, , k, *t, *s); main( ) inti=3, *p= i, *r= p; fir); printf( d, d, dn, i, *P, *r); 则程序的输出结果是 ( A) 7, 5, 7, 3, 3, 3, ( B) 7, 5, 7, 3, 5, 7
19、, ( C) 7, 5, 5, 3, 3, 3, ( D) 7,7, 5, 3, 3, 3 33 有以下程序 #include stdi0-h intfuna(inta, intb) retuma+b; intfunb(inta, intb)returna-b; intSSS(int(*t)0, intx, intY)return(*t)(x, y); main( ) intx; x=sss(funa, 9,3); x+=sss(funb, 8, 3); printf( dkn, x); 程序运行后的输出结果是 ( A) 17 ( B) 23 ( C) 24 ( D) 22 34 有以下程序
20、yoidfun(int*P, int*q)intt; t=*p; *P=*q; *q=t; *q=*p; ) main( ) inta=0, b=9; fun( a, b); printf( d dn, a,b); 程 序的输出结果是 ( A) 00 ( B) 99 ( C) 90 ( D) 9 35 有以下程序 yoidswap(char*x, char*y) chart; t=*x; *x=*y; *y t; ) main( ) char*sl=abc”, *s2=123“; swap(s1, s2); printf( s, sn”, s1, s2); 程序执行后的输出结果是 ( A) a
21、bc, 123 ( B) 123, abc ( C) 321, cba ( D) lbc, a23 36 有以下函数 intfun(char*s)char*t=s; while(*t+); retum(t s); )该函数的功能是 ( A)比较两个字符串的大小 ( B)计算 S所指字符串的长度 ( C)计算 S所指字符串占用内存字节的个数 ( D)将 S所指字符串复制到字符串 t中 37 有以下程序 #include stdio h yoidfun(char*p) +p; printf( sha, *p); main( ) char*a=(Morning,Aftemoon,Eyening,Ni
22、ght); fun(a); 程序的运行结果是 ( A) ffemoon ( B) Morning ( C) oming ( D) Afternoon 38 有以下程序 #include stdio h voidfun(char*a, char ) 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 39 有以下程序 #include stdio h #include string h
23、voidfun(charS10, intn) chart; inti, j; for(i=0; i n-1; i+) for(j=i+1 j n0+) if(si0 sj0)t=si0; si0 sj0; sD0 t; main( ) charss510=bcc,bbcc, xy”, aaaacc,aabcc); fun(ss, 5); printf(“ s, s11”, ss0, ss4); 程序的运行结果是 ( A) aaaacc, xy ( B) bcc, aabcc ( C) xy, aaaacc ( D) aabcc, bcc 40 有以下程序 #include stdio h #i
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 编译 预处理 指针 模拟 答案 解析 DOC
