itgle.com
更多“29、写出下面程序执行后的运行结果。 #include <stdio.h> int main() { int k=1,n=263 ; do { k*=n%10 ; n/=10 ; } while (n) ; printf("%d",k); return 0; }”相关问题
  • 第1题:

    有以下程序 void change(int k[]){k[0]=k[5];} main() { int x[10]={1,2,3,4,5,6,7,8,9,10},n=0; while(n<=4) { change(&x[n]); n++;} for(n=0;n<5;n++) printf("%d",x[n]); printf("\n"); } 程序运行后输出的结果是______。

    A.678910

    B.13579

    C.12345

    D.62345


    正确答案:A
    解析:本题考点为数组名作函数参数,当n=O时,把x[0]的地址传绐被调函数change,即将形参k与实参x指向同一个存储单元x[0],执行被调函数后,k[0]=6,即x[0]=6:当n=1时,形参k指向x数组的第1个数组元素所在单元,即 k[0]与x[1]共用同一存储单元,执行被调函数后,k[0]=7,即x[1]=7,依次类推得出x[0]到x[4]的值分别为6、7、8、 9、10。

  • 第2题:

    该程序运行的结果是( )。

    #include

    #include

    #define M 100

    void fun(int m, int *a, int *n)

    { int i,j=0;

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

    if(i%7==0||i==0)

    a[j++]=i;

    *n=j;}

    main()

    { int aa[M],n,k;

    clrscr();

    fun(10,aa,&n);

    for(k=0;k

    if((k+1) ==0)printf("\n");

    else printf("M",aa[k]);

    printf("\n");}


    正确答案:
    7

  • 第3题:

    以下程序的输出结果是【 】。include defineN 5 int fun(int *s,int a,int n) {int j; *s=

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

    include <stdio.h>

    define N 5

    int fun(int *s,int a,int n)

    { int j;

    *s=a j=n;

    while(a!=s[j]) j-;

    return j;

    main()

    { int s[N+1]; int k:

    for(k=1 ;k<=N;k++) s[k]=k+1:

    print f("%d\n",fun(s,4,N));

    }


    正确答案:3
    3 解析:本题主函数中定义了一个一维数组s,并通过for循环给s[1]到s[5]的元素分别赋值为2、3、4、5、6。然后调用 fun函数,使指针变量s与数组s共用同一存储单元。在函数fun中,a=4,n=5,所以while的条件表达式首先判断的是 4!=s[5]是否成立,由于s[5]=6,所以成立,执行j-;接着判断4!=s[4]是否成立,由于s[4]=5,所以成立,执行j-;然后判断4!=s[3]是否成立,由于s[3]=4,所以条件表达式不成立,返回j的值3。

  • 第4题:

    执行以下程序的输出结果是( )。 includedefine M 5define N M+M main(){int k; k=N*N*5;

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

    include<stdio.h>

    define M 5

    define N M+M

    main()

    { int k;

    k=N*N*5;printf(”%d\n" ,k);

    }


    正确答案:55
    55 解析:本题考查的重点是对宏定义的理解。#define指令定义一个标识符和一个串,编译程序在对C源程序处理时.发现该标识符都用该串替换,因此,在语句k=N*N*5将替换成k=M+M*M+M*5后,M被替换成5,从而k=5+5*5+5*5=55。

  • 第5题:

    有以下程序includemain(){int k=5,n=0;while(k>0){switch(k){defhult:break;case 1:n+

    有以下程序 #include<stdio.h> main() {int k=5,n=0; while(k>0) {switch(k) {defhult:break; case 1:n+=k: case 2: case 3:n+=k; } k--; } printf("%d\n",n); } 程序运行后的输出结果是( )

    A.0

    B.4

    C.6

    D.7


    正确答案:D
    解析:因为没有break语句,当k=2的时候,会顺序执行两条语句,k=1的时候,会顺序执行3条语句。

  • 第6题:

    有以下程序 include void fun(int a[],int n) { int i,t; for(i=0;

    有以下程序 #include <stdio.h> void fun(int a[],int n) { int i,t; for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;} } main() {int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++) printf("%d",k[i]); printf("\n"); } 程序的运行结果是______。

    A.345678

    B.876543

    C.1098765

    D.321678


    正确答案:D
    解析:在主函数中,定义了一维数组k,并通过调用fun函数将形参数组a指向实参数组k所在的存储单元,这样,a和 k共用同一存储单元,所以对数组a的元素值的改变相当于对相应数组k的元素值的改变。在fun函数中,通过for循环对数组元素a[0]与a[4]、a[1]与a[3]的值分别作了交换,也即相当于主函数中k[0]与k[4]、k[1]与k[3]的值分别作了交换,此时k中各元素的值为5,4,3,2,1,6,7,8,9,10,故输出k[2]到k[7]的值为321678。

  • 第7题:

    以下程序的输出结果是( )。 include main()fint x=0; sub(&x,16,2); printf("%d\n",

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

    include<stdio.h>

    main()

    fint x=0;

    sub(&x,16,2);

    printf("%d\n",x);

    }

    sub(int*a,int n,int k)

    {if(k<=n) sub(a,n/2,2*k);

    *a+=k;

    }


    正确答案:14
    14 解析:本题考查递归函数的调用。在主函数中调用sub(&x,16,2)函数,此时n=16,k=2,if语句的控制的条件k=n成立,所以执行下面的语句,调用sub(x,8,4),此时n=8,k=4,if语句的控制条件k=n成立,所以执行下面的语句,调用sub(x,4,8),此时n=4,k=8,if语句控制的条件k=n不成立,因此,最后得x=2+4+8=14。

  • 第8题:

    有以下程序:includeint fun(int*k){int b=0;b=*k+b:return(B);}main(){int a[10]={1,2

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

    A.10 12

    B.8 10

    C.3 4

    D.10 28


    正确答案:C

  • 第9题:

    下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。

    请改正程序中的错误,使它能得到正确结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include<stdio.h>

    define N 100

    int fun(int *s,int n)

    {

    int i,j,k,a,b,c;

    j=0;

    for(i=100;i<n;i++)

    {

    /*************found***********/

    k=n;

    a=k%10;

    k/=10;

    b=k%10;

    c=k/10;

    if(a==b+c)

    /************found**************/

    s[j]=i;

    }

    return j;

    }

    main()

    {

    int a[N],n,num=0,i;

    do

    {

    printf("\nEnter n(<=1000):”);

    scanf("%d",&n);

    }

    while(n>1000);

    num=fun(a,n);

    printf("\n\nThe result:\n”);

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

    printf("%5d",a[i]);

    printf("\n\n");

    }


    正确答案:(1) 错误:k=n; 正确:k=i; (2) 错误:s[j]=i; 正确:s[j++]=i;
    (1) 错误:k=n; 正确:k=i; (2) 错误:s[j]=i; 正确:s[j++]=i; 解析:错误1:k就是当前要被判断的数,是随着i值的变化而变化的。错误2:在循环中,j是数组的下标要递增。

  • 第10题:

    有如下程序:include using namespace std;class AA{ int n;public: AA(int k):n (k)

    有如下程序: #include <iostream> using namespace std; class AA{ int n; public: AA(int k):n (k) { } int get(){return n; } int get()const{return n+1;} } int main() { AA a(5); const AA b(6); cout<<a.get()<<b.get(); return 0; } 执行后的输出结果是( )。

    A.55

    B.57

    C.75

    D.77


    正确答案:B

  • 第11题:

    有以下程序includevoidfun(int*s,intn1,intn2){inti,j,t; i=n1j=n2; while(i

    有以下程序 #include <stdio.h> void fun(int *s,int n1,int n2) { int i,j,t; i=n1 j=n2; while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]); printf("\n"); } 程序的运行结果是

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当 fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5.6,7,8,9,01;再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

  • 第12题:

    单选题
    有以下程序:#include main(){ int n=2,k=0; while(k++&&n++>2); printf(%d %d,k,n);}程序运行后的输出结果是(  )。
    A

    0 2

    B

    1 3

    C

    5 7

    D

    1 2


    正确答案: C
    解析:
    (表达式1)&&(表达式2)中,如果表达式1为假或0,那么表达式2就不会被执行。程序首先进入while的判断语句,执行k++和n++。k++为零,不满足循环条件,所以n++不会被执行,while循环结束后,k自增为1,n没有进行运算,仍为2。答案选择D选项。

  • 第13题:

    阅读下面程序段,则执行后的结果为 #inclide"stdio.h" main() { int m=4,n=2,k; k=fun(m,n); printf("%d\n",k);} fun(int m,int n) { return(m*m*m-n*n*n);}

    A.64

    B.8

    C.56

    D.0


    正确答案:C

  • 第14题:

    以下程序运行后的输出结果是【】。includemain(){int k=1,s=0; do{ if((k%2)!=0)continue;

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

    include<stdio.h>

    main()

    { int k=1,s=0;

    do{

    if((k%2)!=0) continue;

    s+=k; k++;

    }while(k>10);

    printf("s+%d\n",s);

    }


    正确答案:s=0
    s=0 解析:do-while循环结构的形式如下:
    do
    循环体
    while(表达式);
    循环的执行过程如下:
    ①执行do后面循环体中的语句。
    ②计算while后—对圆括号中表达式的值。当值为非0时,转去执行步骤1;当值为0时,执行步骤3。
    ③退出do-while循环。
    在本题中先判断k是否为偶数,如果不是则结束本次循环,进行下—次的循环条件判定,由于没有改变k的值,k>10的不成立,退出do-while循环,执行后面的printf("s=%d\n",s);语句,因为s=0,所以输出结果为s=0。

  • 第15题:

    下面程序的运行结果是()。includemain(){int y=10; do{y--;}while(--y); printf("%d\n"

    下面程序的运行结果是( )。 #include<stdio.h> main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); }

    A.-1

    B.1

    C.8

    D.0


    正确答案:D
    解析:本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。在do-while循环中,首先执行y--,再执行--y。当y=2时,执行y--,y的值变为1,--y使y值变为0,循环结束。执行输出时,先输出y的值0,然后执行y--,使y的值变为-1。

  • 第16题:

    下面程序的运行结果是[]。include int f(int a[],int n){ if(n>1)return a[0]+f(a+1,n-1

    下面程序的运行结果是[ ]。

    include <stdio.h>

    int f(int a[],int n)

    { if(n>1)

    return a[0]+f(a+1,n-1);

    else

    return a[0];

    }

    main()

    {int aa[10]={12,3,4,5,6,7,8,9,10},s;

    s=f (aa+2,4); printf("%d\n",s); }


    正确答案:18
    18 解析:实参中aa+2是指将数组元素3的地址传递绐形参a,应当注意—点,用数纽名作函数实参时,不是把数组的值传给形参,而是把实参数组的地址传绐形参数组,两个数组共用一段内存单元。所以a[]={3,4,5,6,7,8,9,10),n=4,a[0]=3。形参中a+1表示数组元素4的地址传递绐形参a,所以a[0]+f(a+1,n-1)=3+f(a+1)),3),此时a[]={4,5,6,7,8,9,10),n=3,a[0]=4。n=3同样满足n>1的条件a[0]+f(a+1,n-1)=4+f(a+1,2)此时a[]={5,67,8,9,10},n=2, a[0]=5。n=2同样满足n>1的条件a[0]+f(a+1,n-1)=5+f(a+1,2)此时a[]={6,7,8,9,10},n=1,a[0]=6。n=1不再满足条件返回a[0]=6, 6+5+4+3=18,所以最后的结果为18。

  • 第17题:

    下面程序的运行结果是( )。 include main() {int a,b,c,n; a=2;b=0;c=1;n=1; while(n<=3

    下面程序的运行结果是( )。 include<stdio.h> main() {int a,b,c,n; a=2;b=0;c=1;n=1; while(n<=3) {c=c*a;b=_b+c;++n;} printf("b=%d",B); }


    正确答案:B
    B 解析:分析程序可知,n的初始值为1,因此。while(n=3)循环3次。第1次:c=c*a=2;b=b+C=2;n=2。第2次:c=c*a=4;b=b+c=6;n=3。第3次:c=c*a=8;b=b+e=14。当n=4时,判断条件不满足,退出循环。

  • 第18题:

    有下列程序: include void fun(int * s,int n1,int n2) { int i,j,

    有下列程序: #include <stdio.h> void fun(int * s,int n1,int n2) { int i,j,t; i=n1;j=n2; while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序的运行结果是( )。

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组a中a[0]-a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]-a[9]这6个元素逆序;调用fun(a,0,9)是将数组中a[0]-a[9]这10个元素在逆序,再用printf()函数输出结果为5678901234,故选项C)正确。

  • 第19题:

    下述程序的输出结果是()。include int f(n)int n;{if(n==0 | | n==1)return 3;return n

    下述程序的输出结果是( )。 #include <stdio.h> int f(n) int n; { if(n==0 | | n==1) return 3; return n-f(n-2); } void main() {printf("\n%d",f(10)); }

    A.3

    B.8

    C.9

    D.10


    正确答案:A
    解析:本题定义了一个递归函数f()。当传入的参数n等于1或0时返回3,否则返回n-f(n-2)。所以f(10)=10-f(8)=10- (8—f(6))=10-8+(6-f(4))=10-8+6-(4-f(2))=10-8+6-4+(2-f(0))=10-8+6-4+2-3=3。故本题应该选择A。

  • 第20题:

    有以下程序:includemain(){int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a

    有以下程序: #include <stdio.h> main() { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a<b); printf("%d,%d\n",k,m); } 程序运行后的输出结果是( )。

    A.0,0

    B.0,1

    C.1,0

    D.1,1


    正确答案:C
    解析:本题考查逻辑或运算。因为b>a为真,即n=1,则m不需再计算,保持原值,因此k值为1,m值仍为0。

  • 第21题:

    有以下程序:includemain(){int k=4,n=0; for( ;n

    有以下程序: #include <stdio.h> main() { int k=4,n=0; for( ;n<k;) { n++; if(n%3! =0) continue; k--;} printf("%d,%d\n",k,n); } 程序运行后的输出结果是( )。

    A.1,1

    B.2,2

    C.3,3

    D.4,4


    正确答案:C
    解析:本题考查循环和continue语句,continue语句的功能是结束本次循环。n从0开始循环,判断n%3!=0是否成立,如果成立,结束本次循环,继续下一次for循环;否则执行k--,并继续下一次for循环,直至循环结束。在程序中,当n取1,2时,不执行k--,当n取3时,执行k--,k变为3,循环结束,输出k,n的值分别为3,3。

  • 第22题:

    有以下程序: include main ( ) {int k=5,n =0; while ( k>0){switch (k) {default: b

    有以下程序: #include <stdio, h>main ( ) { int k=5,n =0; while ( k>0) { switch (k) { default: break; case 1 : n+ =k; case 2 : case3 : n+ =k; } k--; printf( "% d \n" ,n);}程序运行后的输出结果是( )。

    A.0

    B.4

    C.6

    D.7


    正确答案:D
    解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺序执行case3:n+=k;得n=5;当k=1时,执行case1:n+=k;得n=6,然后顺序执行case2:和case3:n+=k;使得n=7。

  • 第23题:

    单选题
    有以下程序:#include int a=2; int f(){ static int n;  int m;  m=n=0;  n++; a++; m++; return m+n+a; }main(){ int k;  for(k=0;k<3;k++)  printf(%d, ,f()); printf(); }程序的运行结果是(  )。
    A

    5,6,7,

    B

    5,7,9,

    C

    5,8,11,

    D

    5,5,5,


    正确答案: B
    解析:
    static变量编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。程序执行过程为:k=0,a=2,n=0,m=0;n=1,a=3,m=1,返回5;k=1,a=3,n=0,m=0;n=1,a=4,m=1,返回6;k=2,a=4,n=0,m=0;n=1,a=5,m=1,返回7;k=3退出循环。答案选择A选项。

  • 第24题:

    单选题
    有以下程序#include main(){ int k=5,n=0; do {  switch(k)  {   case 1:case 3:n+=1;k--;break;   default:n=0;k--;   case 2:case 4:n+=2;k--;break;  }  printf(%d,n); }while(k>0&&n<5);}程序运行后的输出结果是(  )。
    A

    235

    B

    0235

    C

    02356

    D

    2356


    正确答案: D
    解析:
    第一次循环k为5,执行“n=0;k--;”和“n+=2;k--;break;”输出n为2,k的值为3,第二次循环k为3,执行“n+=1;k--,break;”输出n为3,k的值为2,第三次循环k为2,执行“n+=2;k--;break;”,输出n为5,k的值为1,循环条件不成立,所以输出235。答案选择A选项。