更多“有以下程序: main() {int a[10]={1,2, 3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; pri ”相关问题
  • 第1题:

    有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

    有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

  • 第2题:

    有以下程序: main() {int a=[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=&a[3], *q=p+2; printf("% d\n", *p+*q); } 程序运行后的输出结果是______。

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:p指向了a[3]的地址,且*p=a[3]=4,又有*q=p-2;则q指向了a[5]的地址,且*q=a[5]=6,最后输出为10。

  • 第3题:

    有以下程序: main() {int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf("%d\n",*p+*q); }

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:本题定义了一维数组a和两个指针变量。指针变量p的初值为第4个数组元素的地址,指针变量q的初值为,第6个数组元素的地址。*p+*q=4+6=10。

  • 第4题:

    有以下程序

    main()

    { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;

    printf("%d\n",*p+*q);}

    程序运行后的输出结果是


    正确答案:8
    8 解析:*p=&a[3],即*p=4,*q=p+ 2;即*q=6,所以*p+*q=10。

  • 第5题:

    有以下程序: main() { int a[10]={1,2,3,4,5,6,7,8,9,10),*p=&a[3],*q=p+2; printf("%d\n",*p+*q); } 程序运行后的输出结果是( )。

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:题目中首先定义了一个int型数组a并初始化了,然后定义了两个指针变量p和q,并分别初始化p为指向数组元素a[3]、q指向p后面的第2个元素即指向a[5]。所以最终输出的值为a[3]+a[5]的值10。应该选B。