(27)有以下程序#include stdio.hmain(){ int x=1,y=0;if(!x) y++;else if(x==0)if (x) y+=2;else y+=3;printf("%d\n",y);}程序运行后的输出结果是A)3B)2C)1D)0

题目

(27)有以下程序

#include <stdio.h>

main()

{ int x=1,y=0;

if(!x) y++;

else if(x==0)

if (x) y+=2;

else y+=3;

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

}

程序运行后的输出结果是

A)3

B)2

C)1

D)0

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

第1题:

有以下程序

#include <stdio.h>

main()

{ int x=1,y=2,z=3;

if(x>y)

if(y<z) printf("%d",++z);

else printf("%d",++y);

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

}

程序的运行结果是

A)331

B)41

C)2

D)1


正确答案:D

第2题:

有以下程序: main() {int a[]={2,4,6,8,10),y=0,x,*P; P=&a[1]; for(x=1;x<3;x++)y+=p[x]; printf("%d\n",y); } 程序运行后的输出结果是( )。

A.10

B.11

C.14

D.15


正确答案:C
解析:指针变量p指向数组元素a[1],则p[1]即为a[2],p[2]即为a[3],执行第一次for循环时,y=y+p[1]=0+a[2]=6,第二次执行for循环,y=y+p[2]=6+a[3]=14,此时x为3,for循环条件不满足,退出循环,输出y的值为14。

第3题:

有以下程序

main()

{ int x, y, z;

x=y=1;

z=x++,y++,++y;

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

}

程序运行后的输出结果是

A)2,3,3

B)2,3,2

C)2,3,1

D)2,2,1


正确答案:C
答案 C
解析:整型变量 x 、 y 的初值都为 1 , “ x++,y++,++y ” 是一个逗号表达式,程序执行“ z=x++,y++,++y ” 之后 , x 的值为 2 , y 的值为 3 , z 取逗号表达式中的第二个表达式的值 ,为 1 。因此本题的答案为选项 C 。

第4题:

有以下程序:include main() {int a[] = {2,4,6,8,10} ,y =0,x, * p;p =&a[1];for(

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

A.10

B.11

C.14

D.15


正确答案:C
解析:本程序通过语句p=&a[1];将指针变量p指向存储单元a[1],使得p[0]的值为4,通过for循环,使y的值丸P[1]与p[2]之和,即y=6+8,所以输出的y值为14。

第5题:

有以下程序: #include<stdio.h> main( ) {int x=1,y=0; if(!x)y++; else if(x==0) if(x)y+=2; else y+=3; Drintf("%d\n"。v); } 程序运行后的输出结果是( )。

A.3

B.2

C.1

D.0


正确答案:D
因为x!=0,所以下列的循环不执行,只执行y++,最后结果为0。

第6题:

有以下程序

#include <stdio.h>

int fun(int x,int y)

{ if(x==y) return (x);

else return((x+y)/2);

}

main()

{ int a=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

}

程序运行后的输出结果是

A)3

B)6

C)8

D)12


正确答案:B

第7题:

以下程序段的运行结果是( )。 include main() {int x=2,y=1: switch(x) {case 1: switch

以下程序段的运行结果是( )。 include<stdio.h> main() {int x=2,y=1: switch(x) {case 1: switch(y) {case 0:printf("x=2,y=1\n");break; case 1:printf("y=1\n");break; } case 2:printf("x=2\n"); } }


正确答案:x=2
x=2

第8题:

有以下程序

#include <stdio.h>

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0: a++; break;

case 1: b++; break;

}

case 2: a++; b++; break;

case 3: a++; b++;

}

printf("a=%d, b=%d\n",a,b);

}

程序的运行结果是

A)a=1 , b=0

B)a=2, b=2

C)a=1, b=1

D)a=2, b=1


正确答案:D

第9题:

有以下程序

void f( int y, int *x)

{ y=y+*x; *X=*X+y; }

main()

{ int x=2,y=4;

f(y,&x);

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

}

执行后输出结果是______。


正确答案:8 4
8 4 解析:本题考核的知识点是函数的调用、值传递和地址传递的区别。“值传递”指实参将值传递给形参后,实参与形参再无联系。也就是说对行参的改变将不影响实参;地址传递是指地址或数组名作为形参时的参数传递,这种情况下对形参的改变将对实参产生影响.函数 f(Y*x)的作用是让y的值加上指针x所指向变量的值,让指针x所指向变量的值加上y的值。由于形参y是传值的,形参x是传地址的,故调用该函数后,作为实参的y的值将不改变,而实参x的值将改变,故最后输出的y的值为4,而x的值为8。

第10题:

下列程序的运行结果是( )。 main() { int a=-5,b=1,c=1; int x=0,y=2,z=0; if(c>0)x=x+y; if(a<=0) { if(b>O) if(c<=0)y=x-y; } else if(c>0)y=x-y; else z=y; printf("%d,%d,%d\n",x,y,z); }

A.2,2,0

B.2,2,2

C.0,2,0

D.2,0,2


正确答案:A
解析: 本题考查if else语句的使用。先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-50,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的值没有发生变化。

更多相关问题