有以下程序 #include<stdio.h> main( ) {int n=2,k=0; while(k++n++>2); printf(

题目

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

A.O2

B.13

C.57

D.12

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序: main() {int k=5, n=0; while(k>0); { switch(k) { default; 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
解析:当k为4、5时,n值没有变化。当k=3时,满足case 3,得到n=3;当k=2时,满足case 2,因为没有break语句,继续执行case 3得n=n+2=5;当k=1时,满足case 1,得n=6,又因为没有break,继续执行case 2,case 3,最后得n=7。

第2题:

以下程序的输出结果是main(){ int x=0; sub(&x,8,1); printf("%d\n",x);}sub(int *a,int n,int k){ if(k<=n) sub(a,n/2,2*k); *a+=k;}


正确答案:7
本题属于递归调用。主函数中调用sub函数流程如下:
sub(*x,8,1)-sub(*x,4,2)-sub(*x,2,4)-x=x+k=4,然后是4+2=6,最后是 6+1=7 
由此可知,输出结果为7。

第3题:

有以下程序: #include<stdio.h> void fun(int*s) { static int i=0; do{s[J]=s[J]+s[j+I];}while(++j<2); } main( ) { int k.a[l0]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)pfintf("%d",a[k]); printf("\n"); } 程序运行后的输出结果是( )。

A.12345

B.23445

C.34756

D.35745


正确答案:D
本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。

第4题:

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

第5题:

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

第6题:

有以下程序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条语句。

第7题:

有以下程序

#include<stdio.h>

void fun(int *s)

{ static int j=0;

do { s[j]=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]);

printf("\n");

}

程序运行后的输出结果是

A) 12345

B)23445

C)34756

D) 35745


正确答案:D
【答案】D
【知识点】static变量的使用
【解析】静态局部变量在函数内定义,它的生存期为整个源程序。第一次k=1调用结束后,s[0]的值为3,s[1]的值为5,j的值为2。当k=2时,继续调用函数fun,此时j的值为2,但是因为do while语句先执行后判断,所以执行了s[2]=s[2]+s[3],所以s[2]的值变成了7。循环结束回到主函数,k的值为3,不满足条件结束循环。最后打印输出a数组元素的值。

第8题:

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

main()

{ int x=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

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

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

*a+=k;

}


正确答案:7
7 解析:在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4,2),sub(&a,4,2)调用sub(&a,2,4),sub(&a,2, 4)中由于24,所以if后面括号里的判断为假,递归结束,执行其后的*a+=k;语句此时 x=x+k=0+4=4,回退到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k= 4+2=6,再回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。

第9题:

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

第10题:

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