更多“有以下程序:int a=2;int f(int *a){return(*a)++;)main(){int s=0;{int a=5;s+=f(&a);}s+=f( ”相关问题
  • 第1题:

    有以下程序 int a=2; int f(int*a) {return(*a) ++;} main() { int s=0; { int a=5; s+=f(&a) ; } s+=f(&a) ; pfintf("%d\n",a) ; } 执行后输出结果是

    A.10

    B.9

    C.7

    D.8


    正确答案:C
    解析:若在函数中定义了与全局变量名字相同局部变量,则全局变量在该函数中将不起作用。本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,故全局变量在复合语句中将不起作用,然后调用函数f(&a) (该函数的作用是返回存储变量a的空间中的值,并让该值加1,分析程序可知返回值为5,并让a值加 1变为6),并将返回值加到s中。此时s的值为5,然后执行该复合语句外的其他语句,同样调用函数f(&a) ,但传递的参数是全局变量a,故其返回值为2,加到s中后s的值变为 7,故最后输出的s的值为7。

  • 第2题:

    以下程序的输出结果是 int a[3][3]={1,2,3,4,5,6,7,8,9,},*p; int main(void) { p=(int*)malloc(sizeof(int)); f(p,a); printf("%d n",*p); return 0; } f(int *s, int p[][3]) { *s=p[1][1]; }

    A.1

    B.4

    C.7

    D.5


    B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。

  • 第3题:

    阅读以下程序,填写运行结果________________. def f1(m): s=0 for i in str(m): s+=int(i) return s def f2(n): s=0 while n>0: s=s+1 n=n//10 return s print(f1(123)//f2(123))


    D

  • 第4题:

    有以下程序 int a=2; int f(int *a) {return (*a)++; } main ( ) int s=0; { int a=5; s+=f (&a); } s+=f (&a); printf ( "%d\n",s ); 执行后输出结果是

    A.10

    B.9

    C.7

    D.8


    正确答案:C
    解析:本题考核的知识点是局部变量和全局变量的区别。若在函数中定义与全局变量名字相同局部变量,则全局变量在该函数中将不起作用。本题中定义了一个全局变量a和局部变量a在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,故全局变量在复合语句中将不起作用,然后调用函数f(&a)(该函数的作用是返回存储变量a的空间中的值,并让该值加1,分析程序可知返回值为5,并让a值加1变为6),并将返回值加到s中.此时s的值为5,然后执行该复合语句外的其他语句,同样调用函数f(&a),但传递的参数是全局变量a,故其返回值为2,加到。中后s的值变为7,故最后输出的s的值为7,所以,4个选项中选项C符合题意。

  • 第5题:

    以下哪个函数是不正确的(与能否被编译无关)?

    A.int* f(int *p) { int i; return &i; }

    B.int* f(int *p) { return p; }

    C.int* f(int *p) { return (int*)malloc(sizeof(int)); }

    D.int* f(int *p) { return NULL; }


    int* f(int *p) { int i; return &i; }