对于以下程序段,设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和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("*"));


相似考题
更多“对于以下程序段,设a和q都是整型变量,┇ a=q;Loop:if(a==0)goto End;Else if(a>0){printf("&") ”相关问题
  • 第1题:

    下面程序段中正确的是()。A.If x<0 Then y=0 If x<1 Then y=1 If x<2 Then y=2 If x>=2 Then y=3B

    下面程序段中正确的是( )。

    A.If x<0 Then y=0 If x<1 Then y=1 If x<2 Then y=2 If x>=2 Then y=3

    B.If x>=2 Then y=3 If x>1 Then y=2 If x>=0Then y=1 If x>0 Then y=0

    C.If x<0 Then y=0 Else If>=0Then y=1 Else y=3 End If

    D.If x>=2 Then y=3 Else If>=1 Then y=2 Else y=0 End If


    正确答案:D

  • 第2题:

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

    struct NODE

    {int k;

    struct NODE *link;

    };

    main()

    {structNODEm[5],*p=m,*q=m+4;

    int i=0;

    while(p!=q){

    p->k=++i;p++;

    q->k=i++;q-;

    }

    q->k=i;

    for(i=0;i<5;i++)printf("%d",m[i].k);

    printf("\n");

    }


    正确答案:13431
    13431 解析:程序执行过程如下:
    p=m,q=m+4,条件9!=q成立,执行p->k=++i;,由于是“前加”,所以m[0].k=1,执行p++后p=m+1;执行q->k=i++;,由于是“后加”,所以m[4].k=1,然后使得i加上1,即i=2,q-后,q=m+3: p=m+1,q=m+3,条件p!=q成立,执行p->k=++i;,由于是“前加”,所以i=3,m[0].k=3,执行p++后p=m+2:执行 p->k=++i;,由于是“后加”,所以m[4].k=3,i=4,q-后,q=m+2; p=m+2,q=m+2,条件p!=q不成立,则执行p->k=i;即m[2].k-4;故输出的值为13431。

  • 第3题:

    以下C程序的运行结果为______。main(){ int i=1,sum=0; loop:if(i<=10) { sum+=i; i++; goto loop; } printf("sum=%d\n",sum);}

    A.sum=10

    B.sum=55

    C.sum=100

    D.sum=88


    正确答案:B

  • 第4题:

    若有以下程序段,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中,循环所描述的内容也与原程序段一致。
        提醒:在完成这类题时,首先需要弄明白原程序段的作用,如果看不懂,则可以比较选项中与其他选项不同的结果。

  • 第5题:

    若有以下说明和定义: typedef int *INTEGER; INTEGER p,*q; 以下叙述正确的是( )。

    A.p是整型变量

    B.p是基类型为整型的指针变量

    C.q是基类型为整型的指针变量

    D.程序中可用INTEGER代替int类型名


    正确答案:B
    解析:本题中INTEGER被定义为int*的别名,故直接由它定义的类型基类型为整型的指针变量。因此,p是基类型为int的指针变量,q是int型指针的指针变量。故4个选项中B正确。

  • 第6题:

    有以下程序: include using namespace std; int main() {int i=1,sum=0;Loop:if(i<=20

    有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int i=1,sum=0;

    Loop:if(i<=20)

    {

    sum+=i;

    i++;

    goto Loop;

    }

    cout<<sum<<end1;

    return 0;

    }

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


    正确答案:210
    210 解析:本题是goto跳转语句的应用。程序中,如果满足条件“i=20”,则执行语句“sum+=i;i++;”然后,又跳转到Loop处。直到条件“i=20”不满足。由此可知,此程序的功能是统计1~20的总和,即210。

  • 第7题:

    设有如下程序: char sub(char * q) {while(* q,='\0') {if(*q>='A'&&*q<='Z')*q=* q+32; else if(*q>='a' &&*q<='z')*q=*q-32; printf("%c",*q); q++;} } main() {char *s="abcABC"; sub(s); } 则程序运行后的输出结果是( )

    A.ABCabc

    B.abcABC

    C.abcabc

    D.ABCABC


    正确答案:A

  • 第8题:

    若整型变量a值为2、b的值为3,则下列程序段执行后整型变量c的值为______。 If a>5 then If b<4 Then c=a-b Else c=b-a Else If b>3 Then c=a*b Else c=a mod b End If

    A. 2

    B.-1

    C.1

    D.6


    正确答案:A

  • 第9题:

    下列VB程序段运行后,变量T的值是()。 A=10 : B=5 : T=0 IF A>B THEN T=A ELSE T=B END IF

    • A、0
    • B、5
    • C、10
    • D、15

    正确答案:C

  • 第10题:

    填空题
    下列程序段的输出结果是()。  char str[ ]= “abc/0def/0ghi”, *q=str;  printf(“%s”,q+5);

    正确答案: ef
    解析: 暂无解析

  • 第11题:

    单选题
    若x和y是程序中的两个整型变量,则下列if语句中正确的是(  )。
    A

    if(x==0)y=1;else y=2;

    B

    if(x==0)then y=l else y=2;

    C

    if(x==0)y=l else y=2;

    D

    if x==0 y=1;else y=2;


    正确答案: B
    解析:
    if-else语句的形式为:if(<条件>)<语句1>else<语句2>,所以只有A项符合以上形式的if-else语句。

  • 第12题:

    单选题
    下列VB程序段运行后,变量T的值是()。 A=10 : B=5 : T=0 IF A>B THEN T=A ELSE T=B END IF
    A

    0

    B

    5

    C

    10

    D

    15


    正确答案: C
    解析: 暂无解析

  • 第13题:

    若有以下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

    若有以下程序段:

    include <iostream>

    using namespace std;

    int main()

    {

    char*p="abcdefgh",*r;

    long*q;

    q=(long*)p;q++;

    r=(char*)q;

    cout<<r<<end1;

    return 0;

    }

    该程序的输出结果是【 】。


    正确答案:efgh
    efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量qo首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“F(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

  • 第14题:

    有以下程序: include void funl (char * p){char * q; q=p; while( *q! ='\0') } (*q)

    有以下程序: #include <stdio.h>void funl (char * p){ char * q; q=p; while( *q! ='\0') } (*q) ++;q++;}mains( ){ char a[ ] = { "Program" } , * p; p = &a[3]; fun1 (p); printf("% s \n" ,a);}程序执行后的输出结果是( )。

    A.Prohsbn

    B.Prphsbn

    C.Progsbn

    D.Program


    正确答案:A
    解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符'g');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使'g'+1,使'g'变成了'h';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到'\0'结束循环,返回形参。最终得到的结果是从字符串"Program'的第4个字符开始,每个字符加1。

  • 第15题:

    以下程序的输出结果是()。includeusing namespace std;void fun(char**q){++q;cout<<*

    以下程序的输出结果是( )。 #include<iostream> using namespace std; void fun(char**q) { ++q; cout<<*q<<end1; } main() { static char*s[]={"HI","HELL0","TEST"}; char**p; p=s; fun(p); system("PAUSE"); return 0; }

    A.为空

    B.HI

    C.HELL0

    D.TEST


    正确答案:C
    解析:由程序main主函数入手,调用fun函数,在fun函数中执行“cout*qend1;”语句实现程序输出。主函数中变量char*s[]为指针数组,char**p表示p指向的字符指针数据。*p就代表p指向的字符指针。语句“p=s;”表明p指向字符指针s,而**p则是s[]中的第一个字符串“HI”。主函数将变量p传值给函数fun(char**q)中的q,在函数体内部首先执行“++q”语句,就是将q的指针指向s中的下一个字符串,即“HELL0”,所以输出语句“cout*qend1;”输出该字符串值。

  • 第16题:

    若有如下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

    若有如下程序段:

    include <iostream>

    using namespace std;

    int main()

    {

    char *p="abcdefgh",*r;

    long *q;

    q=(long *)p;q++;

    r=(char *)q;

    cout<<r<<end1;

    return 0;

    }

    该程序的输出结果是______。


    正确答案:efgh
    efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给小然后执行“q++”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

  • 第17题:

    以下程序段中Do...Loop循环执行的次数为( )。 n=5 Do lf n Mod 2=0 Then n=n\2 Else n=n*3+1 End If Loop untiln=1

    A.4

    B.3

    C.5

    D.2


    正确答案:C

  • 第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题:

    .若有以下程序段,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。

  • 第20题:

    下列程序段的输出结果是()。  char str[ ]= “abc/0def/0ghi”, *q=str;  printf(“%s”,q+5); 


    正确答案:ef

  • 第21题:

    有以下程序段,n=2;while(n--);printf("%d",n);其中n为整型变量。运行结果为()。

    • A、2
    • B、10
    • C、–1
    • D、0

    正确答案:B

  • 第22题:

    单选题
    有以下程序:#include main(){ int x[3][3]={{2},{4},{6}},i,*q=&x[0][0]; for(i=0;i {  if(i==0)   x[i][i+1]=*q+1;  else   ++q;  printf("%d",*q); } printf("");}程序的运行结果是(  )。
    A

    23

    B

    26

    C

    33

    D

    36


    正确答案: C
    解析:
    题中把数组首元素地址赋值给指针变量q,在for循环体内,当i=0时,满足if语句,把指针q指向的存储单元的值加1,即将3赋给x[0][1],接着输出q指针指向存储单元的值2;i=i+1后再次进人循环体,此时i不等于0,指针q地址加1,指向x[0][1],此时*q=3,因此最后函数输出的分别是2和3。答案选择A选项。

  • 第23题:

    单选题
    有以下程序#include void fun(int *p,int *q){ int t; t = *p; *p = *q; *q = t; *q = *p;}main(){ int a = 0,b = 9; fun(&a,&b); printf(%d %d,a,b);}程序的输出结果是(  )。
    A

    0 9

    B

    0 0

    C

    9 0

    D

    9 9


    正确答案: A
    解析:
    main函数中变量a和b以传地址的方式传递参数,形参的改变会导致实参的改变。fun函数的作用是先交换两个指针的指向的值,即p指针指向的值是9,q指针指向的值是0,然后将p指针指向的值赋给q指针,q指针指向的值也成了9,所以a和b的值均为9,答案选择D选项。