文法G://S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()A、i,P+TB、P,P+T,i,P+T+iC、P+T+iD、P,P+T,i

题目

文法G://S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()

  • A、i,P+T
  • B、P,P+T,i,P+T+i
  • C、P+T+i
  • D、P,P+T,i

相似考题
更多“文法G://S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()A、i,P+TB、P,P+T,i,P+T+iC、P+T+iD、P,P+T,i”相关问题
  • 第1题:

    有以下程序 struct S{ int n;int a[20];}; voidf(struct S*p) { int i,j,t; for(i=0;i<p->n-1;i++) for(j=i+1;j<p->n;j++) if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;} } main() { int i;struct S s={10,{2,3,l,6,8,7,5,4,10,9}}; f(&s); for(i=0;i<s.n;i++)printf("%d,",s.a[i]); } 程序运行后的输出结果是

    A.1,2,3,4,5,6,7,8,9,10,

    B.10,9,8,7,6,5,4,3,2,1,

    C.2,3,1,6,8,7,5,4,10,9,

    D.10,9,8,7,6,1,2,3,4,5,


    正确答案:A
    解析:本题中,在调用函数f()时,实参是结构体变量s的地址,所以在函数中对形参的改变会影响到实参的数值。函数f()实现的功能是把结构体的成员数组中的值按从小到大顺序进行排列。

  • 第2题:

    现有如下定义语句

    int*p,s[20],i;

    p=s;

    表示数组元素s[i]的表达式不正确的是

    A.*(s+i)

    B.*(p+i)

    C.*(s=s+i)

    D.*(p=p+i)


    正确答案:C

  • 第3题:

    三部门经济的恒等关系为( )。

    A.I+G=S+T

    B.C+I+G=C+S+T

    C.I+G=S+C

    D.C+G=S+T


    正确答案是:A.I+G=S+T

  • 第4题:

    下列程序的输出结果是( ) main() { char ch [2][5]={"6934","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0'; printf("%d\n",s); }

    A.6385

    B.69825

    C.63825

    D.693825


    正确答案:A

  • 第5题:

    有以下程序struct STU{ char name[10]; int num; int Score;};main(){ struct STU s[5]={{"YangSan",20041,703}, {"LiSiGuo",20042,580}, {"WangYin",20043,680}, {"SunDan",20044,550}, {"Penghua",20045,537}}, *p[5], *t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) { t=p[i]; p[i]=p[j]; p[j]=t; } printf("%d %d\n",s[1].Score,p[1]->Score);}程序运行后的输出结果是A.550 550 B.580 550 C.680 680 D.580 680


    正确答案:B
    本题实际上是按成员变量Score的值进行由小到大的排序,程序执行后,数组p[5]中各元素分别为:
    {{"Penghua",20045,537},
    {"SunDan",20044,550},
    {"LiSiGuo",20042,580},
    {"WangYin",20043,680},
    {"YangSan",20041,703}}
    所以,p[1]->Score=550,s[1].Score=580。故本题答案为B。

  • 第6题:

    有以下程序: struct STU { char name[10]; int num; int score; }; main() { struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580}, {"WangYin",20043,680},{"SunDan",20044,550), {'Penghua",20045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) { t=p[i];p[i]=p[j];p[i]=t; } printf("%d %d\n",s[1].Score,p[1]->Score); } 执行后输出结果是( )。

    A.550 550

    B.680 680

    C.580 550

    D.580 680


    正确答案:C
    解析:本题中首先定义了结构体类型STU,该结构体由一个长度为10的字符数组、两个整型变量num和Score组成。在主函数中,定义了一个长度为5的结构体数组s并赋初值,一个指针数组p和一个指针变量t,接着将数组s中各元素的地址依次赋给指针数组p中的各成员。然后通过两个for循环将数组p按Score的值从小到大的顺序排列。因此最后输出的 p[1]->Score的值为550,而数组s[1].Score的值为580,所以,4个选项中选项C符合题意。

  • 第7题:

    有以下程序 struct STU { char name[10];v int num; int Score; }; main( ) { struct STU s[5]={ {“YangSan”,20041,703},{“LiSiGuo”,20042,580}, {“wangYin”,20043,680},{“SunDan”,20044,550}, {“Penghua”,20045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) { t=p[i];p[i]=p[j];p[j]=t;} printf(“%d %d\n”,s[1].Score,p[1]->Score); } 执行后输出结果是( )

    A.550 550

    B.680 680

    C.580 550

    D.580 680


    正确答案:C
    解析:指针数组中的每个指针元素,分别指向数组s,然后按Score进行排序,数组s顺序本身没变,只是指针数组变化。

  • 第8题:

    有以下程序:include struct STU{char name[10]; int num; int Score;};main(){struct

    有以下程序: #include <stdio.h> struct STU { char name[10]; int num; int Score; }; main() { struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580}, {"WangYin",20043,680},{"SunDan",20044,550}, {"Penghua",20045,537}}, *p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) { t=p[i];p[i]=p[j];p[j]=t;} printf("%d%d\n",s[1].Score,p[1]->Score); } 执行后的输出结果是( )。

    A.550 550

    B.680 680

    C.580 550

    D.580 680


    正确答案:C
    解析:本题是按成员变量Score的值进行由小到大的排序,程序执行后p[5]中各元素分别为:{{"Penghua",20045,537},{"SunDan",20044,550},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"YangSan",20041,703}},所以P[1]->Score=550,s[1].Score=580。

  • 第9题:

    有以下程序 struct STU { char name[10]; int num; int Score; { main() { struct Stu s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580}, {"WangYin",20043,680},{"SunDan",20044,550}, {"Penghua",20045;537}},*p[5],*t; int i,j; for(i=0;i<5;i++)p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) {t=p[i];p[i]=p[j];p[i]=t;} printf("%d%d\n",s[1].Score,p[1]->Score); } 执行后输出结果是

    A.550550

    B.680680

    C.580550

    D.580680


    正确答案:C
    解析:本题中首先定义了结构体类型STU,该结构体由一个长度为10的字符数组、两个整型变量num和Score组成。在主函数中,定义了一个长度为5的结构体数组s并赋初值,一个指针数组p和一个指针变量t,接着将数组s中各元素的地址依次赋给指针数组p中的各成员。然后通过两个for循环将数组p按Score的值从小到大的顺序排列。因此最后输出的p[1]->Score的值为550,而数组s[1].Score的值为580。

  • 第10题:

    已知文法G[E]: E→T|E+T|E-TT→F|T*F|T/FF→(E)|I 该文法的句型T+T*F+I的最左素短语为__(1)__,句柄为__(2)__。 空白(2)处应选择()

    • A、T*F
    • B、句型中第2个T
    • C、句型中第1个T
    • D、I

    正确答案:C

  • 第11题:

    单选题
    文法G://S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()
    A

    i,P+T

    B

    P,P+T,i,P+T+i

    C

    P+T+i

    D

    P,P+T,i


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

  • 第12题:

    单选题
    文法G://E→E+T|TT→T*P|PP→(E)|i则句型P+T+i的句柄为()
    A

    P+T

    B

    P

    C

    P+T+i

    D

    i


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

  • 第13题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B

  • 第14题:

    递延期为m期,连续支付n期,每期支付A元,折现率为i的递延年金现值等于 ( )。

    A.A×(P/A,i,n)×(P/S,i,m)

    B.A×[(P/A,i,m+n)-(P/A,i,m)]

    C.A×[(P/A,i,m+n)×(P/A,i,m)]

    D.A×(S/A,i,n)×(P/S,i,m+n)


    正确答案:ABD
    解析:选项AB都是教材上已有的方法;选项D实际上是先求出递延年金在第m+n年末的终值,再将其乘以m+n期的复利现值系数从而求得递延年金现值。

  • 第15题:

    G:E→ET+|T T→TF*|F F→FP@|P P→E|i 求助 FET+T*I@ 是否是右句型,句柄是什么?


    答案:见解析
    解析:该句型对应的语法树如下:该句型相对于 E 的短语有 FF^^* ;相对于 T 的短语有 FF^^*,F; 相对于 F 的短语有 F^;F^^; 简单短语有 F;F^; 句柄为 F.


  • 第16题:

    有以下程序 include struct tt { int x; struct tt *y; } *p; s

    有以下程序 #include <stdio.h> struct tt { int x; struct tt *y; } *p; struct tt a[4]= {20,a+ 1,15,a+2,30,a+3,17,a}; main() { int i; p=a; for(i=1; i<-2; i++) { printf("%d,", p->x ); p=p->y; }

    A.20,30,

    B.30,17

    C.15,30,

    D.20,15,


    正确答案:D
    解析:题目中定义了一个全局结构体数组a,结构体中包含两个成员:一个int型变量x和一个自身类型指针y。所以,结构体数组a的初始化列表中每两个初始化一个结构体元素。主函数通过一个for循环,连续调用了两次输出函数printf(),每次输出p所指元素的x成员值。p初始化时指向数组 a的首地址,即a[0]的位置,所以第1次输出的值为20。然后又将a[0]的成员y的值赋给p,y在初始化时是a+1,所以p在第2次输出时指向的元素是a[1],故第2次输出的值为15。所以本题最终输出结果是“20,15,”,应该选择D。

  • 第17题:

    考察下列文法:G(VT,VN,E,P)

    其中:VT={+,*,(,),i}

    VN={E,T,F}

    E是开始符号;

    P:

    E→E+T|T

    T→T*F|F

    F→(E)|i

    F*F+T是该文法的一个句型,其中(53)是句柄,(54)是素短语。(55)是该句型的直接推导,(56)是该句型的最左推导。(57)是该文法的一个句子。

    A.F

    B.F*F

    C.F+T

    D.F*F+T


    正确答案:A

  • 第18题:

    下列程序运行后,输出结果是______。main(){ char ch[2][5]={"693","825"),*p[2]; int i,j,s=0; for (i=0;i<2;i++) p[i]=ch[i]; for (i=0;i<2;i++) for (j=0;p[i][j]>='0' &&p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0'; printf("%d\n",s);}

    A.6385

    B.22

    C.33

    D.693825


    正确答案:A

  • 第19题:

    有以下程序:struct S{int n;int a[20];};void f(struct S*P){int i,j,t;for(i=0;in-1;i++)fo

    有以下程序: struct S{int n;int a[20];}; void f(struct S*P) { int i,j,t; for(i=0;i<P->n-1;i++) for(j=j+1;j<P->n-1;j++) if(p->a[i]>p->a[j]) {t=P->a[i];p->a[i]=P->a[j];p->a[j]=t} } main() {int i;struct S s{10,{2,3,1,6,8,7,5,4,10,9}}; f(&s); for(i=0;i<s.n;i++)printf("%d",s.a[i]);} 程序运行后的输出结果是( )。

    A.3

    B.4

    C.5

    D.6


    正确答案:A
    解析:在主函数main()中定义了一个整型变量i和一个结构体变量s。f()函数中,定义了一个结构体指针类型的指针p,外层循环变量i表示数组的第i个元素,内层循环j表示数组的第i+1个元素,调用f()函数,通过指针变量p来引用结构体成员,并把它们进行从小到大排序,最后输出。

  • 第20题:

    有以下程序 struet STU { char name[10]; int num; int Score; }; main() { struct STU s[5]-{{"YangSan",20041,703},("LiSiGuo",20042,580}, {"WangYin",20043,680},{"SunDan",20044,550}, {"Penghua",20045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]-&s[i]; for(i 0;i<4;i++) for(j-i+1;j<5;j++) if(p[i] >Score>p[j] >Score) { t=p[i];p[i]=p[j];p[j]-t;} printf("%d %dkn",s[1].Score,p[1]->Score); } 执行后输出结果是

    A.550 550

    B.680 680

    C.580 550

    D.580 680


    正确答案:C
    解析:本题考核的知识点是结构体类型的定义、初始化以及结构体数组中元素的引用方法。本题中首先定义了结构体类型STU,该结构体由一个长度为10的字符数组、两个整型变量hum和Score组成.在主函数中,定义了一个长度为5的结构体数组s并赋初值,一个指针数组p和一个指针变量t,接着将数组s中各元素的地址依次赋给指针数组p中的各成员。然后通过两个for循环将数组p按Score的值从小到大的顺序排列。因此最后输出的p[1]->Seore的值为550,而数组s[1]。Score的值为580,所以,4个选项中选项C符合题意。

  • 第21题:

    文法G://E→E+T|TT→T*P|PP→(E)|i则句型P+T+i的句柄为()

    • A、P+T
    • B、P
    • C、P+T+i
    • D、i

    正确答案:B

  • 第22题:

    for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的时间复杂度为()


    正确答案:O(n)

  • 第23题:

    单选题
    已知文法G[E]: E→T|E+T|E-TT→F|T*F|T/FF→(E)|I 该文法的句型T+T*F+I的最左素短语为__(1)__,句柄为__(2)__。 空白(2)处应选择()
    A

    T*F

    B

    句型中第2个T

    C

    句型中第1个T

    D

    I


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