参考答案和解析
正确答案:B
更多“如下程序的执行结果是()。#includemain(){staticinta[]={1,2,3,4,5,6};int*p;p=a;*(p+3)+=2;printf(“%d,%d\n”,*p,*(p+3));} ”相关问题
  • 第1题:

    下面程序的输出结果是()。includemain(){int a[]={1,2,3,4,5,6,7,8,7,10},*p;p=a;print

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

    A.0

    B.1

    C.10

    D.9


    正确答案:D
    解析:“*”号的优先级比“+”的优先级高,所以先执行“*P”:指针P指向的是数组的首地址,因此*p=1;再加8得9。

  • 第2题:

    有以下程序

    #include<stdio.h>

    void f(int*p);

    main( )

    {int a[5]={1,2,3,4,5},*r=a;

    f(r);printf(”%d\n”,*r);

    }

    void f(int *P)

    {p=p+3;printf(”%d,”,*p);}

    程序运行后的输出结果是( )。

    A.1,4

    B.4,4

    C.3,1

    D.4,1


    正确答案:D
    解析:本题考查参数的按值传递。调用f(r),函数创建一个整型指针p,然后将r的值传给p,即p也指向a,p=p+3,输出p所指变量的值,即数组右移3位,即a[0+3]的值4,然后,函数结束,指针p被销毁,r中的值不变还指向a[0],所以输出为4,1。

  • 第3题:

    下列程序段的运行结果是()。includevoid main(){char str[]="ABC",*p=str;printf("%d\n

    下列程序段的运行结果是( )。 #include<stdio.h> void main() { char str[]="ABC",*p=str; printf("%d\n",*(p+3)); }

    A.67

    B.0

    C.字符'C'的地址

    D.字符'C'


    正确答案:B
    解析: 先定义了一个指向字符型数组str的指针p,指针p旨向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\0',所以*(p+3)=0。

  • 第4题:

    下面程序的输出结果是______。includemain(){char*p[]={"BOOL","OPK","H","SP"}; int i

    下面程序的输出结果是______。#include<stdio.h>main(){ char*p[]={"BOOL","OPK","H","SP"}; int i; for(i=3;i>=0;i-,i-) printf("%c",*p[i]); printf("\n");}

    A.SO

    B.SP

    C.SPOPK

    D.SHOB


    正确答案:A
    解析:p[0]存放的是“BOOL\0”的首地址;p[1]存放的是“OPK\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“S”,接着两次i-,则输出的值为*p[1],即字符“0”,所以本题的输出为SO。

  • 第5题:

    面下程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A.67 B.0 C.字符’C’的地址 D.字符’C’


    正确答案:B
    本题主要考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志’\0’的地址,因而*(p+3)的值为0。

  • 第6题:

    如下程序的执行结果是 include void main( ) { static int a[ ]={ 1,7,3,9,5,11

    如下程序的执行结果是 #include<iostream.h> void main( ) { static int a[ ]={ 1,7,3,9,5,11 }; int * p=a; * (p+3)+=4; cout < < * p < <"," < < * (p+3);}

    A.1,13

    B.1,16

    C.3,13

    D.1,14


    正确答案:A
    解析:指针数组的定义、赋初值、数组元素的引用与赋值等操作和一般数组的处理方法基本相同。需要注意指针数组是指针类型的,对其元素所赋的值必须是地址值。其格式是“存储类型数据类型*指针数组名1[长度1]={初值1},功能是定义指向“数据类型”变量或数组的指针型数组,同时给指针数组元素赋初值。这些指针变量具有指定的“存储类型”。本题中指针*p指向数组a,表达式*(p+3)+=4的含义是*(P+3)=*(p+3)+4,而*(p+3)在数组中指向的值为9,最后输出的结果为9+4=13,注意:一个语句的结束要有分号。

  • 第7题:

    若有以下程序main(){ int p=5,a=5; if(p=1!=0) printf("%d\n",p); else printf("%d\n",p+2);}程序执行后的输出结果是


    正确答案:√
    在本题中,程序首先定义两个整型变量p和a,都被初始化为5,然后执行if语句,该语句的判断条件为p=1!=0,这也是求解这个题目的关键,由于运算符!=的优先级比运算符=高,因此,本判断条件表达式等价于p=(1!=0),很明显,1是不等于0的,返回的是一个真值结果1,因此,此时变量p的值为1,那么条件为真,if语句返回的结果也为真,因此,执行printf("%d\n",p);语句,由于此时变量p的值已经变为1,因此,程序运行后的输出结果为1。

  • 第8题:

    有以下程序:includemain() {int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++) p[i

    有以下程序: #include <stdio.h> main() { int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++) p[i]=i+1; printf("%d\n",a[1][2]); } 程序运行后的输出结果是( )。

    A.3

    B.6

    C.9

    D.2


    正确答案:B
    解析:本题考查指向数组元素的指针变量。p=&a[0][0]是把该数组的第一个元素a[0][0]的地址赋给指针变量p,a[1][2]是数组中的第6个元素,根据for循环中的赋值可知,输出结果是6。

  • 第9题:

    有以下程序: main() {int a=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",C); } 执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    解析:*p1=1,*p2=3,*p=3,指针p指向变量c,故正确选项为C。

  • 第10题:

    若有如下程序: sub(int * t,int n) {int *p1, *p2; for(p1=t,p2=t;p1-t<n;p1++) if(*p1<*p2) p2=p1; return(*p2);} main() {int a[9]={9,36,19,39,26,5,6,33,15}; printf("%d\n",sub(a,9));} 则程序运行后的输出结果是( )

    A.5

    B.9

    C.15

    D.39


    正确答案:A

  • 第11题:

    单选题
    有以下程序:#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


    正确答案: D
    解析:
    malloc()函数的返回值是新分配的存储区的首地址,将该地址赋值给p指针,然后取p指针的地址,调用fun函数。fun函数中对指向指针的指针s指向的内存单元赋值,其中x[1]表示二维数组x的第二行的行地址,x[1]+1表示二维数组x的第二行第二列的地址,所以fun函数的功能是将二维数组x的第二行第二列的值,即x[1][1]赋值给**s,*s为p,所以**s代表*p,*p即为a[1][1],答案选择A选项。

  • 第12题:

    单选题
    有以下程序:#include void f(int *p);main(){ int a[5]={1,2,3,4,5},*r=a; f(r); printf("%d",*r);}void f(int *p){ p=p+3; printf("%d,",*p);}程序运行后的输出结果是(  )。
    A

    1,4

    B

    4,4

    C

    3,1

    D

    4,1


    正确答案: A
    解析:
    在调用f函数时,形参p通过传递参数指向了数组a的起始地址,执行语句“p=p+3;”后指向了a[3]的地址,所以输出4;主函数中,指针r仍指向数组a的首地址,所以输出1。答案选择D选项。

  • 第13题:

    若有以下程序

    main()

    { int p,a=5;

    if(p=a!=0)

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

    else

    pfintf("%d\n",p+2);

    }

    执行后输出结果是【 】。


    正确答案:√
    1 解析:首先计算if语句后面的表达式,根据运算符的优先级可知,先算“a!=o”,该值为1,再把1赋值给p,结果为1(真),执行其后的printf语句,输出的值为1。

  • 第14题:

    如下程序的输出结果是includemain(){chsr ch[2][5]={"6937","8254"},*p[2];int i,j,s=

    如下程序的输出结果是 #include<stdio.h> main() { chsr ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'0' printf("%d\n",s);}

    A.69825

    B.63825

    C.6385

    D.693825


    正确答案:C

  • 第15题:

    下列程序段的运行结果是()。 include void main() {char str[]="ABC",*p=str; printf("

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

    #include<stdio.h>

    void main()

    { char str[]="ABC",*p=str;

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

    }

    A.67

    B.0

    C.字符'C'的地址

    D.字符'C'


    正确答案:B
    解析:先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\0',所以*(p+3)=0。

  • 第16题:

    下面程序的输出结果是includemain(){int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%

    下面程序的输出结果是 #include<stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%d\n",*p+9);}

    A.0

    B.1

    C.10

    D.9


    正确答案:C
    解析: 此题考查了指针引用一维数组元素的方法。*p+9因为运算符“*”的优先级高于“+”,所以输出结果为p指向的元素1,然后加9,值为10。

  • 第17题:

    以下程序的输出结果是______。includemain(){int k=4,m=1,p; p=func(k,m); printf("%d,

    以下程序的输出结果是______。 #include<stdio.h> main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } func(a,b) int a,b; { static int m=0,i=2; i+=m+1;m=i+a+b;return(m); }

    A.8,17

    B.8,16

    C.8,20

    D.8,8


    正确答案:A

  • 第18题:

    下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A.67 B.0 C.字符’C’的地址 D.字符’C’


    正确答案:B
    在本题中,程序段首先定义了一个字符型数组str,并将其初始化为“ABC”,然后定义一个字符型的指针变量p,使其指向数组str的首地址。然后程序运行输出语句,从输出语句的输出格式可以看出,要求输出的是一个十进制数值,而输出列表中的*(p+3)表示输出的是数组str中的第四个元素,从数组的初始化我们可以看出,其中只有三个字符元素,而输出语句则要求输出第四个元素。
    这里需要我们了解字符串在字符数组中的存储方式,字符串在字符数组中存储后,系统会自动给其添加一个结束标志’\0’,即0值。因此,在用字符数组存储字符串时,字符数组申请的空间应该是字符串的字符个数加1。
    根据上面的分析,我们可以知道输出的第四个元素是’\0’字符,它对应的十进制值是0,因此本题的正确答案是B。

  • 第19题:

    下列程序段的运行结果是()。includevoid main(){ char str[]="ABC",*p=str;printf("%d\

    下列程序段的运行结果是( )。#include<stdio.h>void main(){ char str[]="ABC",*p=str; printf("%d\n",*(p+3));}

    A.67

    B.0

    C.字符'C'的地址

    D.字符'C'


    正确答案:B
    解析:先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\0',所以*(p+3)=0。

  • 第20题:

    下列程序的输出结果是()。includemain(){ int a=2,b=3,p;p=f(a,b);printf("%d",p);}int

    下列程序的输出结果是( )。 #include<stdio.h> main() { int a=2,b=3,p; p=f(a,b); printf("%d",p); } int f(a,b) { int c; if(a>b)c=1; else if(a==b)c=0; else c=-1; return(c) ; }

    A.-1

    B.0

    C.1

    D.2


    正确答案:A
    解析:本题考查if else语句。在int f(a,b)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句;第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。

  • 第21题:

    有以下程序:includemain(){int a[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf("y=%d\n",y

    有以下程序: #include<stdio.h> main() { int a[]={1,2,3,4},y,*p=&a[3]; --p;y=*p;printf("y=%d\n",y); } 程序的运行结果是( )。

    A.y=0

    B.y=1

    C.y=2

    D.y=3


    正确答案:D
    解析:本题主要考查一维数组及数组元素的地址。程序中定义数组a后知,a[0]=1,a[1]=2,a[2]=3,a[3]=4;在定义指针p时给其赋值为a[3]的地址。执行--p;语句后,p指向数组元素a[2];然后执行y=*p;语句,y的值为指针p所指向的变量的值为3。

  • 第22题:

    下列程序执行后的输出结果是()。includemain(){int a[3][3],*p,i; p=&a[0][0]; for

    下列程序执行后的输出结果是( )。 #include <stdio.h> main() { int a[3][3],*p,i; p=&a[0][0]; for(i=1;i<9;i++) p[i]=i+1; printf("%d\n",a[1][2]); }

    A.3

    B.6

    C.9

    D.随机数


    正确答案:B
    解析:本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。

  • 第23题:

    单选题
    有以下程序 #include  main() {  int a=1,b=3,c=5;  int *p1=&a,*p2=&b,*p=&c;  *p=*p1*(*p2);  printf(%d,c); } 执行后的输出结果是(  )。
    A

    4

    B

    2

    C

    1

    D

    3


    正确答案: D
    解析:
    本题中*p=*p1*(*p2)=a*b=3,也就是将指针p所指存储空间的值改为3,即c改为3。答案选择D选项。