全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語言選擇結(jié)構(gòu)測(cè)試

字號(hào):

一、選擇題
    (1)當(dāng)把以下四個(gè)表達(dá)式用作if語句的控制表達(dá)式時(shí),有一個(gè)選項(xiàng)與其它三個(gè)選項(xiàng)含義不同,這個(gè)選項(xiàng)是
       A)k%2
    B)k%2==1
    C)(k%2)!=0
    D)!k%2==1
    (2)設(shè)有定義:int k=1,m=2; float f=7;,則以下選項(xiàng)中錯(cuò)誤的表達(dá)式是
    A)k=k>=k
    B)-k++
    C)k%int(f)
    D)k>=f>=m
    (3)設(shè)有定義:int a=2,b=3,c=4;,則以下選項(xiàng)中值為0的表達(dá)式是
    A)(!a==1)&&(!b==0)
    B)(a    C)a && b
    D)a||(b+b)&&(c-a)
    (4)設(shè)變量a、b、c、d和y都已正確定義并賦值。若有以下if語句
     if (a     if(c==d) y=0;
     else y=1;
    該語句所表示的含義是
    (5)有以下程序
    main()
    {
     int a,b,d=25;
     a=d/10%9;
     b=a&&(-1);
     printf("%d,%d\n",a,b);
    }
    程序運(yùn)行后的輸出結(jié)果是
    A)6,1
    B)2,1
    C)6,0
    D)2,0
    (6)有以下程序
    main()
    { int i=1,j=2,k=3;
     if(i++==1&&(++j==3||k++==3))
     printf("%d %d %d\n",i,j,k);
    }
    程序運(yùn)行后的輸出結(jié)果是
    A)1 2 3
    B)2 3 4
    C)2 2 3
    D)2 3 3
    (7)若x和y代表整型數(shù),以下表達(dá)式中不能正確表示數(shù)學(xué)關(guān)系|x-y|<10的是
    A) abs(x-y)<10
    B) x-y>-10&& x-y<10
    C) @(x-y)<-10||!(y-x)>10
    D) (x-y)*(x-y)<100
    (8)有以下程序
    main()
    {
    int a=3,b=4,c=5,d=2;
     if(a>b)
     if(b>c)
     printf("%d",d++ +1);
     else
     printf("%d",++d +1);
     printf("%d\n",d);
    }
    程序運(yùn)行后的輸出結(jié)果是
    A) 2
    B) 3
    C) 43
    D) 44 9)下列條件語句中,功能與其他語句不同的是
    A) if(a) printf("%d\n",x); else printf("%d\n",y);
    B) if(a==0) printf("%d\n",y); else printf("%d\n",x);
    C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);
    D) if(a==0) printf("%d\n",x); else printf("%d\n",y);
    (10)以下4個(gè)選項(xiàng)中,不能看作一條語句的是
    A) {;}
    B) a=0,b=0,c=0;
    C) if(a>0);
    D) if(b==0) m=1;n=2;
    (11)以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價(jià)的是
    A) if((a>B) &&(b>C) ) k=1; B) if((a>B) ||(b>C) ) k=1
                else k=0;
    C) if(a<=B) k=0;   D) if(a>B) k=1;
       else if(b<=C) k=1;   else if(b>C) k=1;
            else k=0;
    (12) 有以下程序
    main()
    {int a=1,b=2,m=0,n=0,k;
    k=(n=b>a)||(m=a    printf("%d,%d\n",k,m);
    }
    程序運(yùn)行后的輸出結(jié)果是
    A) 0,0
    B) 0,1
    C) 1,0
    D) 1,1
    (13) 有定義語句:int a=1,b=2,c=3,x; 則以下選項(xiàng)中各程序段執(zhí)行后,x的值不為3的是
    A) if (c   else if (b   else x=3;   else x=1;
    C) if (a<3) x=3; D) if (a    if (a<2) x=2; if (b    if (a<1) x=1; if (c
    (14)有以下程序
    main()
    { int i=1,j=1,k=2;
     if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);
    }
    執(zhí)行后輸出結(jié)果是
    A) 1,1,2  
    B) 2,2,1
    C) 2,2,2
    D) 2,2,3
    (15)有以下程序
    main()
    { int a=5,b=4,c=3,d=2;
     if(a>b>c)
    printf("%d\n",d);
     else if((c-1>=d)==1)
    printf("%d\n",d+1);
     else
    printf("%d\n",d+2)
    }
    執(zhí)行后輸出結(jié)果是
    A) 2   B) 3   C) 4   D) 編譯時(shí)有錯(cuò),無結(jié)果
    (16) 已有定義:int x=3,y=4,z=5;,則表達(dá)式!(x+y)+z-1 && y+z/2的值是
    A) 6 B) 0  C) 2 D) 1
    (17) 有一函數(shù), ,以下程序段中不能根據(jù)x值正確計(jì)算出y值的是
    A) if(x>0) y=1;   B) y=0;
    else if(x==0) y=0;   if(x>0) y=1;
    else y=-1;      else if(x<0) y=-1;
    C)y=0;      D)if(x>=0)
    if(x>=0);       if(x>0) y=1;
    if(x>0) y=1 ;      else y=0;
    else y=-1;      else y=-1; (18) 有以下程序
    main()
    { int a=15,b=21,m=0;
    switch(a%3)
    { case 0:m++;break;
    case 1:m++;
    switch(b%2)
    { default:m++;
    case 0:m++;break;
    }
    }
    printf(“%d\n”,m);
    }
     程序運(yùn)行后的輸出結(jié)果是
    A) 1   B) 2   C) 3   D) 4
    (19) 以下程序的輸出結(jié)果是
    main()
    { int a=5,b=4,c=6,d;
    printf("%d\n",d=a>b?(a>c?a:c):(b));
    }
    A) 5   B) 4 C) 6 D) 不確定
    (20) 以下程序的輸出結(jié)果是
    main()
    { int a=4,b=5,c=0,d;
    d=!a&&!b||!c;
    printf("%d\n",d);
    }
    A) 1 B) 0 C) 非0的數(shù) D) -1
    (21) 設(shè) a、b、C、d、m、n均為 int型變量,且 a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達(dá)式 (m=a>b)&&(n=c>d)運(yùn)算后,n的值位為
    A) 0   B) 1   C)2     D) 3
    (22) 閱讀以下程序:
    main()
    { int x;
    scanf(“%d”,&x);
    if(x--<5) printf(“%d”’x);
    else printf(“%d”’x++);
    }
    程序運(yùn)行后,如果從鍵盤上輸人5,則輸出結(jié)果是
    A)3    B) 4   C) 5    D) 6
    (23) 假定w、x、y、z、m均為int型變量,有如下程序段:
    w=1; x=2; y=3; z=4;
    m=(w    則該程序運(yùn)行后,m的值是
    A) 4    B) 3    C) 2    D) 2
    (24) 設(shè)x、y、t均為int型變量,則執(zhí)行語句:x=y=3;t=++x||++y;后,y的值為
    A) 不定值  B) 4   C) 3   D) 1
    (25) 若執(zhí)行以下程序時(shí)從鍵盤上輸入9,則輸出結(jié)果是
    A) 11  B) 10   C) 9  D) 8
    Main0
    { int n;
     scanf(“%d”,&n);
     if(n++<10) printf(“%d\n”,n);
     else printf(“%d\n”,n--);
    }
    (26) 若a、 b、c1、c2、x、y、均是整型變量,正確的switch語句是
    A) swich(a+b);      B) switch(a*a+b*b)
       { case 1:y=a+b; break; {case 3:
       case 0:y=a-b; break; case 1:y=a+b;break;
     }     case 3:y=b-a,break;
                    }
    C) switch a      D) switch(a-b)
        { case c1 :y=a-b; break {default:y=a*b;break
       case c2: x=a*d; break case 3:case 4:x=a+b;break
       default:x=a+b;   case 10:case 11:y=a-b;break;
        }    } (27) 能正確表示邏輯關(guān)系:“a≥=10或a≤0”的C語言表達(dá)式是
    A) a>=10 or a<=0
    B) a>=0|a<=10
    C) a>=10 &&a<=0
    D) a>=10‖a<=0
    (28) 有如下程序
    main0
    { int x=1,a=0,b=0;
    switch(x){
    case 0: b++;
    case 1: a++
    case 2: a++;b++
    }
    printf(“a=%d,b=%d\n”,a,b);
    }
    該程序的輸出結(jié)果是
    A) a=2,b=1
    B) a=1,b=1
    C) a=1,b=0
    D) a=2,b=2
    (29) 有如下程序
    main0
    { float x=2.0,y;
    if(x<0.0) y=0.0;
    else if(x<10.0) y=1.0/x;
    else y=1.0;
    printf(“%f\n”,y);
    }
    該程序的輸出結(jié)果是
    A) 0.000000
    B) 0.250000
    C) 0.500000
    D) 1.000000
    (30) 有如下程序
    main0
    { int a=2,b=-1,c=2;
    if(a    if(b<0) c=0;
    else c++
    printf(“%d\n”,c);
    }
    該程序的輸出結(jié)果是
    A) 0 B) 1 C) 2 D) 3
    (31) 設(shè) int x=1, y=1; 表達(dá)式(!x||y--)的值是
    A) 0   B) 1 C) 2 D) -1
    (32) 與 y=(x>0?1:x<0?-1:0);的功能相同的if語句是
     A) if (x>0) y=1; B) if(x)
     else if(x<0)y=-1; if(x>0)y=1;
     else y=0;  else if(x<0)y=-1;
        else y=0;
     C) y=-1 D) y=0;
     if(x)   if(x>=0)
     if(x>0)y=1; if(x>0)y=1;
     else if(x==0)y=0; else y=-1;
     else y=-1;
     (33) 語句:printf("%d",(a=2)&&(b= -2);的輸出結(jié)果是
    A) 無輸出
    B) 結(jié)果不確定
    C) -1
    D) 1
    (34) 當(dāng)c的值不為0時(shí),在下列選項(xiàng)中能正確將c的值賦給變量a、b的是
    A) c=b=a;
    B) (a=c) ‖(b=c) ;
    C) (a=c) &&(b=c);
    C) a=c=b;
    (35) 能正確表示a和b同時(shí)為正或同時(shí)為負(fù)的邏輯表達(dá)式是
    A) (a>=0‖b>=0)&&(a<0‖b<0)
    B) (a>=0&&b>=0)&&(a<0&&b<0)
    C) (a+b>0)&&(a+b<=0)
    D) a*b>0
    (36) 以下程序的輸出結(jié)果是
    A) -1 1   B) 0 1   C) 1 0 D) 0 0
     main( )
     { int a= -1,b=1,k;
     if((++a<0)&& ! (b-- <=0))
     printf("%d %d\n",a,b);
     else
     printf("%d %d\n",b,a);
     }
    (37) 以下程序輸出結(jié)果是
    A) 7  B) 6 C) 5 D) 4
     main()
     { int m=5;
     if(m++>5) printf("%d\n",m);
     esle printf("%d\n",m- -);
     }
    (38) 當(dāng)a=1,b=3,c=5,d=5時(shí),執(zhí)行下面一段程序后,x的值為
    A) 1  B) 2 C) 3 D) 6
     if(a     if(c     else
     if(a     if(b     else x=3;
     else x=6;
     else x=7;
    (39) 表示關(guān)系x<=y<=z的c語言表達(dá)式為
    A) (X<=Y)&&(Y<=Z)
    B) (X<=Y)AND(Y<=Z)
    C) (X<=Y<=Z)
    D) (X<=Y)&(Y<=Z)(40) 有以下程序
     #include
     main()
     { int a,b,c=246;
     a=c/100%9;
     b=(-1)&&(-1);
     printf("%d,%d\n",a,b);
     }
    輸出結(jié)果是
    A) 2,1
    B) 3,2
    C) 4,3
    D) 2,-1
    (41) 設(shè)a為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系:1010&&a>15
    D)!(a<=10)&&!(a>=15)
    (42) 若有以下定義:
    float x;int a,b;
    則正確的switch 語句是
    A)switch(x)     B)switch(x)
    { case1.0:printf("*\n"); { case1,2:printf("*\n");
     case2.0:printf("**\n"); case3:printf("**\n");
     }    }
    C)switch (a+b)    D)switch (a+b);
    { case 1:printf("\n");  { case 1:printf(."*\n");
     case 1+2:printf("**\n"); case 2:printf("**\n");
     }    }
    (43) 假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是
     a=b=c=0;x=35;
     if(!a)x--;
     else if(b);
     if(c)x=3;
     else x=4;
    A)34 B)4 C)35 D)3
    (44) 在以下一組運(yùn)算符中,優(yōu)先級(jí)的運(yùn)算符是
    A)<=   B)=  C)% D)&&
    (45) 表達(dá)式:10!=9的值是
    A) true   B) 非零值 C) 0 D) 1
    (46) 在下列選項(xiàng)中,不正確的賦值語句是
    A) ++t;
    B) n1=(n2=(n3=0));
    C) k=i==j;
    D) a=b+c=1;
    (47) 能正確表示a≥10或a≤0的關(guān)系表達(dá)式是
    A)a>=10 or a<=0
    B)a>=10│a<=0
    C)a>=10││a<=0
    D)a>=10 ││a<=0
    (48) 為表示關(guān)系x≥y≥z,應(yīng)使用C語言表達(dá)式
    A) (x>=y)&&(y>=z)
    B(x>=y)AND(y>=z)
    C)(x>=y>=z)
    D)(x>=y)&(y>=z)
    (49) 兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和4,則輸出結(jié)果是
    main( )
    { int x;
    scanf("%d",&x);
    if(x + + >5) printf("%d",x);
    else printf("%d\n",x - -); }
    A) 7和5
    B) 6和3
    C) 7和4
    D) 6和4
    (40) 有以下程序
     #include
     main()
     { int a,b,c=246;
     a=c/100%9;
     b=(-1)&&(-1);
     printf("%d,%d\n",a,b);
     }
    輸出結(jié)果是
    A) 2,1
    B) 3,2
    C) 4,3
    D) 2,-1
    (41) 設(shè)a為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系:1010&&a>15
    D)!(a<=10)&&!(a>=15)
    (42) 若有以下定義:
    float x;int a,b;
    則正確的switch 語句是
    A)switch(x)     B)switch(x)
    { case1.0:printf("*\n"); { case1,2:printf("*\n");
     case2.0:printf("**\n"); case3:printf("**\n");
     }    }
    C)switch (a+b)    D)switch (a+b);
    { case 1:printf("\n");  { case 1:printf(."*\n");
     case 1+2:printf("**\n"); case 2:printf("**\n");
     }    }
    (43) 假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是
     a=b=c=0;x=35;
     if(!a)x--;
     else if(b);
     if(c)x=3;
     else x=4;
    A)34 B)4 C)35 D)3
    (44) 在以下一組運(yùn)算符中,優(yōu)先級(jí)的運(yùn)算符是
    A)<=   B)=  C)% D)&&
    (45) 表達(dá)式:10!=9的值是
    A) true   B) 非零值 C) 0 D) 1
    (46) 在下列選項(xiàng)中,不正確的賦值語句是
    A) ++t;
    B) n1=(n2=(n3=0));
    C) k=i==j;
    D) a=b+c=1;
    (47) 能正確表示a≥10或a≤0的關(guān)系表達(dá)式是
    A)a>=10 or a<=0
    B)a>=10│a<=0
    C)a>=10││a<=0
    D)a>=10 ││a<=0
    (48) 為表示關(guān)系x≥y≥z,應(yīng)使用C語言表達(dá)式
    A) (x>=y)&&(y>=z)
    B(x>=y)AND(y>=z)
    C)(x>=y>=z)
    D)(x>=y)&(y>=z)
    (49) 兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和4,則輸出結(jié)果是
    main( )
    { int x;
    scanf("%d",&x);
    if(x + + >5) printf("%d",x);
    else printf("%d\n",x - -); }
    A) 7和5
    B) 6和3
    C) 7和4
    D) 6和4 (50) 以下程序的輸出結(jié)果是
    main( )
    { int a=-1,b=4,k;
    k=(+ +a〈0)&&!(b - -〈=0);
    printf("%d%d%d\n",k,a,b); }
    A) 104
    B) 103
    C) 003
    D) 004
    (51) 下面的程序
    A) 有語法錯(cuò)誤不能通過編譯
    B) 輸出* * * *。
    C) 可以通過編譯,但是不能通過連接,因而不能運(yùn)行。
    D) 輸出# # # #。
    main()
    { int x=3,y=0,z=0;
    if(x=y+z)printf("* * * *");
    else printf("# # # #");}
    (52) 若執(zhí)行下面的程序時(shí)從鍵盤上輸入5,則輸出是
    A) 7 B) 6 C) 5 D) 4
    main()
    { int x;
    scanf("%d",&x);
    if(x++>5) printf("%d\n",x);
    else printf("%d\n",x--);}
    (53) 下面程序的輸出是
    A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2
    main()
    { int a=-1, b=4,k;
    k=(a++<=0)&&(!(b--<=0));
    printf("%d %d %d\n",k,a,b);}
    (54) 下面的程序片段所表示的數(shù)學(xué)函數(shù)關(guān)系是上面程序片段的輸出結(jié)果是
    (55) 下面程序的輸出是
    A) -1 B) 0 C) 1 D) 不確定的值
    main()
    { int x=100, a=10, b=20, ok1=5, ok2=0;
    if(a    if(b!=15)
    if(! ok1)
    x=1;
    else
    if(ok2)x=10;
    x=-1;
    printf("%d\n",x);}
    (56) 設(shè)a、b和c都是int型變量,且a=3,b=4,c=5,則下面的表達(dá)式中,值為0的表達(dá)式是
    A) ’a’&&’b’
    B) a<=b
    C) a||b+c&&b-c
    D) !((a    (57) 請(qǐng)讀程序:
    #include
    main()
    { float x,y;
    scan("%f",&x);
    if(x<0.0) y=0.0
    else if((x<5.0)&&(x!=2.0))
    y=1.0/(x+2.0);
    else if (x<10.0) y=1.0/x;
    else y=10.0;
    printf("%f\n",y);
    }
    若運(yùn)行時(shí)從鍵盤上輸入2.0(表示回車),則上面程序的輸出結(jié)果是
    A) 0.000000
    B) 0.250000
    C) 0.500000
    D) 1.000000
    (58) 請(qǐng)讀程序:
    #include
    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;
    }
    printf("a=%d, b=%d\n",a,b);
    }
    上面程序的輸出結(jié)果是
    A) a=2, b=1
    B) a=1, b=1
    C) a=1, b=0
    D) a=2, b=2
    (59)以下程序的輸出結(jié)果是 【59】 。
    # include
    main()
    { int a ,b,d=241;
     a=d/100%9;
     b=(-1)&&(-1);
     printf("%d,%d\n",a,b); }
    A) 6,1
    B) 2,1
    C) 6,0
    D) 2,0
    (60) 若k是int型變量,且有下面的程序片段:
    k=-3
    if(k<=0) printf("####")
    else printf("&&&&");
    上面程序片段的輸出結(jié)果是
    A) ####
    B) &&&&
    C) ####&&&&
    D) 有語法錯(cuò)誤,無輸出結(jié)果 二、填空題
    (1)以下程序運(yùn)行后的輸出結(jié)果是 【1】 。
     main()
     { int a=1,b=2,c=3;
     if(c=a) printf("%d\n",c);
     else printf("%d\n",b);
     }
    (2)以下程序運(yùn)行后的輸出結(jié)果是
    main()
    {
     int a=3,b=4,c=5,t=99;
     if(b if(a     printf("%d%d%d\n",a,b,c);
    }
    (3)以下程序運(yùn)行后的輸出結(jié)果是
    main()
    {
     int a,b,c
     a=10;b=20;c=(a%b<1)||(a/b>1);
     printf("%d %d %d\n",a,b,c);
    }
    (4)以下程序運(yùn)行后的輸出結(jié)果是 【4】 。
    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;
     }
     printf("%d %d\n",a,b);
    }
    (5)有以下程序
    main( )
    { int n=0,m=1,x=2;
     if(!n) x-=1;
     if(m) x-=2;
     if(x) x-=3;
     printf(“%d\n”,x);
    }
    執(zhí)行后輸出結(jié)果是【5】 。
    (6) 以下程序運(yùn)行后的輸出結(jié)果是 【6】 。
    main()
    { int p=30;
    printf (“%d\n”,(p/3>0 ? p/10 : p%3));
    }
    (7) 以下程序運(yùn)行后的輸出結(jié)果是【7】 。
    main()
    { int a=1, b=3, c=5;
    if (c=a+b) printf("yes\n");
    else printf("no\n");
    }
    (8)若有以下程序
    main()
    { int p,a=5;
     if(p=a!=0)
     printf("%d\n",p);
     else
     printf("%d\n",p+2);
    }
    執(zhí)行后輸出結(jié)果是 【8】 。
    (9)若有以下程序
    main()
    { int a=4,b=3,c=5,t=0;
     if(a     if(a     printf("%d %d %d\n",a,b,c);
    }
    執(zhí)行后輸出結(jié)果是 【9】 。
    (10)以下程序運(yùn)行后的輸出結(jié)果是 [10] 。
     main()
    { int x=10,y=20,t=0;
    if(x==y)t=x;x=y;y=t;
    printf(“%d,%d \n”,x,y);
    }
    (11) 若從鍵盤輸入58,則以下程序輸出的結(jié)果是 【11】 。
    main()
    { int a;
    scanf("%d",&a);
    if(a>50) printf("%d",a);
    if(a>40) printf("%d",a);
    if(a>30) printf("%d",a);
    }
    (12) 以下程序輸出的結(jié)果是【12】 。
    main()
    { int a=5,b=4,c=3,d;
    d=(a>b>c);
    printf("%d\n",d);
    }
    (13)設(shè)y是int型變量,請(qǐng)寫出判斷y為奇效的關(guān)系表達(dá) 【13】 。
    (14) 表示“整數(shù)x的絕對(duì)值大于5”時(shí)值為“真”的C語言表達(dá)式是 [14] 。
    (15) 若x為int類型,請(qǐng)以最簡(jiǎn)單的形式寫出與邏輯表達(dá)式!x等價(jià)的C語言關(guān)系表達(dá)式 [15] 。
    (16)表示條件:10    (17) 條件“20    一、選擇題
    01) D   02) C   03) A   04) C   05) B
    06) D   07) C   08) A   09) D   10) D
    11) A   12) C   13) C   14) C   15) B
    16) D   17) C   18) A   19) C   20) A
    21) C   22) B   23) D   24) C   25) B
    26) D   27) D   28) A   29) C   30) C
    31) B   32) A   33) D   34) C   35) D
    36) C   37) B   38) B   39) A   40) A
    41) A   42) C   43) B   44) C   45) D
    46) D   47) D   48) A   49) A   50) D
    51) D   52) B   53) C   54) C   55) A
    56) D   57) C   58) A   59) B   60) D
    二、填空題
    (1) 1
    (2) 4599
    (3) 10 20 0
    (4) 2 1
    (5) -4
    (6) 3
    (7) yes
    (8) 1
    (9) 5 0 3
    (10) 20,0
    (11) 585858
    (12) 0
    (13) (y%2)!==1或y%2或(y%2)!=0
    (14) x>5||x<-5
    (15) x==0||x==1
    (16) (x>10 && x<100)││x<0 或(1010 && x<100) 或 0>x││(10< && x<100)
    (并且括號(hào)有無都可以)
    (17) ((20