下列程序段在运行时,若通过键盘输入的数据为“1、3、47、9、23、15、11、32、19、2”,则输出结果是() int a[10],b[10],i,j,cnt=0;for(i=0;i<10;i++){ scanf("%d",&a[i]); for(j=2;j<=a[i]/2;j++)if(a[i]%j==0)break; if(j>a[i]/2)b[cnt++]=a[i];} for(i=cnt-1;i>=0;i--)printf("%d",b[i]);A、2、19、11、23、47、3B、2、3、1

题目

下列程序段在运行时,若通过键盘输入的数据为“1、3、47、9、23、15、11、32、19、2”,则输出结果是() int a[10],b[10],i,j,cnt=0;for(i=0;i<10;i++){ scanf("%d",&a[i]); for(j=2;j<=a[i]/2;j++)if(a[i]%j==0)break; if(j>a[i]/2)b[cnt++]=a[i];} for(i=cnt-1;i>=0;i--)printf("%d",b[i]);

  • A、2、19、11、23、47、3
  • B、2、3、11、19、23、47
  • C、1、2、3、11、19、23、47
  • D、2、19、11、23、47、3、1

相似考题
更多“下列程序段在运行时,若通过键盘输入的数据为“1、3、47、9、23、15、11、32、19、2”,则输出结果是() int a[10],b[10],i,j,cnt=0;for(i=0;i10;i++){ scanf("%d",a[i]); for(j=2;j=a[i]/2;j++)if(a[i]%j==0)break; if(ja[i]/2)b[cnt++]=a[i];} for(i=cnt-1;i=0;i--)printf("%d",b[i]);A、2、19、11、23、47、3B、2、3、11、19、”相关问题
  • 第1题:

    有如下程序: main() { int a[3][3]={{i,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); } 该程序的输出结果是______。

    A.18

    B.19

    C.20

    D.21


    正确答案:A
    解析:题中的外循环只执行了2次:第1次:a[1][0]=3,a[1][1]=4,所以s=7;第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。

  • 第2题:

    有以下程序: include usingnamespacestd; intmain() { intnum[2][3],*p; intt,i,j,k=

    有以下程序: #include <iostream> using namespace std; int main() { int num[2][3],*p; int t,i,j,k=10; p=num[0]; for(i=0;i<2;i++) { for(j=0;j<3;j++) { k++; *p=k; for(t=2;t<*p;t++) { if(!(*p%t)) { j--; *p--; break; } *p++; } } cout<<*(p-1)<<end1; return 0; } 程序运行后的输出结果是( )。

    A.19

    B.11

    C.29

    D.23


    正确答案:C
    解析:本题考核数组与指针的关系。程序首先初始化指针p,让其指向二维数组num的首元素,即num[0][0]。程序中,第1个for循环是为二维数组的每行元素赋值而设置的循环,第2个for循环是为二维数组的每列元素赋值而设定的,第3个for循环是为判断数组元素是否是素数而设置的。在第3个for循环中,如果*p的值能被小于它的数整除(即不是素数),则执行“j--;*p--;”,然后跳出第3个for循环。j--的含义是让其前面的赋值语句重新赋值,而*p--的含义是使指针指向前一个单元。语句“*p++;”将指针移到下一个单元,在下一次循环时,k加1,并k赋给*p,看*p是否为素数,这样一直到满足条件为止,即数组num[2][3]中的数都为素数。最后数组num中各元素的值分别为大于10的素数,即分别为:11,13;17,19,23,29。程序最后要求输出*p的值,由于此时指针已指向数组num的最后一个元素,即num[1][2]。所以输出的值是29。

  • 第3题:

    以下程序的输出结果是______。 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); }

    A.18

    B.19

    C.20

    D.21


    正确答案:A
    解析:本题首先定义了一个数组并附初值,然后通过两个for循环计算3、4、5、6的累加值,并用s保存。

  • 第4题:

    有以下程序 main() { int n[3],i,j; for(i=0;i<3;i++)n[i]=0; for(i=0;i<2,i++) for(j=0;j<2;j++)n[j]=n[i]+1; printf("%d\n",n[1]); } 程序运行后的输出结果是( )

    A.2

    B.1

    C.0

    D.3


    正确答案:D

  • 第5题:

    分析下列程序,其最终执行结果是______。 main() { int n[3],i,j,k; for(i=0;i<3;i++)n[i]=O; k=2; for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1; printf("%d\n",n[0]); }

    A.-2

    B.-1

    C.0

    D.-3


    正确答案:D
    解析:当i为0,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[0]-1, n[0]值变为-1:在j为1时,执行n[j]=n[i]-1;,即n[1]=n[0]-1,将-2赋给n[1]。当i为1时,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[1]-1,n[0]值变为-3;在j为1时,执行n[j]=n[i]-1;,即n[1]=n[1]-1,将-3赋给n[1];最后n[0]和n[1]的值均为-3。

  • 第6题:

    以下程序的输出结果是()。includemain(){int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for

    以下程序的输出结果是( )。 #include<stdio.h> main() {int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) s+=a[i][a[j][j]]; printf("%d\n",s); }

    A.3

    B.4

    C.1

    D.9


    正确答案:B
    解析:当外层循环为i时,内层循环i只能取j=i,所以s+=a[i][a[j][j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[01[0]]=s+a[0][0]=1,当i=1时,s=s+a[1][a[1][1]1=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。

  • 第7题:

    下面程序的输出结果是______。 main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int(*p)[4]=a,i,j,k=0; for(i=0;i<3;i++) for(j=0;j<2;j++) k=p[i][j]; printf("%d\n",k); }

    A.17

    B.18

    C.19

    D.23


    正确答案:C
    解析:p是指向长度为4的一维数组的指针变量,可看作是二维数组a的行指针,可以像使用数组名一样通过p带数组下标的形式来引用数组中元素,变量k最后是元素a[2][1]的值。

  • 第8题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句填写在对应栏内。

    [函数2.1说明]

    函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。

    [函数2.1]

    fun1 (int m, int k, int xx [] )

    {

    inti, j, s=0;

    for ( i=m+1; k>0; i++ )

    {for (j=2; j<i; j++ )

    if ( i %j=0 )

    (1)

    if( i==j )

    {

    (2)

    k--; }

    }

    }

    [函数2.2说明]

    函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。

    [函数2.2]

    void fun2 ( )

    {

    int i, j;

    int a[10][10];

    printf ("\n" );

    for (i=0; i<10; i++

    {a [i] [0]=1;

    (3))

    for (i=2; i<l0; i++ )

    for (j=1; j<i; j++)

    (4)

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

    {for (j=0; j<=i; j++ )

    (5)

    printf ( "\n" );

    }

    }


    正确答案:(1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d"a[i] [j]);
    (1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d",a[i] [j]);

  • 第9题:

    若有以下程序main(){ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s +=a[i][j]; } } printf("%d\n",s);}程序执行后的输出结果是


    正确答案:58
    在本题程序中,首先定义了一个4*4的二维数组a,并进行了初始化操作,然后定义了三个整型变量,i和j分别作为循环变量,而s作用一个记录和的变量被初始化为0。然后开始循环,第一层循环的循环变量i被初始化为0,循环结束条件是i<4,即循环执行四次,而第二层循环同样是4次,总循环此时为4´4=16次,如果逐次循环分析,工作量和花费时间太多,且一不小心容易出错,这种情况下,我们应该找出一个更简便的方法。
    从循环体中的if(a[i][j]<0) continue;我们可以知道,只要数组元素小于0,结束本次循环,即不参与求和运算,由if(a[i][j]==0) break;我们可以知道,只要数组元素等于0,结束本层循环,即同一行的数组元素都不用参加求和运算,从数组a的初始化情况我们可以看到,在第二行的第一个元素为0,即第二行都不参加求和运算,而第三行的第三个元素为0,即该行最后一个元素不参加求和运算。这样,参与求和运算的数组元素必须满足大于0,且其前面的该行元素无0出现。由此可以知道,变量s的最后结果应该为1+2+23+32=58。因此,程序最后的输出结果为58。

  • 第10题:

    以下程序的输出结果是 main() { int b[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d\n",t); }

    A.3

    B.4

    C.1

    D.9


    正确答案:B
    解析:本题中定义了一个二维数组b并初始化,定义了一个变量t并赋初值1。接着通过一个二重循环将若干个元素的值加到变量t中。循环的执行步骤是:外层循环变量i=0时,内层循环变量j=i,执行语句“t=t+b[i][b][j][j]]”,相当于t=t+b[0][b][0][0]],由于b[0][0]的值为0,得到t的值为1;依次类推,循环共执行了3次,最后输出t的值为4。所以,4个选项中B为所选。

  • 第11题:

    下面的程序段运行后,输出结果是 int i,j,x=0; static int a[8][8]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=2*i+j; for(i=0;i<8;i++) x+=a[i][j]; printf("%d",x);

    A.9

    B.不确定值

    C.0

    D.18


    正确答案:C
    解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:

    由于数组的下标是从。开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

  • 第12题:

    单选题
    下列程序段在运行时,若通过键盘输入的数据为“1、3、47、9、23、15、11、32、19、2”,则输出结果是() int a[10],b[10],i,j,cnt=0;for(i=0;ia[i]/2)b[cnt++]=a[i];} for(i=cnt-1;i>=0;i--)printf("%d",b[i]);
    A

    2、19、11、23、47、3

    B

    2、3、11、19、23、47

    C

    1、2、3、11、19、23、47

    D

    2、19、11、23、47、3、1


    正确答案: B
    解析: 暂无解析

  • 第13题:

    有以下程序 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

  • 第14题:

    下列程序的输出结果是 include void main( ) {int a[3],i,j,k=2; for(i=

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

    A.2

    B.3

    C.1

    D.0


    正确答案:A
    解析:本题里有三个for循环,但要分清楚,第一个是单独的给三个元素赋值,赋完值后三个a[0]=0,a[1]=1,a[2]=2;后面的两个for是嵌套循环,对数组元素的赋值,但由于k=2,初值已定for里的条件是小于k,所以不管怎么处理都影响不到a[2],故答案为2。

  • 第15题:

    下列程序的输出结果是______。main(){ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;i<=i;j++)s+=a[i][j]; printf("%d\n",s);}

    A.18

    B.19

    C.20

    D.21


    正确答案:A

  • 第16题:

    有以下程序main(){ int n[3],i,j; for(i=0;i<3;i++) n[i]=0; for(i=0;i<2;i++) for(j=0;j<2;j++) n[j]=n[i]+1; printf( "%d\n",n[1]);}程序运行后的输出结果是A.2 B.1C.0 D.3


    正确答案:D
    初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。

  • 第17题:

    以下程序的输出结果是 main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++)t=t+b[i][b[j][j]]; printf(“%d\n”,t); }

    A.3

    B.4

    C.1

    D.9


    正确答案:B
    解析:本题中定义了一个二维数组b并初始化,定义了一个变量t并赋初值1。接着通过一个二重循环将若干个元素的值加到变量t中。循环的执行步骤是:外层循环变量i=0时,内层循环变量j=i执行语句“t=t+b[i][b[j][j]]”,相当于t=t+b[0][b[0)[0]],由于b[0][0]的值为0,得到t的值为1;依次类推,循环共执行了3次,最后输出t的值为4。

  • 第18题:

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

    A.产生错误信息

    B.10

    C.12

    D.10 20 30 20 00 00 30


    正确答案:B
    解析:二维数组a,通过a[3][2]={0}将数组中的各个元素初始化为0,指针变量ptr,指向包含2个元素的一维数组。a[0][0]=1,a[1][0]=2,故本题的输出选B。

  • 第19题:

    有以下程序: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。

  • 第20题:

    有以下程序 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符合题意。

  • 第21题:

    以下程序的输出结果是______。 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); }

    A.18

    B.19

    C.20

    D.21


    正确答案:B
    解析:本题函数的功能是计算并输出一个二维数组对角线及对角线下面的元素之和。

  • 第22题:

    有如下程序: main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); } 该程序的输出结果是______。

    A.18

    B.19

    C.20

    D.21


    正确答案:A
    解析:题中的外循环只执行了2次:第1次:a[1][0]=3,a[1][1]=4,所以s=7;第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。

  • 第23题:

    有以下程序 main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++)t=t+b[i][b][j][j]]; printf("%d\n",t); } 程序运行后的输出结果是( )

    A.3

    B.4

    C.1

    D.9


    正确答案:B