首页 > 全部 > 二级C语言 > 国家二级C语言机试(编译预处理和指针)模拟试卷7

国家二级C语言机试(编译预处理和指针)模拟试卷7

本单篇文档共11615字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 2932人下载
价格: 1.00 原价:¥9.60
收藏

国家二级C语言机试(编译预处理和指针)模拟试卷7

选择题

1.有以下程序:

#include<stdio.h> void main()

void fun(char*c) {char s[81];

{while(*c) gets(s);fun(s);puts(s);

{if(*c>=’a’&&*c<=’z’)*c=*c-(’a’-’A’); }

c++:

}}

当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是(A)

A. HELLO BEIJING

B. Hello Beijing

C. hello Beijing

D. hELLO Beijing

解析:子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结果为选项A)。

2.有以下程序

#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(\\(B)

A. 2,3

B. 1,3

C. 1,4

D. 1,2

解析:本题考查函数的调用与指针。fun()函数的作用是:使指针p指向原来所指变量的下一个变量,使q指针指向的值加1。主函数中,指针r指向m,调用fun()函数的结果是,使r指向地址位于m后面的变量,使位丁n的地址上的变量(就是n)的值加1,因此,结果为1,3。

3.有以下程序

#include<stdio.h> main()

void fun(int*a,int*b) { int x=3,y=5,*p=&x,*q=&y;

{ int*c; fun(p,q);printf(\\(B)

A. 3,5,5,3

B. 3,5,3,5

C. 5,3,3,5

D. 5,3,5,3

解析:本题考查函数的调用与指针。p和q分别为指向x和y的指针,函数fun()的两个形参均为指针型,主要功能为交换两个指针的指向,当调用结束以后,该操作不能返回主函数。而主函数中,fun(p,q)、fun(&x,&y)的实参均为x与y的地址,因此,两者结果相同,并且两者指针指向的值不能变化。

4.有下列程序:

void f(int b[])

{int I;

for(i=2;i<6;i++)b[i]*=2;}

main()

{int a[10]={1,2,3,4,5,6,7,8,9,10},i;

f(a);

for(i=0;i<10,i++)printf(\\(C)

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,

解析:函数void f(int b[])的功能是对数组b[]中第2个到第5个元素的值逐个扩大2倍。所以在main()函数中,f(a)语句的作用是对数组a[10]中从a[2]到a[5]的各个数字乘以2,因而数组a[10]的元素就变成了{1,2,6,8,10,12,7,8,9,10}。

5.有以下程序

#include<stdio.h>

int fun(char s[]) main()

{int n==0; {char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’}; while(*s<=’9’&&*s>=’0’) printf(\\(B)

A. 61490

B. 61

C. 9

D. 5

解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。所以在主函数中调用fun(s)时,将把字符数组s中的数字组成一个数输出。因为当指针s指向数组的第3位时,即字符’*’,循环条件不成立,循环结束,返回n的值。所以输出n的值为61。

6.若有以下程序

#include<stdio.h>

void sp(int*a){ int b=2; main(){int k=3,*p=&k;

a=&b; sp(p);

*a=*a*2; printf(\\(B)

A. 4,3,4

B. 4,3,3

C. 6,3,6

D. 6,6,6

解析:主函数中定义指针变量p指向k,调用函数sp(p),将k的地址传递给形参指针a,函数转到sp运行,a指向b的地址,表达式*a=*a*2,相当于b=b*2,得到*a的数据4输出。函数调用结束,此时a和b的空间撤销,而对实参k和p的值并没有改变,仍旧是3。

7.若有以下程序

#include<stdio.h>

int k=7:

void f(int**s){int*t=&k;

*s=t:

printf(\\(D)

A. 3,7,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

解析:本题考查了二级指针,二级指针可以保存一级指针的地址。主函数中p指向i,r指向p,函数调用后s指向p,在f函数中t指向全局变量k=7,s指向t,同时s保存了实参p的地址,此时p也指向t,输出三个7,流程转到主函数,i的值为3,p以及r的值为7。

8.若有以下程序

#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)

A. 3,5,5,3,5

B. 5,3,5,3,5

C. 5,3,3,5,5

D. 3,5,3,5,5

解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小于第二个参数,那么交换指针的指向,这对于实参指向的数据时没有影响的。最后返回比较大的元素的地址。主函数中p指向i,q指向j,调用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。

9.若有以下程序

本文档预览:3600字符,共11615字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(编译预处理和指针)模拟试卷7

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号