下列程序的输出结果是()。ineludemain(){int a[5]={2,4,6,8,10},*p,**k; p=a;k=&p;下列程序的输出结果是( )。 #inelude <stdio.h> main() { int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",**k); }A.4B.22C.24D.46

题目
下列程序的输出结果是()。ineludemain(){int a[5]={2,4,6,8,10},*p,**k; p=a;k=&p;

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

A.4

B.22

C.24

D.46


相似考题
参考答案和解析
正确答案:C
解析:指针变量p指向数组a的首地址,并把指针变量p的地址赋给指向指针的指针变量k。第一个printf函数输出2,第二个printf函数输出4。
更多“下列程序的输出结果是()。#inelude<stdio.h>main(){int a[5]={2,4,6,8,10},*p,**k; p=a;k=&amp;p; ”相关问题
  • 第1题:

    下述程序的输出结果是()。includevoid main(){int a[5]={1,2,3,4,5};int *p=a,**q=&p;p

    下述程序的输出结果是( )。 #include<stdio.h> void main() {int a[5]={1,2,3,4,5}; int *p=a,**q=&p; printf("%d,",*(p++)); printf("%d",**q);}

    A.2,2

    B.1,1

    C.3,4

    D.1,2


    正确答案:D
    解析:题干中,*(p++)就是数组元素a[0],输出a[0],之后指针p的值加1,**q即是数组元素a[1]。

  • 第2题:

    以下程序运行后的输出结果是【】include main ( ) {char a[] ="123456789", *p;int i =0;

    以下程序运行后的输出结果是【 】

    include <stdio.h>

    main ( )

    { char a[] ="123456789", *p;

    int i =0;

    p=a;

    while( * p)

    { if(i%2 ==0) *p='*';

    p++;i++;

    }

    puts(a);

    }


    正确答案:*2*4*6*8*
    *2*4*6*8* 解析:程序中指针p指向数组a,while(*P)语句的循环条件是* p!='\0',在循环体中,当 i=0,2,4,6,8时,i%2=0,执行*p='*',即a[i]='*',继续执行p++;i++;使i为奇数;当i=1, 3,5,7时,i%2=1,继续执行p++;i++;使i为偶数。可见,程序在字符串"123456789",的下标为偶数的位置上赋值'*',代替原字符串中的1,3,5,7,9。所以,程序输出结果为*2*4*6*8*。

  • 第3题:

    有以下程序:include main() {int a[] = {2,4,6,8,10} ,y =0,x, * p;p =&a[1];for(

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

    A.10

    B.11

    C.14

    D.15


    正确答案:C
    解析:本程序通过语句p=&a[1];将指针变量p指向存储单元a[1],使得p[0]的值为4,通过for循环,使y的值丸P[1]与p[2]之和,即y=6+8,所以输出的y值为14。

  • 第4题:

    下列程序的输出的结果是()。includevoid main(){int i,k,a[10],p[3];k=5;for (i=0;i

    下列程序的输出的结果是( )。 #include<iostream.h> void main() { int i,k,a[10],p[3]; k=5; for (i=0;i<9;i++)a[i]=i; for(i=0;i<3;i++)p[i]=a[i*(i+1)]; for(i=0;i<3;i++)k+=p[i]*2; cout<<k; }

    A.20

    B.21

    C.22

    D.23


    正确答案:B
    解析:程序中首先在第一个for循环中将a每一个元素赋值为0,1,2……。然后在第二个循环中p的第i元素为a中的第i*(i+1),即0,2,6,第三个循环中每个p中的元素值乘以2,然后加上5,累加。答案为21。

  • 第5题:

    有下列程序main(){ int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",**k);}运行该程序,其输出结果是A.4 B.22C.24 D.46


    正确答案:C
    在本题中,程序首先定义了一个一维数组a,赋其初值,并定义一个同类型的指针变量p和一个指向指针的指针变量k,然后让指针变量p指向数组的首地址,接着将指针变量p的地址值赋给指向指针的指针变量k。
    在第一条输出语句中,首先我们需要弄清楚*(p++)的作用,它是先调用指针变量p的值,然后使其自加,输出效果等价于*p,因此,最后输出的结果是数组中的第一个元素。
    在第二条输出语句中,我们需要弄明白**k的作用,指向指针的指针变量类似于指针变量,如果用**k表示一个数值,可以确定这条输出语句的输出结果是一个数值,而非地址,从表达式k=&p可以看出,k的值是指针变量p的地址值,p的值改变后,k能实时得到改变,那么在第一条输出语句对p的改变,在第二条输出语句中得到了体现。因此,**k输出的是数组中的第二个元素,即4。
    综合上面的分析,可以知道程序最终的输出结果是24。

  • 第6题:

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

  • 第7题:

    下列程序的运行结果是()。 include main() {static char a[]="Languagef",b[]="program

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

    #include<stdio.h>

    main()

    { static char a[]="Languagef",b[]="programe";

    Char*p1,*p2;int k;

    p1=a;p2=b;

    for(k=0;k<=8;k++)

    if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));

    }

    A.gae

    B.ang

    C.program

    D.有语法错


    正确答案:A
    解析:本题考查指针的用法,if(*(p1+k)==*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

  • 第8题:

    下述程序的输出结果是()。includevoid main(){int a[20],*p[4];int i,k=0;for(i=0;i<20

    下述程序的输出结果是( )。 #include<stdio.h> void main() {int a[20],*p[4]; int i,k=0; for(i=0;i<20;i++) a[i]=i; for(i=0;i<4;i++) p[i]=&a[i*i+1]; for(i=0;i<4;i++) {k=k+*p[i];} printf("%d",k); }

    A.10

    B.18

    C.6

    D.数组元素引用不合法,输出结果不定


    正确答案:B
    解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。

  • 第9题:

    下面程序的运行结果是#include "stdio.h" void fun(int k,int *p) { int a,b; if(k==1|| k==2) *p=1; else { fun(k-1,&a); fun(k-2,&b); *p=a+b; } }main(){ int x; fun(6,&x); printf("%d\n",x);}


    正确答案:8
    本题主要考查函数的递归调用。在本题中,程序首先定义了一个无返回类型的fun函数,该函数带有一个整型变量的形参和一个指针型的变量形参。从函数体中我们可以看出,该递归函数的出口是形参k的值等于1或2,如果运行到函数出口,则指针变量形参p的值等1。
    在主函数中,首先定义了一个整型变量x,然后调用fun函数,传递的实参分别为6和变量x的地址,然后程序运行fun函数,在fun函数中,首先定义了两个整型变量a和b,然后判断形参变量k的值是否到达函数出口,这时,k的值为6,没有到达出口,然后程序分别递归执行fun(5,&a)和fun(4,&b)。从程序中可以看出,p的值为分别调用两个函数的p值的和。
    首先执行fun(5,&a)时,k=5,没有到达出口,又进行一次递归,分别执行fun(4,&a)和fun(3,&b),由于都没达到出口,分别执行fun(3,&a)和fun(2,&b),fun(2,&a)和fun(1,&b),由于fun(2,&a)和fun(1,&b)返回的p值都为1,那么fun(3,&a)返回p的值为2,fun(4,&a)返回的p值就等于fun(3,&a)和fun(2,&b)之和,为3,同理可以得出fun(5,&a)返回的p值为5,fun(6,&a)返回的p值为8。因此,最后题目要求输出的结果为8。

  • 第10题:

    下列程序的输出结果是( )。 int a[5]={2,4,6,8,10},*P,* *k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",* *k);

    A.4 4

    B.2 2

    C.2 4

    D.4 6


    正确答案:C

  • 第11题:

    问答题
    对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?

    正确答案: 输出结果是54321
    解析: 暂无解析

  • 第12题:

    单选题
    有以下程序:#include void fun(int *s,int t,int *k){ int p; for(p=0,*k=p;p  if(s[p]>s[*k])*k=p;}main(){ int a[10]={11,12,13,14,15,16,20,18,19,10},k; fun(a,10,&k); printf("%d,%d",k,a[k]);}程序运行后的输出结果是(  )。
    A

    6,20

    B

    10,9

    C

    7,20

    D

    10,10


    正确答案: B
    解析:
    调用函数fun,将数组的地址、数组长度、变量k的地址传入函数。for函数实现查找数组中最大值,将其下标值存入变量k标志的内存单元。输出k=6,a[6]=20。答案选择A选项。

  • 第13题:

    现有如下程序段

    #include "stdio.h"

    int fun(int k,int *m)

    {if(k%3)*m=k*k;

    else *m=k/3;}

    main()

    { int (*p)(int,int *),m;

    p=fun;

    (*p)(78, &m);

    printf( "%d\n",m);}

    则程序段的输出结果为

    A.24

    B.25

    C.26

    D.27


    正确答案:C

  • 第14题:

    下列程序的输出结果是()。includevoid p(int *x){printf("%d",++*x);}void main(){int

    下列程序的输出结果是( )。 #include<stdio.h> void p(int *x) { printf("%d",++*x); } void main() { int y=3; p(&y); }

    A.3

    B.4

    C.2

    D.5


    正确答案:B
    解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。

  • 第15题:

    下列程序的运行结果是()。includevoid fun(int*s,int*p){ static int t=3;*p=s[t];t--;

    下列程序的运行结果是( )。#include<stdio.h>void fun(int*s,int*p){ static int t=3; *p=s[t]; t--;}void main(){ int a[]={2,3,4,5),k; int x; for(k=0;k<4;k++) { fun(a,&x); printf("%d,",x); }}

    A.5,4,3,2

    B.2,3,4,5,

    C.2,2,2,2,

    D.5,5,5,5,


    正确答案:A
    解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。

  • 第16题:

    下列程序的输出结果是()。includeint f(int a,int b);main(){int i=2,p,j,k; j=i;k=++i

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

    A.-1

    B.1

    C.2

    D.编译出错,无法运行


    正确答案:A
    解析:函数调用相当于f(2,3),程序运算结果为-1。

  • 第17题:

    下列程序舶输出结果是【 】。include main() {int a[5]={2,4,6,8,10},*p;p=a;p++;printf("

    下列程序舶输出结果是【 】。

    include <stdio.h>

    main()

    {

    int a[5]={2,4,6,8,10},*p;

    p=a;p++;

    printf("%d",*p);

    }


    正确答案:4
    4 解析:题目中定义了一个数组和指针,接着将数组的首地址给了指针,即指针p指向数组a的第一个元素,通过p++,p指向了数组a的第二个元素,所以输出结果为4。

  • 第18题:

    下列程序的运行结果是()。inCludemain(){static char a[]="Languagef",b[]="programe";

    下列程序的运行结果是( )。 #inClude<stdio.h> main() { static char a[]="Languagef",b[]="programe"; Char*p1,*p2;int k; p1=a;p2=b; for(0;k<=8;k++) if(*p1+k)==*(p2+k))printf("%c",*(p1+k)); }

    A.gae

    B.ang

    C.program

    D.有语法错


    正确答案:A
    解析: 本题考查指针的用法,if(*(p1+k)==*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

  • 第19题:

    有以下程序includemain(){int*p,j; p=NULL p=fun(); for(j=0;j<4;j+){printf("%d",*p)

    有以下程序 #include<stdio.h> main() { int *p,j; p=NULL p=fun(); for(j=0;j<4;j+){printf("%d",*p);p++;} } int*fun() { int a[4],k; for(k=0;k<4;k++)a[k]=k; return(A) ; } 程序运行后的输出结果是( )

    A.程序有错不能运行

    B.输出4个NULL

    C.输出0 1 2 3

    D.输出1 1 1 1


    正确答案:A

  • 第20题:

    下列程序的运行结果是()。includemain(){static chara[]="Languagef",b[]="programe";

    下列程序的运行结果是( )。 #include<stdio.h> main() { static chara[]="Languagef",b[]="programe"; char *p1,*p2;int k; p1=a;p2=b; for(k=0;k<=8;k++) if(*(p1+k)==*(p2+k))printf("%c",*(p1+k)); }

    A.gae

    B.ang

    C.program

    D.有语法错


    正确答案:A
    解析:本题考查指针的用法,if(*(p1+k)=*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

  • 第21题:

    以下程序的输出的结果是()。includevoid main( ){int i,k,a[10],p[3];k=5;for(i=0;i

    以下程序的输出的结果是( )。 #include<iostream.h> void main( ) { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3 ;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; cout<<k; }

    A.20

    B.21

    C.22

    D.23


    正确答案:B

  • 第22题:

    对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k<5;k++,p++)     scanf(“%d”,p);    for(;k>0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?


    正确答案:输出结果是54321

  • 第23题:

    单选题
    有以下程序#include main (){ int a[5] = {2,4,6,8,10},*p,**k; p = a; k = &p; printf(%d,*(p++)); printf(%d,**k);}程序运行后的输出结果是(  )。
    A

    24

    B

    44

    C

    22

    D

    46


    正确答案: D
    解析:
    p是int类型的指针,指向数组a的首元素;k的int *类型的指针,指向p的地址,即k指针和p指针都指向元素2的位置。*(p++),先使用p的值,输出该地址对应的存储空间的值,即输出2,再执行p++,p指向a中第二个元素;k指针始终指向p的地址,那么*k的值就是p本身的值,即a[1]的地址,**k的值就是a[1],输出4。答案选择A选项。