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

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

1,2,4,

B

1,3,4,

C

1,1,3,

D

1,1,4,


相似考题
更多“有以下程序: #include  main() {  int i,*ptr;  int array[4]={1,1,3,”相关问题
  • 第1题:

    以下程序的输出结果是【】。 include using namespace std; int main() {int s,i;for(s=

    以下程序的输出结果是【 】。

    include <iostream>

    using namespace std;

    int main()

    {

    int s,i;

    for(s=0,i=1;i<3;i++)

    s+=i;

    cout<<s<<end1;

    return 0;

    }


    正确答案:3
    3 解析:此程序中,for循环用来统计符合条件的数的总和,在循环执行完后才输出s的值。s、i的初始值分别为0和1。首先判断条件“13”成立,执行“s+=i;”和“i++”后,i和s的值分别变为2和1。第2次循环时,s、i的初始值为2和1,判断条件“23”成立,进入循环体,执行“s+=i;”和“i++”后,i和s的值分别变为3和3。这是最后一次循环。

  • 第2题:

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


    正确答案:D
    解析:在C语言中,数组元素的下标是从0开始的。for循环语句中,指针变量p始终指向数组a的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

  • 第3题:

    下面程序执行的结果是【 】。 include using namespace std; void main(){ int sum=0; i

    下面程序执行的结果是【 】。

    include <iostream>

    using namespace std;

    void main(){

    int sum=0;

    int array[6]={1,2,3,4,5,6};

    int *p;

    p=&array[0];

    for(int i=0;i<6;i++){

    sum=sum+*p;

    p++;

    }

    cout<<sum;

    }


    正确答案:21
    21 解析:本题用数组地址来访问数组内容,通过数组指针来操作数组内容,依次取出数组内容进行加和,然后进行输出。

  • 第4题:

    有以下程序:include prt(int * m,int n)int i;for(i =0;i

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

    A.1,2,3,4,5,

    B.2,3,4,5,6,

    C.3,4,5,6,7,

    D.2,3,4,5,1


    正确答案:B
    解析:prt(a,5);用数组名a作函数实参,不是把a数组的值传递给形参m,而是将数组a的首地址传递给指针变量m,使指针变量m指向数组a的首地址,这样他们就占用同一段内存单元。当改变了指针变量所指向的存储单元中的内容,也就改变了数组a中的元素。函数pit的作用是将指针变量m所指向的存储单元中的各元素值加1,也就是数组a中各元素的值加l,所以输出结果为:2,3,4,5,6,

  • 第5题:

    有以下程序 include int fun(int (*s)[4],int n,int k) {int m,i;

    有以下程序 #include <stdio.h> int fun(int (*s)[4],int n,int k) {int m,i; m=s[0][kl; for(i=1;i<n;i++) if(s[i][k]>m) m=s[i][k]; return m; } main() { int a[4][4]={{1,2,3,4},{11,12,13,14}, {21,22,23,24}, {31,32,33,34}}; printf("%d\n",fun(a,4,0)); } 程序的运行结果是______。

    A.4

    B.34

    C.31

    D.32


    正确答案:C
    解析:在主函数中,定义并初始化了4行4列的二维数组a,并通过调用fun函数,将fun函数中指向一维数组的指针变量s指向了二维数组a的首地址,使得指针变量s与数组a共用同一存储单元。在fun函数中,通过for循环,求得了数组a第0列中最大的值,并赋给m返回主函数。由于数组a第0列的值分别为1、11、21、31,故其最大值是31。

  • 第6题:

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

  • 第7题:

    有以下程序,程序执行后,输出结果是【】include void fun(int*A) {a[0]=a[1];} main() {i

    有以下程序,程序执行后,输出结果是【 】

    include<stdio.h>

    void fun(int*A)

    { a[0]=a[1];}

    main()

    { int a[10]={10,9,8,7,6,5,4,3,2,1,},i;

    for(i=2;i>1=0;i-) fun(&a[i]);

    for(i=0;i<10;i++) printf("%d,a[i]);

    printf("\n");

    }


    正确答案:7777654321
    7777654321 解析:本题主要考查函数的调用,第—次调用把数组元素a[2]的地址赋给a,此时a[1]即是原数组的a[3]等于7,再执行赋值语句a[0]=a[1],则a[0]和a[1]中的值都是7,然后再把这个值返回给a[2]同样地第二次调用的时候函数返回值也是7,第三次调用返回值也是7,因此数组的前4个元素,即对a[0]、a[1]、a[2]和a[3]的值都为7,当执行第二个for循环时输出数组中所有元素的值7777654321。

  • 第8题:

    有以下程序:include using namespace std;void fun(int i,int j){ cout<<(i+j)<

    有以下程序: #include <iostream> using namespace std; void fun(int i,int j) { cout<<(i+j)<<end1; } void fun(int i) { cout<<i++<<end1; } int main() { int a=1; fun(A) ; return 0; } 该程序执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    解析:本题考核函数重载这个知识点。函数fun有两种实现:第1种实现中,有两个int型形参,第2个实现中,是1个int型形参。由于这两种实现方式中形参的个数不同,形成了函数的重载。在主函数中,由于传递给函数fun()的实参为1个整型变量a,所以调用函数fun()的第2中实现,输出1。

  • 第9题:

    若有以下程序 include int a[ ]={2,4,6,8}; main( ) { int i; int *p=a; for(i=0;i<4

    若有以下程序

    #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


    正确答案:D
    解析:在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量 p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

  • 第10题:

    有以下程序: #include #define N 4 void fun(int a[ ][N],int b[ ]) { int i; for(i=0;i main( ) { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2==0)continue;x++;} x++; } printf("x=%d\n",x); } 程序的运行结果是( )。

    A.x=4

    B.x=6

    C.x=8

    D.x=12


    答案:C 
    解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。 

  • 第11题:

    单选题
    有以下程序:#include int sum(int *array,int len){ if(len == 0)  return array[0]; else  return array[0]+sum(array+1,len-1);}main(){ int i=1,j=3; printf(%d,,i++); {  int i = 0;  i+=j*2;  printf(%d,%d,,i,j); } printf(%d,%d,i,j);}程序运行后的输出结果是(  )。
    A

    1,6,3,1,3

    B

    1,6,3,2,3

    C

    1,6,3,6,3

    D

    1,7,3,2,3


    正确答案: B
    解析:
    程序执行过程为:输出i=1,之后i自增,得i=2;然后执行复合语句,赋值i=0,执行语句i+=j*2;得i=6;输出i=6,j=3;花括号内的i的作用域仅限于该花括号内,在括号外的i为程序第四行定义的i,这两个i属于不同的变量。之后再输出i=2,j=3。答案选择B选项。

  • 第12题:

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

  • 第13题:

    有以下程序:include void sum(int *a){a[0]=a[1];}main(){int aa[10]={1,2,3,4,5,6,7,

    有以下程序: #include <stdio.h> void sum(int *a) { a[0]=a[1]; } main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=2;i>=0;i--) sum(&aa[i]); printf("%d\n",aa[0]); } 执行后的输出结果是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:A
    解析:该程序通过main函数循环凋用sum函数。当i=2时,将实参aa[2]的地址传递给形参,此时a[0]=a[1]=aa[3]=4,即aa[2]=4;当i=1时,将实参aa[1]的地址传递给形参,此时a[0]=a[1]=aa[2]=4,即aa[1]=4;当i=0时,将实参aa[0]的地址传递给形参,此时a[0]=a[1]=aa[1]=4,即aa[0]=4;当i=-1时,不满足条件i>=0,跳出循环,程序执行后数组aa中的值为4,4,4,4,5,6,7,8,9,10,所以aa[0]=4。

  • 第14题:

    有以下程序 include int a=1; int f(int c) { stati

    有以下程序 #include <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1; return (a++) + c; } main() { int i, k=0; for(i=0;i<2;i++) { int a=3; k += f(a); k +=a; printf("%d\n",k); }

    A.14

    B.15

    C.16

    D.17


    正确答案:A
    解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

  • 第15题:

    有以下程序:include define N 20fun(int a[] ,int n,int m){int i,j;for(i=m;i> :n;i

    有以下程序: #include <stdio.h> #define N 20 fun(int a[] ,int n,int m) { int i,j; for(i=m;i> :n;i--) a[i+1] =a[i]; } main( ) { int i,a[N.] = 11,2.3,4,5,6,7,8,9,10[; fun( a,2,9) for(i =0;i<5;i ++ ) printf("% d" ,a[i] );程序运行后的输出结果是( )。

    A.10234

    B.12344

    C.12334

    D.12234


    正确答案:C
    解析:本题函数fun的作用是将指定的数组元素(下标从n~m)向后移一位。调用函数fun(a,2,9)将a[2]到a[9]的各元素依次向后移一位,最后a数组中各元素的值分别为1,2,3,3,4,5,6,7,8,9,10,程序输出数组的前5个元素:12334。

  • 第16题:

    有以下程序:include void fun(iht * a,int i,int j){int t;if(i < j) {t=a[i];a[i] =

    有以下程序:#include <stdio, h>void fun(iht * a,int i,int j){ int t; if(i < j) { t=a[i];a[i] =a[j] ;a[j]=t; i++;j--; fun(a,i,j);main ( ) int x[ ]: {2,6,1,8} ,i; fun(x,0,3); for( i=0;i <4;i ++ ) printf( "%2d" ,x[i] ); printf(" \n");

    A.1268

    B.8621

    C.8162

    D.8612


    正确答案:C
    解析:语句fun(x,0、3);中将数组名x作为实参,即把数组x的首地址传送给形参(指针a),使数组x与形参指针s共占同一段内存单元,在调用函数期间,如果形参数组x的值发生了改变,实参指针a的值也就改变了。程序中fun函数是递归调用函数,其运行过程是:第1次调用fun时,a=x,i=0,j=3,ij成立,a[0]与a[3]交换,a数组中的数变为{8,6,1,2},执行i++;j--;继续调用fun,此时i,j分别为1,2,ij成立,a[1]与a[2]交换,a数组中的数变为{8,1,6,2},执行i++j--;继续调用fun,此时i,j分别为2,1,ij不成立,递归调用结束。当返回主函数时,x数组中的数据就为{8,1,6,2}。

  • 第17题:

    有以下程序: include include using namespace std; int main () {char ch[]

    有以下程序:

    include <fstream>

    include <string>

    using namespace std;

    int main ()

    {

    char ch[] = "The end";

    ofstream outstr( "d:\\put.txt", ios_base: :app);

    for (int i = 0; i < strlen( ch ); i++ )

    outstr.put(ch[i]);

    outstr.close();

    return 0;

    }

    程序实现的功能是【 】。


    正确答案:在文件put.txt的尾部追加写入一串字符
    在文件put.txt的尾部追加写入一串字符 解析:解本题的关键是要了解文件打开模式常量ios_base::app的含义。常量ios base::app表示为添加数据而打开文件(总是在文件尾部写),因此上述程序实现的功能就是在文件尾部写入数组ch中字符串。

  • 第18题:

    有以下程序: include using namespace std; int main() {int x;for(int i=1;i<=100;

    有以下程序: #include <iostream> using namespace std; int main() { int x; for(int i=1;i<=100;i++) { x=i; if (++x%2==0) if (++x%3==0) if (++x%7==0) cout<

    A.39,81

    B.42,84

    C.26,68

    D.28,70


    正确答案:D
    解析:程序最后输出的x值所满足的条件为:x本身能被7整除,(x-1)能被3整除,(x-2)能被2整除。在1~100之间满足条件的x值是28和70。

  • 第19题:

    有以下程序: include using namespace std; int main() {int i=1,sum=0;Loop:if(i<=20

    有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int i=1,sum=0;

    Loop:if(i<=20)

    {

    sum+=i;

    i++;

    goto Loop;

    }

    cout<<sum<<end1;

    return 0;

    }

    该程序运行后的输出结果是【 】。


    正确答案:210
    210 解析:本题是goto跳转语句的应用。程序中,如果满足条件“i=20”,则执行语句“sum+=i;i++;”然后,又跳转到Loop处。直到条件“i=20”不满足。由此可知,此程序的功能是统计1~20的总和,即210。

  • 第20题:

    分析下列程序,并写出运行结果【】。 include voidmain(){ int x[10]: int i=5,*ptr=x;

    分析下列程序,并写出运行结果【 】。

    include<iostream.h>

    void main(){

    int x[10]:

    int i=5,*ptr=x;

    *(ptr+i)=10;

    cout<<x[i]<<end1;


    正确答案:10
    10

  • 第21题:

    有以下程序: include int a =2;int f(int n){ static int a: 3;intt=0;if(n%2){ stat

    有以下程序: #include <stdio, h>int a =2;int f(int n){ static int a: 3; int t=0; if(n%2){ static int a=4;t+ =a++;} else { static int a=5;t+ :a++;} return t + a + +;main ( ){ int s=a,i; for(i=0;i<3;i++)s + =f(i); prinff("% d \n" ,s); }程序运行后的输出结果是( )。

    A.26

    B.28

    C.29

    D.24


    正确答案:C
    解析:在函数外面定义的变量a是全局变量,其作用范围从定义该变量的位置开始到本文件的结束;在f函数中的if子句(复合语句)和else子句中定义的变量a是局部变量,其作用范围只在其所在的复合语句内;在f函数中定义的第一个变量a是静态局部变量,其作用范围只限于函数f内部,无论被调用多少次都只初始化一次,并且保留上次函数调用结束时的值,该变量不对复合语句产生作用,所以,f函数的返回值是这个a变量和t值相加的结果。

  • 第22题:

    有以下程序:include int f(int a)return a% 2; }main( )int s[8] = {1,3,5,2,4,6} ,i

    有以下程序: #include <stdio. h> int f(int a) return a% 2; } main( ) int s[8] = {1,3,5,2,4,6} ,i,d =0; for (i=0;f(s[i]);i++) d+ =s[i]; prinff( "% d \n", d); 程序运行后的输出的结果是( ).

    A.9

    B.11

    C.19

    D.21


    正确答案:A
    解析:在主函数main中,f(s[i])为for语句的循环终止条件,当f函数返回非零值时,则继续执行循环,否则终止循环,输出d的值。程序的运行步骤为:当i=0时,f(s[i])返回值为1,执行d+=1,d=1;当i=1时,将s[1];3传给形参变量s,f函数返回a%2=1,执行d=d+s[1]=1+3=4;当i=2时,将s[2]=5传给形参变量a,f函数返回a%2=1,执行d=d+s[2]=4+5=9;当i=3时,将a[3]=2传给形参变量a,f函数返回a%2=0,终止循环,输出d的值9。

  • 第23题:

    单选题
    有如下程序:#include int sum(int *array,int len){ if(len == 0)  return array[0]; else  return array[0]+sum(array+1,len-1);}main(){ int array[5] = {1,2,3,4,5}; int res = sum(array,4); printf(%d,res);}程序运行后的输出结果是(  )。
    A

    15

    B

    10

    C

    8

    D

    1


    正确答案: C
    解析:
    程序执行过程为:调用函数sum(array,4),len=4;len>0递归调用sum(array+1,3),传入地址为array+1,即数组第二个元素地址;len=3>0,递归调用sum(array+1,2),传入地址为数组第三个元素地址;len=2>0,递归调用sum(array+1,1),传入地址为数组第四个元素地址;len=1>0递归调用sum(array+1,0),传入地址为数组第五个元素地址,此时len=0,返回5;返回上一层调用执行array[0]+sum(array+1,1),即4+5,返回9;再返回上一层调用执行array[0]+sum(array+1,2),即3+9,返回12;同理,最后返回15,并输出。本题中需要注意的是每一层调用时array[0]是不一样的,并不是指1。答案选择A选项。

  • 第24题:

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

    1,2,4,

    B

    1,3,4,

    C

    1,1,3,

    D

    1,1,4,


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