.若有以下程序段,W和k都是整型变量,则不能与该程序段等价的循环语句是( )W= k;LB: if(w==0) gotO LE;w - -;printf("*");goto LB;LE:A. for(w=k;w!=0;W--)printf("*");B.w= k; While(W--!=0) Prinif(”* ”);C.w= k; do{w--; prinif(“*”); } while( W!= 0);D.for(w=k;W;--W) printf("*");

题目

.若有以下程序段,W和k都是整型变量,则不能与该程序段等价的循环语句是( )

W= k;

LB: if(w==0) gotO LE;

w - -;

printf("*");

goto LB;

LE:

A. for(w=k;w!=0;W--)printf("*");

B.w= k; While(W--!=0) Prinif(”* ”);

C.w= k; do{w--; prinif(“*”); } while( W!= 0);

D.for(w=k;W;--W) printf("*");


相似考题
参考答案和解析
正确答案:C
问题所给出的程序段用goto语句构造一个循环控制结构,该循环结构的初值是让变量W的值为k的值,循环结束条件是W的情等于0,循环体是让变量W的值减1,并输出一个字符*。上述循环控制过程用for循环可描述如下:</P>
for=(w=k;W!=0;W--)printh("*");
或写成:
for(w=k;w;--w)printf("*");
若用while语句,可描述如下:
W=k;
while(w--!=0)printf("*");
w++;/*在w等于0时,也执行了一次w--,这里是对w最后减1的补尝*/
或更直观地写成:
W=k;
while(w!=0){w--;Printf("*");}
若用do-while语句,可描述如下:
W=k;
if(W)
do{
w--;prinif("*");
}while(w);
若写成:
W=k;
do{
W--;printf("*");
}while(w!=0);
是不正确的,因为原代码当k的值为0时,不输出字符*,而上面的改写,当k的值为0时,将输出许许多多的字符*。所以解答应是C。
更多“.若有以下程序段,W和k都是整型变量,则不能与该程序段等价的循环语句是( ) W= k; LB: if(w==0) ”相关问题
  • 第1题:

    有以下程序段:int k=0, a=1, b=2, c=3;k=ac? c:k;执行该程序后,k的值是______。A.3B

    有以下程序段: int k=0, a=1, b=2, c=3; k=a<b? b:a; k=k>c? c:k; 执行该程序后,k的值是______。

    A.3

    B.2

    C.1

    D.0


    正确答案:B
    解析:第一个表达式得到k=2,对于第二个表达式,因为k=23,k仍然赋值为k。因此最后k值为2。

  • 第2题:

    若有以下程序段,w和k都是整型变量。w=k;LB:if(w==0)goto LE; w--; printf("*"); goto LB;LE: M则不能与上面程序段等价的循环语句是A.for(w=k;w!=0;w--)printf("*");B.w=k;<CR>while(w--!=0)printf("*");w++;C.w=k;<CR>do { w--;printf("*");}while(w!=0);D.for(w=k;w;--w)printf("*");


    正确答案:C
        本题主要考查几种循环结构的比较。在题目中,给出了一段程序,程序首先对整型变量w赋值;然后定义了一段程序LB,在该段程序中,首先判断变量w是否为零,如果是,则用GOTO语句跳出该段程序至LE,如果不为零,则w自减并输出*,然后用GOTO语句跳到该程序段开始的地方执行。该段程序其实相当于一个循环,循环的结束条件是变量w的值等于零。
        在选项A中,我们可以看到循环结束的条件是变量w的值等于零,而初值也一样,与题目中的程序段意思完全一致。
        在选项B中,我们可以看出循环结束的条件是变量w的值等于零,而程序也是先判断,再执行后面的语句,与原程序段描述的意思一致。
        在选项C中,do-while循环是直到型循环,即先执行一次循环体中的语句后,再判断循环条件,当w的值已经等于0时,循环依然要运行一次,与原程序段描述的内容不一致,是题目的答案。
        在选项D中,循环所描述的内容也与原程序段一致。
        提醒:在完成这类题时,首先需要弄明白原程序段的作用,如果看不懂,则可以比较选项中与其他选项不同的结果。

  • 第3题:

    执行以下程序段后,W的值为______。 int w='A',x=14,y=15 w=((x‖y)&&(w<'a'));

    A.-1

    B.NULL

    C.1

    D.0


    正确答案:C
    解析:本题考查的是括号与逻辑运算符的混合运算,其运算优先级为先括号,后逻辑运算符。另外注意“&&”和“||”的“短路”运算。当运算符“&&”左边表达式的值为0时,则右边表达式就不再进行运算,整个表达式的值即为0;当运算符“||”左边表达式的值为非零时,则右边表达式就不再进行运算,整个表达式的值为1。本题先运算表达式“x||y”,由于x=14、y=15均为非零,所以x||y=1。则对于与运算符“&&”,还必须运算其右边的表达式“w'a'”,由于A的 ASCII码是65,a的ASCII码是97,所以w'a'的值为1,故整个表达式的值为1。

  • 第4题:

    以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是( )

    A.if((a>b)&&(b>c)) k=1; else k=0;

    B.if((a>b)||(b>c)) k=1 else k=0;

    C.if(a<=b) k=0; else if(b<=c) k=1;

    D.if(a>b) k=1; else if(b>c) k=1; else k=0;


    正确答案:A
    解析:C语言中,条件运算符优先于赋值运算,但低于逻辑运算、关系运算和算术运算。

  • 第5题:

    假定w、x、y、z、m均为int型变量,有如下程序段:

    N=1;x=2;y=3;z=4;

    m=(W<X)?W:K;

    m=(m<y)?m:y;

    m=(m<z)?m:z;

    则该程序运行后,m的值是【 】


    正确答案:√
    1 解析:此题考查条件表达式的运用。第1条语句执行后,变量m的值为1。第2条语句执行后,变量m的值为1。第3条语句执行后,变量m的值为1。

  • 第6题:

    执行以下程序段后,w的值为( )。 intw='A',x=14,y=15; w=((x||y)&&(w<'a'));

    A.-1

    B.NULL

    C.1

    D.0


    正确答案:C
    解析:字符变量w的初值为字符'A',其ASCII码值为65,字符'a'的ASCII码值为97,所以关系表达式w'a'的值为1;变量x=14,变量y=15,x||y为或,x、y均为真,所以x||y的结果1。因而逻辑表达式(x||y)&&(w'a')的值为1。

  • 第7题:

    若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是( )。 A.a<>b+cS

    若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是( )。

    A.a<>b+c

    B.ch=getchar

    C.a= =b+C

    D.a++


    正确答案:A
    符号<>不是C语言中的运算符,所以不能替代。

  • 第8题:

    有以下程序段:int k=0,a=1,b=2,c=3;k=ac ? c:k;执行该程序段后,k的值是()。A.3B.2C

    有以下程序段: int k=0,a=1,b=2,c=3; k=a<b ? b:a; k=k>c ? c:k; 执行该程序段后,k的值是( )。

    A.3

    B.2

    C.1

    D.0


    正确答案:B
    解析:本题中因为ab为“真”,所以第1个条件表达式的值为b的值2,所以k=2。然后又因为k>c为“假”,所以第2个表达式的值为k的值2。所以本题应该选择B。

  • 第9题:

    以下程序的输出结果是______。

    A.54321

    B.12345

    C.1 2 3 4 5

    D.5 4 3 2 1 0 main() { int w=5;fun(w);printf("\n");} fun (int k) { if(k>0) fun(k-1); printf("%d"",k);}


    正确答案:B

  • 第10题:

    有以下程序段intk=0, a=1, b=2, c=3; k=ac? c:k;执行该程序段后,k的值是A.3B.2C.1

    有以下程序段 int k=0, a=1, b=2, c=3; k=a<b ? b:a; k=k>c ? c:k; 执行该程序段后,k的值是

    A.3

    B.2

    C.1

    D.0


    正确答案:B
    解析:本题考查的知识点是条件表达式.条件运算符?:是C语言中唯一的三目运算符,它的规则是先计算左边运算分量,如果为“真”(非0),则返回中间运算分量的值,否则返回右边运算分量的值。本题中因为ab为“真”,所以第1个条件表达式的值为b的值2,所以k=2。然后又因为k>c为“假’,所以第2个表达式的值为k的值2。所以本题应该选择B。

  • 第11题:

    以下程序的输出结果是()。includeint fan(int);main(){int w=5; fun(w);printf("\n");}

    以下程序的输出结果是( )。 #include <stdio.h> int fan(int); main() { int w=5; fun(w); printf("\n"); } fun(int k) { if(k>0) fun(k-1); printf("%d",k); }

    A.5 4 3 2 1

    B.0 1 2 3 4 5

    C.1 2 3 4 5

    D.5 4 3 2 1 0


    正确答案:B
    解析:本题考查函数的递归调用。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(0),其中fun(5)是main函数调用的,其余是在fun函数中调用的。

  • 第12题:

    单选题
    执行以下程序段后,w的值为(  )。int w='A',x=14,y=15;w=((x||y)&&(w<'a'));
    A

    -1

    B

    NULL

    C

    1

    D

    0


    正确答案: B
    解析:
    因为x=14,y=15都是非零整数,因此x||y = 1。又因为'A'+32='a',知w<'a'也为真,因此(x||y)&&(w<'a')的值为1。答案选择C选项。

  • 第13题:

    有以下程序段: int k=0,a=1,b=2,c=3; k=ac?c:k; 执行该程序段后,k的值是

    有以下程序段: int k=0,a=1,b=2,c=3; k=a<b?b:a; k=k>c?c:k; 执行该程序段后,k的值是 ______。

    A.3

    B.2

    C.1

    D.0


    正确答案:B
    解析:三目运算符的一般形式为(表达式1)?(表达式2):(表达式3),当(表达式1)值为真时,(表达式2)的值为整个表达式的值;当(表达式1)值为假时,(表达式3)的值为整个表达式的值。题中执行表达式“k=ab?b:a”后,k=2,将此值代入后一个表达式“k=k>c?c:k,由于“k>c”值为假,故k的值还等于原来k的值,即2。

  • 第14题:

    若有以下定义和语句:includeinta=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则

    若有以下定义和语句: #include<stdio.h> int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是( )。

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=*w;


    正确答案:A
    解析:本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将q指向NULL。因为q指向NULL,所以选项A中对q所指地址进行写入是非法的。故A选项为所选。

  • 第15题:

    以下程序的输出结果是 ______。includevoid main() {char w[][10]={ "ABC", "DEFGH"

    以下程序的输出结果是 ______。 #include<iostream.h> void main() { char w[][10]={ "ABC", "DEFGH", "IJKL" , "MNOP" }; int k; for (k=1 ;k<3 ;k++) cout<<w[k]<< " " }

    A.ABC FGH KL

    B.ABC EFG IJ M

    C.EFG JK 0

    D.DEFGH IJKL


    正确答案:D

  • 第16题:

    若有以下程序段,w和k都是整型变量: 则不能与上面程序段等价的循环语句是( )。A.B.C.D.A.ASXB

    若有以下程序段,w和k都是整型变量:

    则不能与上面程序段等价的循环语句是( )。A.

    B.

    C.

    D.

    A.A

    B.B

    C.C

    D.D


    正确答案:C
    当循环结束时,w的值应为-1,而其他选项中w的值为0,故选择C选项。

  • 第17题:

    有以下程序段:int k=0,a=1,b=2,c=3;k=ac?c:K;执行该程序段后,k的值是()。A.3B.2C.1D.0

    有以下程序段: int k=0,a=1,b=2,c=3; k=a<b? b:a; k=k>c? c:K; 执行该程序段后,k的值是( )。

    A.3

    B.2

    C.1

    D.0


    正确答案:B
    解析:由于ab成立,所以表达式ab?b:a取b的值2,得到k=2;由于k>c不成立,所以表达式k>c?c:k取k的值2,故k的值为2。

  • 第18题:

    若有以下程序段,w和k都是整型变量:

    w=k:

    LB:if(w==0)go to LE;

    W--:

    printf("*")

    goto LB;

    LE;

    则不能与上面程序段等价的循环语句是( )。

    A.for(w=k;w!=0;w--)printf("*");

    B.for(w=k;w;--w)printf("*");

    C.w=k; while(w--!=0)printf("*");

    D.w=k;w++; do{w--;printf("*");}while(w!=0);


    正确答案:C
    当循环结束时,w的值应为-1,而其他选项中w的值为0,故选择C选项。

  • 第19题:

    以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是( )。 A.B.C.D.

    A.0

    B.9

    C.6

    D.8


    正确答案:A
    表达式k=a>b?(b>c?1:0):0表示:如果(a>b)条件为真,则k取值(b>c?1:0),否则k取值0;当a>b的情况下,如果b>c,则k值为1,否则为0。所以该表达式与选项A)功能相同。

  • 第20题:

    对于以下程序段,设a和q都是整型变量, ┇ a=q; Loop:if(a==0)goto End; Else if(a>0){printf("&");a--;goto Loop;} Else goto End; End; ┇ 不能与上面程序等价的是( )

    A.a=q; do { f(a<0)break; a--;printf("*"); }while(a) ;

    B.a=q; for(;a>0;a--)printf("&");

    C.a=q; while(a) {printf("&");a--;}

    D.for(a=q;a>0;--a,printf("*"));


    正确答案:C

  • 第21题:

    假定w,x,y,z和m均为int型变量,有如下程序段: w=1;x=2,y=3;z=4; m=(w<x)?w:x;m=(m<y)?m:y;m(m<2)?m:2; 则该程序段执行后,m的值为 ( )

    A.4

    B.3

    C.2

    D.1


    正确答案:D

  • 第22题:

    假定w、x,y、z、m均为int型变量,有如下程序段; w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z; 则该程序段执行后,m的值是( )

    A.4

    B.3

    C.2

    D.1


    正确答案:D

  • 第23题:

    程序段int k=10; while(k=0) k=k-1循环体语句执行()次.


    正确答案:0