计算机二级

有以下程序 #include<stdio.h> void fun(int p) {int d=2; p=d++;printf("%d".p);} main( ) {int a=1; fun(a):printf("%d\n",a);) 程序运行后的输出结果是( )。A.32B.12C.21D.22

题目

有以下程序 #include<stdio.h> void fun(int p) {int d=2; p=d++;printf("%d".p);} main( ) {int a=1; fun(a):printf("%d\n",a);) 程序运行后的输出结果是( )。

A.32

B.12

C.21

D.22

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

第1题:

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

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

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

C.main() {int*p; fun(&p); } int fun(int**p) {*p=(int*)malloc(2);}

D.main() {int*p; fun(p); } int fun(int*p) {p=(int*)malloc(sizeo(int));}


正确答案:C
解析:在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误。选项B中实现的也是让实参p,指向一个在函数fun()中定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数中分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的。所以,C选项为所选。

第2题:

以下程序的输出结果是______。 fun(int**p,int a[2][3]) {**p=a[1][2]; } 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.9

B.7

C.1

D.11


正确答案:D
解析:主函数中指针变量指向两字节的存储空间,这两个字节可以存放 int型数据,函数fun是将实参数组a中的元素a[1][2]的值11赋给指针变量p所指的存储空间,程序输出该空间的值。本题函数fun中形参p是二级指针变量,它指向实参指针变量p。

第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,使main函数中的指针变量p指向一个合法的整型单元的是

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

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

C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}

D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }


正确答案:C
解析:本题考核的知识点是指针变量作为函数的参数以及变量的作用域。在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误.选项B中实现的也是让实参p,指向一个在函数fun()定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的.所以,C选项为所选。

第5题:

有以下程序 include include int fun(int n) {int *

有以下程序 #include <stdio.h> #include <stdlib.h> int fun(int n) {int *p; p=(int*)malloc(sizeof(int)); *p=n; return *p; } { int a; a=fun(10); printf("%d\n",a+fun(10)); } 程序的运行结果是______。

A.0

B.10

C.20

D.出错


正确答案:C
解析:malloc(sizeof(int))的作用是开辟一个长度为sizeof(int)存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了—个整型的指针变量p。然后执行语句“*p=n”,使得*p的值为10,并通过返回此值,在主函数中输出a+10的值,即输出20。

第6题:

以下程序运行后,输出结果是______。 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。

第7题:

有以下程序#include <stdio.h>#include <stdlib.h>int fun(int t){ int *p; p=(int*)malloc(sizeof(int)); *p=t; return *p;}main(){ int a; a = fun(8); printf("%d\n", a+fun(10));}程序的运行结果是A.0 B.10 C.18 D.出错


正确答案:C
本题考查函数的调用。题目给出的程序可以分为两个部分,一个是函数fun,另一个是主函数main。fun函数的功能是输入一个整型变量t,设置一个指向该整型变量的指针p,并将该指针所指向的值返回给main函数。main函数中两次调用了fun函数,第一次变量t的值为8,第二次变量t的值为10,第一次返回值8,使得a=8,第二次返回值10,使得a+fun(10)=18。

第8题:

以下程序的输出结果是______。 fun(int *s,int *p) { static int t=3; *p=s[t]; t--; } main() { int str[]={1,2,3,4},i,m=0; for(i=0;i<4;i++) {fun(str,&m); printf("%d",m); } printf("\n"); }

A.0

B.444412

C.1234

D.4321


正确答案:D
解析:程序的功能是将字符数组str中的内容以反序输出。函数fun中t为静态变量,每一次调用函数fun时,t的值为上一次调用函数结束时的值。

第9题:

以下程序的输出结果是( )。 #finclude "stdlib.h" fun(int**p,int a[3][3]) { **p=a[2][2];} main() { int a[3][3]={2,4,6,8,10,12,14,16,18},*p; p=(int*)mallocsizeof(int)); fun(&p,a); printf("%d\n",*p); }

A.6

B.16

C.12

D.18


正确答案:D

第10题:

以下程序的输出结果是______。 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