请读程序: main() {inti,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*(i1)]; for(i=0;i<3;i)k=p[i]*2; printf(“%d、n”,k); } 则上面程序的输出结果是()A、20B、21C、22D、23

题目

请读程序: main() {inti,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*(i1)]; for(i=0;i<3;i)k=p[i]*2; printf(“%d、n”,k); } 则上面程序的输出结果是()

  • A、20
  • B、21
  • C、22
  • D、23

相似考题
参考答案和解析
正确答案:B
更多“请读程序: main() {inti,k,a[10],p[3]”相关问题
  • 第1题:

    有以下程序:include main ( ){ inti=0.s=0;for(;;) if( i = = 3 ‖ i = = 5 ) continu

    有以下程序: #include <stdio. h> main ( ) { inti=0.s=0; for(;;) if( i = = 3 ‖ i = = 5 ) continue; if (i ==6) break; i++; s+ =i; } printf(" % d \n" ,s);程序运行后的输出结果是( )。

    A.10

    B.13

    C.21

    D.程序进入列循环


    正确答案:D
    解析:程序第1次执行for循环时,i=0,两条if语句中的表达式都不成立,执行i++;s+=i;此时i为1,s为1第2次循环,两条if语句中的表达式也不成立,执行i++,s+=i,此时i为2,s为3;……;当i=3时,执行continue,结束本轮循环,不执行i++;继续执行下一轮循环,这样一来i值始终为3,继续continue,无终止条件,进入死循环。

  • 第2题:

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

  • 第3题:

    请读程序: include void fun(int * s) { static int j=0; do s[j]+=s[j+1]

    请读程序: # include<stdio.h> void fun(int * s) { static int j=0; do s[j]+=s[j+1] while( + + j<2); } main( ) { int k,a[10]={l,2,3,4,5}; for(k=l;k<3;k+ +)fun(a); for(k=0;k<5;k++)prinf("%d",a[k]); } 上面程序的输出结果是 ( )

    A.34756

    B.23445

    C.35745

    D.12345


    正确答案:C

  • 第4题:

    请读程序: includef(char * s){cahr * p=s;while(* p!='\0')p++;return(p-s);}main(){

    请读程序: # include<stdio.h> f(char * s) {cahr * p=s; while(* p!='\0')p++; return(p-s); } main() {printf("%d\n”,f("ABCDEF"));} 上面程序的输出结果是 ( )

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第5题:

    请读程序: includde include void fun(char * s) {char a[10]; str

    请读程序: # includde<stdio.h> # include<string.> void fun(char * s) {char a[10]; strcpy(a,"STRING"); s=a; } main() { char*p; fun(p); print{("%s\n",p); } 上面程序的输出结果(表示空格) ( )

    A.STRING

    B.STRING

    C.STRING

    D.不确定的值


    正确答案:D

  • 第6题:

    下面程序的功能是输出数组s中最大元素的下标,请填空。main(){ int k, p,s[]={1, -9, 7, 2, -10, 3}; for(p =0, k =p; p< 6; p++) if(s[p]>s[k]) ; printf("%d\n", k);}


    正确答案:k=p
    在本题中,题目给出了程序段的功能是输出数组s中最大元素的下标。要输出最大元素的下标,肯定需要先找出最大的元素。
    在程序中,首先定义两个整型变量k和p,然后定义了一个一维数组s并初始化。接着执行for循环,循环变量的初值为0,且循环结束的条件为循环变量小于6,即数组s元素的个数,每循环一次,循环变量自加1,循环体中,首先是条件判断语句if(s[p]>s[k]),根据上面对题目的分析可知,要找出最大元素的下标,需先找出最大元素,而条件语句刚好是对两个元素进行比较,两个元素的下标分别为p和k,变量p是循环变量,用来取数组中的各个元素。从程序最后的输出语句可以看出,变量k中保存的是最大元素的下标,那么s[k]中保存的肯定就是最大的元素。如果条件结果为真,说明取到的当前数组元素值大于当前最大值,那么需要使s[k]表示s[p]值,对比这两种差别可以知道,空缺处需要填写的内容是k=p。

  • 第7题:

    请读程序: includeint a[]={2,4,6,8};main (){ int i;int * p=a;for(i=0;i<4;i + +)a[

    请读程序: # include<stdio.h> int a[]={2,4,6,8}; main ( ) { int i; int * p=a; for(i=0;i<4;i + +)a[i]=* p + +; printf("%d\n”,a[2]); } 上面程序的输出结果是 ( )

    A.6

    B.8

    C.4

    D.2


    正确答案:A

  • 第8题:

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

  • 第9题:

    如下程序的输出结果是includeusing namespace std:int main( ){int sum: for(inti=O;

    如下程序的输出结果是 #include<iostream> using namespace std: int main( ){ int sum: for(inti=O;i<6;i+=3){ sunl=i: for(intj=i;j<6;j++)suitL+=j; } cout<<sum<<endl: retuIn 0:

    A.3

    B.10

    C.12

    D.15


    正确答案:D
    解析:每次在外循环i中,sum都被程序赋初值,因此,只有最后一次循环的sum起作用。最后一次循环i=3,sum=3,内循环j=3,4,5,所以sum=3+3+4+5=15。

  • 第10题:

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

  • 第11题:

    单选题
    请读程序: main() {char*p; chars[80]; scanf("%s",s); p=s[0]; printf("%s",p); } 请判断上面程序()
    A

    错误:p=s[0];正确:p=*s;

    B

    错误:p=s[0];正确:p=s[];

    C

    错误:p=s[0];正确:p=s;

    D

    错误:p=s[0];正确:p=&s;


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

  • 第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题:

    以下程序的输出结果是______。 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; printf("%d\n",k); }

    A.20

    B.21

    C.22

    D.23


    正确答案:B
    解析:按照程序的流程走一遍,可以得到p[0]=0,p[1]=2,p[3]=6:执行三次k+=p[i]*2,相当于k=5+0*2+2*2+6*2=21。

  • 第14题:

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

  • 第15题:

    以下程序的输出结果是( )。 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; printf("%d\n",k、; }

    A.20

    B.21

    C.22

    D.23


    正确答案:B
    第一个循环的作用是把从0~9的数赋给a数组;第二个循环的作用是把a数组中的部分元素放到数组P中,即p[0]=a[0]=0,p[1]=a[2]=2,p[2]=a[6]=6;第三个循环的作用是把P中的各个元素的两倍之和放到k中,即k=5+0+4+12=21。

  • 第16题:

    请读程序: include main( ) { int n[2],i,j,k; { for(i=0,i<2;i + + )n[i]=0;

    请读程序: # include<srdio.h> main( ) { int n[2],i,j,k; { for(i=0,i<2;i + + )n[i]=0; k=2; for(i=0;i<k;i+ +) {for(j=0;j<k;j+ +)n[j]=n[i]+l; print{("%d\n",n[k]); } 上面程序片段输出结果是 ( )

    A.不确定的值

    B.3

    C.23

    D.1


    正确答案:A

  • 第17题:

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空: #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________; } main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%d\n",k,a[k]); }

    A.k=p

    B.*k=p-s

    C.k=p-s

    D.*k=p


    正确答案:D
    解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

  • 第18题:

    下面程序段的输出结果是( )。 public class TeSt{ public static voidmain(Stringargs[]){ int[]a=new int[11]; int[]p=new int[4]; intk=5; for(int i=1;i<=10;i++) a[i]=i; for(inti=1;i<=3;i++) p[i]=a[i*i]; for(inti=1;i<=3;i++) k=k+p[i]*2; System.out.println(k); } }

    A.37

    B.31

    C.33

    D.35


    正确答案:C
    解析: 本题是对for循环语句和数组的综合考查。题中共定义了两个数组:a[]和p[],共用了3次for循环:第1个for语句对数组a[i]赋值;第2个for语句和对数组p[i]赋值;第3个for语句计算k的值。3次循环分别得到:5,15和33。正确答案为选项C。

  • 第19题:

    请读程序:includemain(){int a,b;for(a=1,b=1;a<=100:a++){if(b>=20)break;if(b%3=1”{

    请读程序: #include<stdio.h> main() { int a,b; for(a=1,b=1;a<=100:a++){ if(b>=20)break; if(b%3=1”{b+=3;continue;} b=5; } printf("%d\n",A) ; } 上面程序的输出结果是_______。

    A.7

    B.8

    C.9

    D.10


    正确答案:B
    解析:break语句的作用是用刊曲循环体;Continue语句的作用是用于跳出本次循环。执行第一次循环时,(b%3=1)为真,b=4,继续下一次循环,如此反复,当b=22时结束循环,共循环8次,即a=8。

  • 第20题:

    下列程序执行后,k的值是 public class Testhhh { public static void main(String args[ ]) { inti=6,j=8,k=10,m=7; if(i>j| |m

    A.12

    B.11

    C.10

    D.9


    正确答案:C
    解析:if-else结构的格式如下:if(条件)语句1;else语句2;在条件为真时,执行语句1,然后跳过else和语句2,接着执行下面的语句;在条件为假时,跳过语句1,执行else后面的语句2,然后接着执行下面的语句。

  • 第21题:

    下列程序执行后,k的值是 public class Testddd{ public static void main(String args[ ]) { inti;10,j=18 K=30; switch(j-i) { case 8:k++; case 9:k+ =2; case 10:k+ =3; default:k/=j; } System.out.println(k); } }

    A.31

    B.32

    C.2

    D.33


    正确答案:C
    解析:仔细观察case后的语句,每个都没有用break关键字;在switch语句中,是通过break关键字来退出switch语句的。而在题目中,case8:k++;后没有break,则继续执行k+=2;这时还没有break语句,继续执行,这时的k的值是33;一直执行完k+=3;这时k的值是36;default语句是当表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句。在题目中,因为在执行完case10:k+=3;后还没有break,所以要执行k=k/j得k的值是2。break语句是用来退出循环,并从紧跟该循环语句的第―条语句处开始执行;而continue语句则是跳过循环体中下面尚未执行的语句,回到循环体的开始处继续下一轮的循环。

  • 第22题:

    请读程序: main() {char*p; chars[80]; scanf("%s",s); p=s[0]; printf("%s",p); } 请判断上面程序()

    • A、错误:p=s[0];正确:p=*s;
    • B、错误:p=s[0];正确:p=s[];
    • C、错误:p=s[0];正确:p=s;
    • D、错误:p=s[0];正确:p=&s;

    正确答案:C

  • 第23题:

    单选题
    请读程序: main() {inti,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*(i1)]; for(i=0;i<3;i)k=p[i]*2; printf(“%d、n”,k); } 则上面程序的输出结果是()
    A

    20

    B

    21

    C

    22

    D

    23


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