有以下程序: includemain(){ int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a+5, *q=NULL有以下程序: # include<stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a+5, *q=NULL; *q=* (p+5); printf("%d %d\n", *p, *q); } 程序运行后的输出结果是 ______。A.运行后报错B.6 6C.6 11D.5 10

题目
有以下程序: includemain(){ int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a+5, *q=NULL

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

A.运行后报错

B.6 6

C.6 11

D.5 10


相似考题
参考答案和解析
正确答案:A
解析:指针q没有指向确定的存储单元,故不能赋值。
更多“有以下程序:# include<stdio.h>main(){ int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a+5, *q=NULL ”相关问题
  • 第1题:

    有以下程序 include main() {int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=N

    有以下程序

    #include <stdio.h>

    main( )

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

    *q=*(p+5);

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

    }

    程序运行后的输出结果是

    A.运行后报错

    B.6 6

    C.6 11

    D.5 10


    正确答案:C
    解析:本题中第一行代码对指针P进行了初始化,其指向数组a的第6个元素,在其后的操作中p的值也没有改变过,所以最后输出*p=*  (p+0)  =a [5] =6,而第二行代码中对q指向的值进行赋值,等价于*q=a[10]=11,所以输出结果*q为11。

  • 第2题:

    有以下程序 include main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL

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

    A.运行后报错

    B.6 6

    C.6 11

    D.5 10


    正确答案:A

  • 第3题:

    有以下程序includemain(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=

    有以下程序 # include <stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=*(p+5); printf("%d %d \n",*p,*q); } 程序运行后的输出结果是

    A.运行后报错

    B.6 6

    C.6 11

    D.5 10


    正确答案:A
    解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

  • 第4题:

    有以下程序:includemain(){int.a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q

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

    A.运行后报错

    B.6 6

    C.6 11

    D.5 10


    正确答案:A
    解析:本题中首先定义了一个—维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

  • 第5题:

    以下程序的运行结果是()。includemain(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *

    以下程序的运行结果是( )。 #include <stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL; *q=8(p+5); printf("%d %d\n", *p,*q); }

    A.运行后报错

    B.6 6

    C.6 11

    D.5 5


    正确答案:A
    解析:本题的考查点是通过指针引用数组元素。程序中没有给q分配存储单元,只是给它赋了一个NULL,所以程序的运行结果是:611NULLpointerassignment,也就是运行后报错。