niusouti.com

有以下程序: main() { char nn[4][3]={"12","34","56","78"),*pn[4]; int k,s=0; for(k=0;k<4;k++)pn[k)=nn[k]; for(k=1;k<4;k+=2) s=s*10+pn[k][1]-'0'; printf("%d\n",s); } 程序的输出结果是( )A.48B.26C.3478D.576

题目

有以下程序: main() { char nn[4][3]={"12","34","56","78"),*pn[4]; int k,s=0; for(k=0;k<4;k++)pn[k)=nn[k]; for(k=1;k<4;k+=2) s=s*10+pn[k][1]-'0'; printf("%d\n",s); } 程序的输出结果是( )

A.48

B.26

C.3478

D.576


相似考题
参考答案和解析
正确答案:A
更多“有以下程序:main(){ charnn[4][3]={"12","34","56","78"),*pn[4];intk,s=0;for(k=0;k<4;k++)pn[k ”相关问题
  • 第1题:

    以下程序的输出结果是( )。 main { char*s="12134211"; int v[4]=(0,0,0,0),k,i; for(k=0;s[k];k++) { switch(s[k]) { case1:i=0; case2:i=1; case3:i=2; case4:i=3;} } v[i]++: } for(k=0;k<4;k++)printf("%d",v[k]);

    A.4 2 1 1

    B.0 0 0 8

    C.4 6 7 8

    D.8 8 8 8


    正确答案:B
    本题考查switch,case语句,当k=0时,循环体成立,执行switch后表达式的值为1,执行case1,i的值为0,因为没有break语句,继续执行其后的语句,到最后一个语句时i的值为3,此时v[i]++,v[3]=1,接着执行k++后,k的值为1,当k=1时,循环成立。执行switch后的表达式的值为2,执行case2,i的值为1,因为没有break语句,继续执行其后的语句,到最后一小语句时,i的值为3,此时v[i]++,v[3]=2,接着执行k++后,k的值为2,依次下去,case4也会执行,最后i的值一定为3,到v[3]=8时循环结束,而v[0]~v[2]的值一直没有变化,故选择B选项。

  • 第2题:

    以下程序的输出结果是#include <stdio.h>main(){ int k=4,s=0; do{ if((k%3)==0) continue; s+=k;k++; }while(k>10); printf("s=%d\n",s);}


    正确答案:s=4
    在本题中,程序首先定义了两个整型变量k和s,其中k的初值为4,s为0。然后开始做do…while结构的循环。
    第一次循环时,变量k和s的值分别是4和0,条件判断语句的条件结果为假,执行s+=k,此时s的值变为4,而k的值变为5,此时k的值小于10,循环结束;最终输出变量s的结果为s=4。

  • 第3题:

    以下程序的输出结果是 () 。 main() { char *s="12134211" ; int v[4]={0 ,0,0,0} ,k,i ; for(k=0 ;s[k] ;k++) { switch(s[k]) { case '1' :i=0 ; case '2' : i=1 ; case '3' : i=2 ; case '4' : i=3 ; } v[i]++ ; } for(k=0 ;k<4;k++) printf("%d ",v[k]) ; }

    A.4 2 1 1

    B.0 0 0 8

    C.4 6 7 8

    D.8 8 8 8


    A

  • 第4题:

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

    main

    { char*s="12134211";

    int v[4]=(0,0,0,0),k,i;

    for(k=0;s[k];k++)

    { switch(s[k])

    { case'1':i=0;

    case'2':i=1;

    case'3':i=2;

    case'4':i=3;}

    }

    v[i]++:

    }

    for(k=0;k<4;k++)printf("%d",v[k]);

    A.4 2 1 1

    B.0 0 0 8

    C.4 6 7 8

    D.8 8 8 8


    正确答案:B
    本题考查switch,case语句,当k=0时,循环体成立,执行switch后表达式的值为'1',执行case'1',i的值为0,因为没有break语句,继续执行其后的语句,到最后一个语句时i的值为3,此时v[i]++,v[3]=1,接着执行k++后,k的值为1,当k=1时,循环成立。执行switch后的表达式的值为'2',执行case'2',i的值为1,因为没有break语句,继续执行其后的语句,到最后一小语句时,i的值为3,此时v[i]++,v[3]=2,接着执行k++后,k的值为2,依次下去,case'4'也会执行,最后i的值一定为3,到v[3]=8时循环结束,而v[0]~v[2]的值一直没有变化,故选择B选项。

  • 第5题:

    以下程序的输出结果是 void fun(int*s) { static int j=0; do s[j]+=s[j+1]; while(++j<2);} main() { int k,a[10]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)printf("%d",a[k]);}

    A.34756

    B.23345

    C.35745

    D.12345


    正确答案:C
    解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5}。故正确答案为选项C)。