单选题有以下程序:#include #include void fun(int **s, int x[2][3]){ **s =*(x[1]+1);}void main(){ int a[2][3]={1,2,3,4,5,6},*p; p = (int *)malloc(sizeof(int)); fun(p,a); printf("%d",*p);}程序的运行结果是(  )。A 5B 2C 6D 3

题目
单选题
有以下程序:#include #include void fun(int **s, int x[2][3]){ **s =*(x[1]+1);}void main(){ int a[2][3]={1,2,3,4,5,6},*p; p = (int *)malloc(sizeof(int)); fun(&p,a); printf("%d",*p);}程序的运行结果是(  )。
A

5

B

2

C

6

D

3

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}

B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}

C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}

D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}


正确答案:D

第2题:

有以下程序: #include<stdio.h> #include<stdlio.h> void fun(int*pl,int*p2,int*s) { s=(int*)malloc(sizeof(int)); *s=*pl+*p2; free(s); } main( ) { int a=1,b=40,*q=&a; fun(&a,&b,q); printf("%d\n",*q); } 程序运行后的输出结果是( )。

A.42

B.0

C.1

D.41


正确答案:C
Fun函数功能是新开辟内存空间存放a和b的地址,q的地址并没有变化,所以应该还是指向地址a。

第3题:

有以下程序

#include <stdio.h>

#include <stdlib.h>

int fun(int n)

{ int *p;

p=(int*)malloc(sizeof(int));

*p=n; return *p;

}

main()

{ int a;

a = fun(10); printf("%d\n",a+fun(10));

}

程序的运行结果是

A)0

B)10

C)20

D) 出错


正确答案:C

第4题:

以下程序运行后,输出结果是______。 fun(int**s,int p[2][3]) {**s=p[1][1]; } main() { int a[2][3]={1,3,5,7,9,11},*p; p=(int *)malloc(sizeof(int)); fun(&p,a); printf("%d\n",*p); }

A.1

B.7

C.9

D.11


正确答案:C
解析:p是指向整型变量的指针,函数fun的第一个参数是指向指针变量的指针,调用时将p的地址传给了形参s,函数体**s=p[1][1]使得s的内容是p[1][1]的地址,即实参p里存放的是实参数组a[1][1]元素的地址,输出时取指针运算则输出元素a[1][1]=9。

第5题:

下列程序的运行结果是()。 include voidfun(int*s,int*p) {static int t=3; *p=s[t]; t

下列程序的运行结果是( )。

#include<stdio.h>

voidfun(int*s,int*p)

{ static int t=3;

*p=s[t];

t--;

}

void main()

{ int a[]={2,3,4,5},k;

int x;

for(k=0;k<4;k++)

{ fun(a,&x);

printf("%d,",x);

}

}

A.5,4,3,2

B.2,3,4,5,

C.2,2,2,2,

D.5,5,5,5,


正确答案:A
解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。

第6题:

有以下程序 #include<stdi0.h> void fun(int n,int*p) ( int f1,f2; if(n==1|| n==2)*p=1; else { fun(n-1,&f1);fun(n-2,&f2); *p=f1+f2; } } main { int s; fun(3,&s);printf("%d",s); } 程序的运行结果是( )。

A.2

B.3

C.4

D.5


正确答案:A
在函数fun中对参数n的值进行判断,如果其值等于1或2,则*p=1,否则,函数fun进行递归调用fun(n.1,&f1);fun(13.2,&f2);*p=n+f2;在主函数调用fun函数时传递给参数n的值为3,fun函数又递归用了两次自身fun(2,&n);fun(1,&f1);所以n和f2的值都为1,通过指针P的引用,变量S的值为2。

第7题:

下列程序的运行结果是()。includevoid fun(int*s,int*p){ static int t=3;*p=s[t];t--;

下列程序的运行结果是( )。#include<stdio.h>void fun(int*s,int*p){ static int t=3; *p=s[t]; t--;}void main(){ int a[]={2,3,4,5),k; int x; for(k=0;k<4;k++) { fun(a,&x); printf("%d,",x); }}

A.5,4,3,2

B.2,3,4,5,

C.2,2,2,2,

D.5,5,5,5,


正确答案:A
解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。

第8题:

下列程序的输出结果是()。 include VOid p(int *x) {printf("%d",++*x); } void main()

下列程序的输出结果是( )。

#include<stdio.h>

VOid p(int *x)

{ printf("%d",++*x);

}

void main()

{ int y=3;

p(&y);

}

A.3

B.4

C.2

D.5


正确答案:B
解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。

第9题:

有以下程序 include void fun(int n, int *p) { int f1,t2; if(n==1 |

有以下程序 #include <stdio.h> void fun(int n, int *p) { int f1,t2; if(n==1 ||n==2) *p=1; else { fun(n-1,&f1); fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n", s ); }

A.2

B.3

C.4

D.5


正确答案:A
解析:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本题中的fun()函数直接调用了自身,所以它是一个递归函数。fun()函数中,当形参n为1或2时,让形参p所指内容为1。从这里可以看出形参p的用途是输出一个整数,所以我们不妨记作fun(1)=1、 fun(2)=1。如果是其他情况,那么输出结果*p的内容为f(n)=f(n-1)+f(n-2)。由此可见, fun()函数的作用是求斐波纳契数列第n项的值(斐波纳契数列第1和2项的值为1,以后各项分别为前两项之和:1、1、2、3、5、8、13……)。主函数中通过fun()函数,求第3项值;所以输出结果为2,故应该选择A。

第10题:

有以下程序 include void fun(int*a,int*B) { int*c; c=a;a=b;b=c; } main() {int x=3

有以下程序 #include<stdio.h> void fun(int*a,int*B) { 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


正确答案:B
解析:本题主要考查的是函数的实参和形参之间的传递关系,C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值。所以x和y的地址并没有改变,即p和q也没有改变,因此,选项B是正确的。

更多相关问题