下列程序段的输出结果是______。 static int a[3]={1,2,3}; int**ptr,*p; p=a;ptr=&p; (ptr[0]++)[1]+=3; printf("%d,%d,%d\n",**ptr,*p,a[0]);A.5,5,10B.1,5,5C.5,5,1D.输出结果不确定

题目

下列程序段的输出结果是______。 static int a[3]={1,2,3}; int**ptr,*p; p=a;ptr=&p; (ptr[0]++)[1]+=3; printf("%d,%d,%d\n",**ptr,*p,a[0]);

A.5,5,10

B.1,5,5

C.5,5,1

D.输出结果不确定


相似考题
更多“下列程序段的输出结果是______。 static int a[3]={1,2,3}; int**ptr,*p; p=a;ptr=p; (ptr[0]++)[1]+=3; printf("%d,%d,%d\n",**ptr,*p,a[0]);A.5,5,10B.1,5,5C.5,5,1D.输出结果不确定”相关问题
  • 第1题:

    有以下程序 main() { int a[3][2]={0},(*pb)[2],i,j; for(i=0;i<2;i++) { ptr=a+i; scanf("%d",ptr);ptr++; } for(i=0;i<3;i++) { for(j=0; j<2;j++) printf("%2d",a[i][j]); printf("\n"); } } 若运行时输入:1 2 3<回车>,则输出结果是______。

    A.产生错误信息

    B.1 0 2 0 0 0

    C.1 2 3 0 0 0

    D.1 0 2 0 3 0


    正确答案:D

  • 第2题:

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

  • 第3题:

    以下程序段的输出结果是( )。 char str[] = "BCDE",*ptr=str; cout<<*(p+4)<<end1;

    A.字符E的地址

    B.0

    C.69

    D.不确定


    正确答案:B
    解析:本题考核字符串指针。在程序段中,有语句:“charstr[]="BCDE",*ptr=str;”。由字符串赋值的规则可知:字符串数组str中的5个元素的值分别为:'B'、'C'、'D'、'E'和'\0'。而指针ptr指向str[0]。最后程序要求输出*(p+4),即数组元素str[4]的值,而str[4]中存放的是字符'\0'。所以最后输出的值为0。

  • 第4题:

    有以下程序 main() { int a[3][2]={0},(*ptr)[2],i,j; for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++;} for(i=0;i<3;i++) { for(j=0;j<2;j++)printf("%2d",a[i][j]); printf("\n"); } } 若运行时输入:1 2 3<回车>,则输出结果是

    A.产生错误信息

    B.1 0 2 0 0 0

    C.1 2 3 0 0 0

    D.1 0 2 0 3 0


    正确答案:B
    解析:二维数组指针第一个for循环中,第一次循环ptr指向a[0][0]的首地址,所以经过输入语句,a[0][0]=1;第二次循环ptr指向a[1][0]的首地址,所以经过输入语句,a[1][0]=2。此时,除了这两个元素,其他元素没有改变,等于初值0。

  • 第5题:

    有以下程序:include main( ){int a[3][2]={0} ,( *ptr)[2],i,j;for(i=0;i<2;i++) {ptr

    有以下程序: #include <stdio.h> main( ) { int a[3][2]={0} ,( *ptr)[2],i,j; for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++;} for(i =0;i<3;i ++ ) } for(j =0;j<2;j ++ ) prinff( "%2d" ,a[i] [j] ); prinff(" \n" ); }}若运行时输入:1 2 3 <回车>,则输出结果是( )。

    A.产生错误信息

    B.10 20 00

    C.12 30 00

    D.10 20 30


    正确答案:B
    解析:程序中a[3)[2]={0}将数组元素全部初始化为0,指针变量ptr指向包含2个元素的一维数组。在第一个for语句的循环体中ptr=a+i;语句用于将指针变量ptr指向第i行的数组元素,通过两次循环,分别给二维数组a的第。行的第1个元素和第1行的第1个元素赋了值1和2,即a[0][0]=1,a[1][0]=2。

  • 第6题:

    以下程序段的输出为( ) static char a[]="language",b[]="progratne"; char *ptr1,*ptr2; int k; ptr1=a;ptr2=b; for(k=0;k<7;k++) if(*(ptr1+k)==*(ptr2+k)) printf("%c",*(ptr1+k));

    A.gae

    B.ga

    C.language

    D.有语法错误


    正确答案:B

  • 第7题:

    有以下程序 main() { int a[3][2]={0},(*ptr)[2],i,i; for(i=0; i<2; i++) { ptr=a+i; scanf("%d",ptr); ptr+++; } for(i=0;i<3;i++) { foil(j=0;j<2;j++) printf("%2d",a[i][j]); printf("\n"); } 若运行时输入:1 2 3<回车>,则输出结果为

    A.产生错误信息

    B.1 0 2 0 0 0

    C.1 2 3 0 0 0

    D.1 0 2 0 3 0


    正确答案:D
    解析:本题主要考查的是scanf()函数的输入原理。scanf()函数执行时,先从键盘缓冲区中读取用户输入的数据,若缓冲区为空或输入数据少于所需数据,则暂停程序等待用户的输入,直到用户敲入回车,scanf()将继续到键盘缓冲区中读取输入,如此反复直到满足scanf()函数所需数据,程序才继续执行下面的语句,而scanf()没有取完的数据仍然会保存在键盘缓冲区内,到程序结束时还没取完就会被释放掉,不会影响其他的程序运行。另外,scanf()函数将取到的数据匹配给第2个及其后面的指针参数所指的内存地址中去,而不检查该参数的类型是否匹配。所以在本题中考生不要被指针ptr的定义所迷惑,它所做的只不过是临时保存一下a+i的值,然后送到scanf()函数中去。题目首先定义了一个二维数组a[3][2]并用{0}初始化之,因为当所赋初值少于所定义数组的元素个数时,将自动给后面的元素朴以初值0,所以数组a[3][2]中所有的元素都被初始化为0了。在主程序的第一个for循环体中有三条语句,该循环体会被执行两次,每次执行时i的值分别为0和1。第1条语句让ptr的值分别为a+0(即元素a[0])[0])的地址)和a+1(即元素a[1][0]的地址);第2条语句是一条输入语句,它每次接受一个十进制整数存入到ptr所指的内存地址中,题目要求输入的数据为“123<回车>”,所以两次scanf()函数的调用使a[0][0]和a[1][0]分别被赋为1和2。笫3条语句让ptr自增1在这里没有起到任何作用,因为每次进入循环体ptr都会被重新赋值。最后,程序用一个两重循环按行列输出二维数组a中的所有元素。所以,选项B符合题意。

  • 第8题:

    下列程序的输出结果是()。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。

  • 第9题:

    下列程序执行后的输出结果是()。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。

  • 第10题:

    设有以下定义: int a[3][3]={1,2,3,4,5,6,7,8,9}; int(*Ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是_______。

    A.*((*ptr+1)[2])

    B.*(*(p+5))

    C.(*ptr+1)+2

    D.*(*(a+1)+2)


    正确答案:D
    解析:*(p+5)所指向的数组元素是a[1][2],所以B不对;ptr所指向的是—个含有三个元素的一维数组,所以A和C是错误的。

  • 第11题:

    单选题
    有如下程序 #include  main()  {  int i, *ptr;  int array[5] = {5,3,1};  for (ptr=array, i=0; i<5; i++, ptr++)  {   if (*ptr == 0)    putchar('X');   else    putchar('A' + *ptr);  }  printf(""); } 程序运行后的输出结果是(  )。
    A

    FDBXX

    B

    FFFXX

    C

    FDBBB

    D

    ABCDE


    正确答案: A
    解析:
    对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值,即array={5,3,1,0,0}。程序执行过程为:执行for循环,将数组首地址赋给指针ptr,依次遍历每一个元素,如果数组元素为0则输出'X',如果不为0则按照字母表输出字符'A'后第array[i]个字符。程序运行后的输出结果为:FDBXX,答案选择A选项。

  • 第12题:

    单选题
    有如下程序: #include  main() {  int a=0,*ptr;   ptr=&a;  *ptr=3;  a=(*ptr)++;  printf(%d,%d,a,*ptr);  } 程序运行后的输出结果是(  )。
    A

    4,4

    B

    0,1

    C

    1,4

    D

    0,4


    正确答案: D
    解析:
    程序执行过程为:定义整型变量a=0与指针ptr,使指针指向变量a。对指针指向的变量进行赋值a=3,将指针所指向变量加1,并赋值给a=4,此时指针依然指向变量a,输出a与指针指向的变量值:4,4,答案选择A选项。

  • 第13题:

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

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

    A.8

    B.7

    C.12

    D.9


    正确答案:B
    解析:第1次执行for循环,p[1][0]=p[1][0]-1=3:第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

  • 第14题:

    下面程序的输出结果是______。

    main()

    { static char a[]="language",b[]="program";

    char *ptrl=a,*ptr2=b;

    int k

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

    if(*(ptrl+k)==*(ptr2+k))

    printf("%c",*(ptr1+k));}


    正确答案:

  • 第15题:

    下面程序的输出结果是( )。 include main(){static chara[]="zhao",b[]="juan"; char*pt

    下面程序的输出结果是( )。 include<stdio.h> main() {static chara[]="zhao",b[]="juan"; char*ptr1=a,*ptr2=b; int k; for(k=0;k<4;k++) if(*(ptr1+k)==*(ptr2+k)) printf("%c",*(ptr1+k));}


    正确答案:a
    a 解析:本程序先将指针ptr1和ptr2分别指向字符数组a和b,然后通过指针的移动比较a和b中是否有相同的字符。若有相同的字符则将其输出。

  • 第16题:

    设有如下定义: int arr[]={6,7,8,9,10); int*ptr: ptr=arr; *(ptr2)=2; printf("%d,%d\n",*ptr,*(ptr2)): 则下列程序段的输出结果为( )。

    A.8,10

    B.6,8

    C.7,9

    D.6,2


    正确答案:D
    程序中ptr指针指向数组art的首地址,*ptr=arr[0]=6,*(ptr2)=2,故选D。

  • 第17题:

    有如下程序: #inClude<iostream> using namespaCe std; Class Point{ publiC: statiC int number; publiC: Point( )t.number++;} ~Point( ){number--;} }; , int P0int::number=0; int main( ){ Point *ptr: Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’ } Point C; Cout<<Point:::number<<endl; delete[]ptr; return 0; } 执行这个程序的输出结果是( )。

    A.3

    B.4

    C.6

    D.7


    正确答案:C
    本题考查默认构造函数.题目中定义.个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。

  • 第18题:

    下列程序的输出结果是()。includeint fun(int x){int p; if(x==0‖x==1)return 3; elsep

    下列程序的输出结果是( )。 #include<stdio.h> int fun(int x) { int p; if(x==0‖x==1) return 3; else p=x-fun(x-2); return p; } void main() { printf("\n%d",fun(5)); }

    A.5

    B.3

    C.7

    D.1


    正确答案:A
    解析: 本题考查函数的递归调用。在函数递归调用时,fun(5):a=5-fun(3)->fun3:a=3-fun(1)->fun(1):a=3,反推回去fun(3):a=3-3=0->fun(5):a=5-0=5,最后的计算结果为5。

  • 第19题:

    下列程序的输出结果是( )。 include main() {int a[2][3]={{1,2,3},{4,5,6}},(*p)[3],i

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

    A.8

    B.7

    C.12

    D.9


    正确答案:B
    解析:第1次执行for循环,p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=P[1][1]-1=4;第3次执行for循环,p[1][2]=1,最后输出的是a[0][1)+a[1][1]+a[1][2]=2+4+1=7。

  • 第20题:

    下列程序的输出结果是()。 include main() {int a[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;

    下列程序的输出结果是( )。

    #include<stdio.h>

    main()

    { int a[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;

    p=a;

    for(i=0;i<3;i++)

    { if(i<2)

    p[1][i]=p[1][i]-1;

    else

    p[1][i]=1;

    }

    printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

    }

    A.8

    B.7

    C.12

    D.9


    正确答案:B
    解析:第1次执行for循环,p[1][0]=p[1][0]-1=3:第2次执行for循环,p[1][1]=p[1][1]-1=4:第3次执行 for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+ a[1][2]=2+4+1=7。

  • 第21题:

    下列程序的输出结果是 include usingnamespacestd; int main () {chara []="Hello,W

    下列程序的输出结果是 #include <iostream> using namespace std; int main () { char a [] = "Hello,World": char*ptr = a; while (*ptr) { if(*ptr>= 'a' &&*ptr <='z' cout<<char{*ptr+'A'-'a'); else cout<<*ptr; ptr++; } return 0; }

    A. HELLO. WORLD

    B. Hello, World

    C. hELLO, wORLD

    D. hello, world


    正确答案:A
    解析:本题考核while语句和if语句,while语句中if语句的作用是将小写字母变成大写字母输出、所以main函数的字符串通过while语句全部输出为大写字母。

  • 第22题:

    设有以下定义: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是()。

    • A、*((*ptr+1)[2])
    • B、*(*(p+5))
    • C、(*ptr+1)+2
    • D、*(*(a+1)+2)

    正确答案:D

  • 第23题:

    单选题
    有如下程序:#include main(){ int i,*ptr; int array[3]={8,2,4}; for(ptr=array,i=0;i  printf("%d,",*ptr++); printf("");}程序运行后的输出结果是(  )。
    A

    8,2,

    B

    8,8,

    C

    2,4,

    D

    4,8,


    正确答案: D
    解析:
    *的优先级低于++,即先运算ptr++再运算*ptr。程序执行过程为:定义指针ptr与数组array,执行for循环,使指针指向数组首地址,i=0,输出指针指向的元素array[0]=8,然后指针加1,指向数组下一个元素;i=1,输出array[1]=2,指针指向数组下一个元素;i=2退出for循环。程序依次输出8和2。答案选择A选项。