亚洲AV乱码一区二区三区女同,欧洲在线免费高清在线a,中文字幕丝袜四区,老少配老妇熟女中文高清

<s id="38axe"><nobr id="38axe"></nobr></s><abbr id="38axe"><u id="38axe"></u></abbr>

<sup id="38axe"></sup>
    <acronym id="38axe"></acronym>
  • <s id="38axe"><abbr id="38axe"><ins id="38axe"></ins></abbr></s>
    
    
        <s id="38axe"></s>
        違法信息舉報 客服熱線:400-118-7898
        廣告
        ?
        專接本欄目測試廣告

        ?2022年湖北專升本C語言程序設(shè)計模擬題(2)

        普通專升本 責任編輯:管理員 2021-12-10

        摘要:本文是2022年湖北專升本C語言程序設(shè)計模擬題(2),有打算報考湖北2022年專升本需要考核C語言程序設(shè)計的考生可以收藏下來參考一下。下面是具體內(nèi)容。

        第四章 邏輯運算和判斷選取控制

        4.1 選擇題

        4.1邏輯運算符兩則運算對象的數(shù)據(jù)類型 。

        A)只能是0或1 B)只能是0或非0正數(shù)

        C)只能是整型或字符型數(shù)據(jù) D)可以是任何類型的數(shù)據(jù)

        參考答案:D

        參考分析:c語言中沒有專用的邏輯量,任何數(shù)值類型的數(shù)據(jù)都可以作為邏輯數(shù)據(jù)使用,判斷時0為假,非零為真,計算時真置1,假置0。

        4.2以下關(guān)于運算符優(yōu)先順序的描述中正確的是

        A)關(guān)系運算符<算術(shù)運算符<賦值運算符<邏輯運算符

        B)邏輯運算符<關(guān)系運算符<算術(shù)運算符<賦值運算符

        C)賦值運算符<邏輯運算符<關(guān)系運算符<算術(shù)運算符

        D)算術(shù)運算符<關(guān)系運算符<賦值運算符<邏輯運算符

        參考答案:C

        4.3 下列運算符中優(yōu)先級最高的是 。

        A)< B)+ C)&& D)!=

        參考答案:B

        4.4能正確表示“當x的取值在[1,10]和[200,210]范圍內(nèi)為真”的C語言表達式為 。

        A) (x>=1)&&(x

        B) (x>=1)&&(x

        C) (x>=1)||(x

        D) (x>=1)||(x

        參考答案:B

        參考分析:C語言中實際上與運算和或運算優(yōu)先級相等,由于C采用短路算法,所以不會影響B(tài)的結(jié)果,即不需要改成((x>=1)&&(x

        4.5 表示圖中坐標軸上陰影部分正確的表達式是 。

        | | |

        a b c

        A)(x

        C)(x

        參考答案:C

        4.6判斷char型變量ch是否為大寫字母的正確表達式為 。

        A)'A'<=ch

        C) (ch>='A')&&(ch<='Z') D)('A'

        參考答案:C

        4.7 有int x=3,y=4,z=5;則下面表達式中值為0的是 。

        A)'x'&&'y' B)x<=y C)x||y+z&&y-z D)!((x

        參考答案:D

        4.8 已知x=43,ch='A',y=0;則表達式(x>=y&&ch<'B'&&!y)的值是 。

        A)0 B)語法錯誤 C)1 D)"假"

        參考答案:C

        4.9若希望當A的值為奇數(shù)時,表達式的值為“真”,A的值為偶數(shù)時,表達式的值為“假”。則以下不能滿足要求的表達式是 。

        A)A%2= =1 B)!(A%2= =0) C)!(A%2) D)A%2

        參考答案:C

        4.10設(shè)有:int a=1,b=2,c=3,d=4,m=2,n=2;執(zhí)行(m=a>b)&&(n=c>d)后n的值為 。

        A)1 B)2 C)3 D)4

        參考答案:B

        參考分析:本題為標準的短路算法,由于第一個表達式m=a>b為真,故第二個表達式n=c>d被短路不再計算。因此,n值仍然保持原來的值2不變。

        4.11判斷char型變量ch是否為小寫字母的正確表達式為 。

        A)'a'<=ch

        C) (ch>='a')||(ch

        參考答案:D

        4.12 以下程序的運行結(jié)果是 。

        #include

        main()

        {int a,b,d=241;

        a=d/100%9;

        b=(-1)&&(-1);

        printf("%d,%d",a,b);

        }

        A)6,1 B)2,1 C)6,0 D)2,0

        參考答案:B

        參考分析:計算時,非零為真。

        4.13 執(zhí)行以下語句后a的值為 ,b的值為 。

        int a,b,c;

        a=b=c=1;

        ++a||++b&&++c;

        A)0 B)1 C)2 D)錯誤

        參考答案:C B

        參考分析:c語言在計算表達式時采用短路算法。

        4.13-改 執(zhí)行以下語句后,a,b,c的值分別為 。

        int a,b,c;

        a=b=c=1;

        ++a||++b&&++c;

        A)1,1,1 B)2,1,1 C)2,2,1 D)2,2,2

        參考答案:B

        4.14 執(zhí)行以下語句后a的值為 ,b的值為 。

        int a=5,b=6,w=1,x=2,y=3,z=4;

        (a=w>x)&&(b=y>z);

        (1)A)5 B)0 C)2 D)1

        (2)A)6 B)0 C)1 D)4

        參考答案:B A

        參考分析:短路算法。

        4.15 以下不正確的if語句形式是 。

        A)if (x>y&&x!=y);

        B)if (x==y) x+=y;

        C)if(x!=y) scanf("%d",&x) else scanf("%d",&y);

        D)if(x

        參考答案:C

        4.16 下列運算符中優(yōu)先級最低的是 ,優(yōu)先級最高的是 。

        A)? : B)&& C)+ D)!=

        參考答案:A C

        4.17 已知int x=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是 。

        if(x>y)

        z=x;x=y;y=z;

        A)10,20,30 B)20,30,30 C)20,30,10 D)20,30,20

        參考答案:C

        4.18 以下if語句語法正確的是 。

        A)if (x>0) printf("%f",x) else printf("%f",-x);

        B)if(x>0){x=x+y;printf("%f",x);} else printf("%f",-x);

        C)if(x>0){x=x+y;printf("%f",x);};else printf("%f",-x);

        D)if(x>0){x=x+y;printf("%f",x)} else printf("%f",-x);

        參考答案:B

        4.19有程序:main()

        {int a=5,b=1,c=0;

        if (a=b+c) printf("\n");

        else printf("$$$\n");}

        該程序 。

        A)有語法錯誤不能通過編譯 B)可以通過編譯,但不能通過連接

        C)輸出: D)輸出:$$$

        參考答案:C

        參考分析:注意條件表達式不是a= =b+c。

        4.20 以下程序的運行結(jié)果是 。

        main()

        {int m=5;

        if(m++>5) printf("%d",--m);

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

        }

        A)4 B)5 C)6 D)7

        參考答案:C

        參考分析:m先與5進行關(guān)系比較,然后進行增量運算,m值為6,因比較結(jié)果為假,執(zhí)行else,輸出為6,m為7。

        4.21 當a=1,b=3,c=5,d=4時,執(zhí)行完下面一段程序后x的值是 。

        if(a

        if(c

        else

        if(a

        if(b

        else x=3;

        else x=6;

        else x=3;

        A)1 B2 C)3 D)6

        參考答案:B4.22有函數(shù)關(guān)系如下,能正確表示該關(guān)系的程序段是 。

        xy

        x<0x-1

        x=0x

        x>0x+1

        A)y=x+1; B)y=x-1;

        if(x>=0) if(x!=0)

        if(x= =0) y=x; if (x>0) y=x+1;

        else y=x-1; else y=x;

        C)if (x<=0) D) y=x;

        if (x<0) y=x-1; if(x<=0)

        else y=x; if (x<0) y=x-1;

        else y=x+1 else y=x+1;

        參考答案:C

        4.23 以下程序的輸出結(jié)果是 。

        main()

        {int a=100,x=10,y=20,ok1=5,ok2=0;

        if(x

        if(y!=10)

        if(!ok1)

        a=1;

        else

        if(ok2) a=10;

        a=-1;

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

        }

        A)1 B)0 C)-1 D)值不確定

        參考答案:C

        參考分析:無論前面的分支如何執(zhí)行,由于a=-1和上面的語句為順序關(guān)系,因此不會影響到a的值。

        4.24 以下程序的輸出結(jié)果是 。

        main()

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

        if(x

        if(y<0) z=0;

        else z+=1;

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

        }

        A)3 B)2 C)1 D)0

        參考答案:B

        4.25為了避免在嵌套的條件語句if-else中產(chǎn)生二義性,C語言規(guī)定:else子句總是與 配對。

        A)縮排位置相同的if B)其之前最近的沒有else配對的if

        C)其之后最近的if D)同一行上的if

        參考答案:B

        參考分析:本題表述不嚴謹。

        4.26以下不正確的語句為 。

        A)if (x>y);

        B)if (x=y)&&(x!=0) x+=y;

        C)if (x) z=z/x;

        D)if (x>y) {x++;y++;}

        參考答案:B

        4.27 請閱讀以下程序:

        #include

        main()

        {float a,b;

        scanf("%f",&a);

        if(a<0.0) b=0.0;

        else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0);

        else if(a<10.0) b=1.0/a;

        else b=10.0;

        printf("%f\n",b);

        }

        若運行時輸入2.0,則上面程序的輸出結(jié)果是 。

        A)0.000000 B)0.500000 C)1.000000 D)0.250000

        參考答案:B

        4.28 若有條件表達式(exp)?a++:b--,則以下表達式中能完全等價于表達式(exp)的是 。

        A)exp==0 B)exp!=0 C)exp==1 D)exp!=1

        參考答案:B

        參考分析:在C語言中,當一個表達式不等于0時,可以將不等于部分省略,其效果完全一樣。

        4.29 若運行時給變量輸入12,則以下程序的運行結(jié)果是 。

        main()

        {int x,y;

        scanf("%d",&x);

        y=x>12?x+10:x-12;

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

        }

        A)0 B)22 C)12 D)10

        參考答案:A

        參考分析:x>12為假,取x-12。

        4.30 以下程序的運行結(jié)果是 。

        main()

        {int k=4,a=3,b=2,c=1;

        printf("\n%d\n",k

        }

        A)4 B)3 C)2 D)1

        參考答案:D

        4.31執(zhí)行下列程序段后,變量a,b,c的值分別是 。

        int x=10,y=9;

        int a,b,c;

        a=(--x= =y++)?--x:++y;

        b=x++;

        c=y;

        A)a=9,b=9,c=9 B)a=8,b=8,c=10

        C)a=9,b=10,c=9 D)a=8,b=8,c=9

        參考答案:B

        參考分析:首先x進行--操作,x為9,然后與y進行等于比較,即9==9,然后y++為10。由于比較結(jié)果為真,故計算--x,為8,賦給a。

        4.32 閱讀以下程序,則執(zhí)行下面語句后m的值是 。

        int w=1,x=2,y=3,z=4,m;

        m=w

        m=m

        m=m

        A)1 B)2 C)3 D)4

        參考答案:A

        4.33 若有int w=1,x=2,y=3,z=4;則表達式w

        A)4 B)3 C)2 D)1

        參考答案:D

        4.34 執(zhí)行以下程序后的輸出結(jié)果是 。

        int w=3,z=7,x=10;

        printf("%d",x>10?x+100:x-10);

        printf("%d",w++||z++);

        printf("%d",!w>z);

        printf("%d",w&&z);

        A)0111 B)1111 C)0101 D)0100

        參考答案:C

        4.2 填空題

        4.35 若int a=3,b=2,c=1,f;表達式f=a>b>c的值是( )。

        參考答案:0

        參考分析:計算過程如下,a>b計算為真,然后計算 真(1)>c,結(jié)果為假

        4.36 若int a=5,b=4,c=2;表達式a>b!=c的值是( )。

        參考答案:1

        4.37 以下程序的運行結(jié)果是( )。

        #include

        main()

        {int x=1,y,z;

        x=3+2;

        printf("%d\t",x);

        x=y=z=5;

        printf("%d\t",x);

        x=y==z;

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

        參考答案:5□□□□□□□25□□□□□□1(制表符為7個)

        4.38 在C語言中,表示邏輯“真”值用( )。

        參考答案:非0的數(shù)值。

        4.39 設(shè)y為int型變量,請寫出描述“y是奇數(shù)”的表達式( )。

        參考答案:y%2==1 y%2!=0 y%2 (y-1)%2==0 !(y%2==0)

        4.40 c語言提供的三種邏輯運算符是( )、( )和( )。

        參考答案:&& || !

        4.41 設(shè)x,y,z均為int型變量,請寫出描述“x或y中有一個小于z”的表達式( )。

        參考答案:x

        4.42設(shè)x,y,z均為int型變量,請寫出描述“x,y,z中有兩個為負數(shù)”的表達式( )。

        參考答案:x*y*z>=0&&((x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0))

        參考分析:原書提供的答案是(x<0&&y<0)||(x<0&&z<0)||(y<0&&z

        4.43 已知A=7.5,B=2,C=3.6,表達式A>B&&C>A||AB的值是( )。

        參考答案:0

        參考分析:在本表達式的計算過程中A

        4.44 若int a=6,b=4,c=2;表達式!(a-b)+c-1&&b+c/2的值是( )。

        參考答案:1

        4.45 若a=2,b=4,則表達式!(x=a)||(y=b)&&0的值是( )。

        參考答案:0

        4.46 若a=1,b=4,c=3,則表達式!(a

        參考答案:0

        4.47 若a=6,b=4,c=3,則表達式a&&b+c||b-c的值是( )。

        參考答案:1

        4.48 若a=5,b=2,c=1,則表達式a-b

        參考答案:0

        4.49 若a=3,b=4,c=5,則表達式a||b+c&&b的值是( )。

        參考答案:1

        4.50 條件“2

        參考答案:x>2&&x<3||x<-10

        4.51 當m=2,n=1,a=1,b=2,c=3時,執(zhí)行完d=(m=a!=b)&&(n=b>c)后,n的值為( ),m的值為( )。

        參考答案:0 1

        4.52 以下程序的運行結(jié)果是 。

        main()

        {int x,y,z;

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

        x=y--<=x||x+y!=z;

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

        }

        參考答案:1,1

        參考分析:這是兩個表達式的或運算,第一個表達式y(tǒng)--<=x相當于2<=1為假,y變量增為1,第二表達式x+y!=z相當于1+1!=3為真,故x的值為1。

        4.53 以下程序的運行結(jié)果是 。

        main()

        {int a1,a2,b1,b2;

        int i=5,j=7,k=0;

        a1=!k;

        a2=i!=j;

        printf("a1=%d\ta2=%d\n",a1,a2);

        b1=k&&j;

        b2=k||j;

        printf("b1=%d\tb2=%d\n",b1,b2);

        }

        參考答案:a1=1 a2=1

        b1=0 b2=1

        4.54 以下程序的運行結(jié)果是 。

        main()

        {int x,y,z;

        x=1;y=1;z=0;

        x=x||y&&z;

        printf("%d,%d",x,x&&!y||z);

        }

        參考答案:1,0

        參考分析:本題采用短路算法,由于x為真,后面的或和與運算均被短路。

        4.55 有int x,y,z;且x=3,y=-4,z=5,則表達式(x&&y)==(x||z)的值為( )。

        參考答案:1

        4.56 有int x,y,z;且x=3,y=-4,z=5,則表達式!(x>y)+y!=z)||(x+y)&&(y-z)的值為( )。

        參考答案:1

        4.57有int x,y,z;且x=3,y=-4,z=5,則表達式x++-y+(++z)的值為( )。

        參考答案:13

        4.58 有int a=3,b=4,c=5;則表達式a||b+c&&b==c的值為( )。

        參考答案:1

        4.59 有int a=3,b=4,c=5,x,y;則表達式!(x=a)&&(y=b)&&0的值為( )。

        參考答案:0

        4.60 有int a=3,b=4,c=5;則表達式!(a+b)+c-1&&b+c/2的值為( )。

        參考答案:1

        4.61 若運行時輸入:16,則以下程序的運行結(jié)果是 。

        #include

        void main(void)

        {int year;

        printf("Input your year:");

        scanf("%d",&year);

        if (year>=18)

        printf("your $4.5 yuan/xiaoshi");

        else

        printf("your $3.0 yuan/xiaoshi");

        }

        參考答案:your $3.0 yuan/xiaoshi

        4.62 若運行時輸入:2,則以下程序的運行結(jié)果是 。

        #include

        void main(void)

        {char class;

        printf("Enter 1 for 1st class post or 2 for 2nd post");

        scanf("%c",&class);

        if (class=='1')

        printf("1st class postage is 19p");

        else

        printf("2nd class postage is 14p");

        }

        參考答案:2nd class postage is 14p

        4.63 若運行時輸入:4.4,則以下程序的運行結(jié)果是 。

        #include

        void main(void)

        {float costprice,sellingprice;

        printf("Enter Cost Price $:");

        scanf("%f",&costprice);

        if(costprice>=5)

        {sellingprice=costprice+costprice*0.25;

        printf("Selling Price(0.25)$%6.2f",sellingprice);

        }

        else

        {sellingprice=costprice+costprice*0.30;

        printf("Selling Price(0.30)$%6.2f",sellingprice);

        }

        }

        參考答案:Selling Price(0.30)$ 5.72

        4.64 以下程序的運行結(jié)果是 。

        main()

        {if (2*2==5<2*2==4)

        printf("T");

        else

        printf("F");

        }

        參考答案:F

        4.65 請閱讀以下程序,若運行時輸入:1605時,程序的運行結(jié)果是 。

        main()

        {int t,h,m;

        scanf("%d",&t);

        h=t/100%12;

        if(h==0) h=12;

        printf("%d:",h);

        m=t%100;

        if(m<10) printf("0");

        printf("%d",m);

        if (t<1200||t==2400)

        printf("AM");

        else

        printf("PM");

        }

        參考答案:4:05PM

        4.66 以下程序?qū)崿F(xiàn):輸入園的半徑r和運算標志m,按照運算標志進行指定計算,請?zhí)羁铡?/p>

        標志 運算

        a 面積

        c 周長

        b 二者均計算

        #define pi=3.14159

        main()

        {char m;

        float r,c,a;

        printf("Input mark a c or b && r\n");

        scanf("%c %f",&m,&r);

        if (【1】)

        {a=pi*r*r;printf("area is %f",a);}

        if (【2】)

        {c=2*pi*r;printf("circle is %f",c);}

        if (【3】)

        {a=pi*r*r;c=2*pi*r;

        printf("area && circle are %f %f",a,c);

        }

        }

        參考答案:【1】m=='a' 【2】m=='c' 【3】m=='b'

        4.67 若運行時輸入:5999,則以下程序的運行結(jié)果是 。

        main()

        {int x;

        float y;

        scanf("%d",&x);

        if(x>=0&&xx<=2999) y=18+0.12*x;

        if(x>=3000&&x<=5999) y=36+0.6*x;

        if(x>=6000&&x<=10000)y=54+0.3*x;

        printf("%6.1f",y);

        }

        參考答案:3635.4

        4.68 以下程序?qū)崿F(xiàn)輸出x,y,z三個數(shù)中的最大者。請分析程序填空。

        main()

        {int x=4,y=6,z=7;;

        int 【1】;

        if(【2】) u=x;

        else u=y;

        if (【3】) v=u;

        else v=z;

        printf("v=%d",v);

        }

        參考答案:【1】u,v 【2】x>y【3】u>z

        4.69 以下程序?qū)⑤斎氲娜齻€整數(shù)按從大到小順序輸出,請分析程序填空。

        main()

        {int x,y,z,c;

        scanf("%d%d%d",&x,&y,&z);

        if(【1】)

        {c=y;y=z;z=c;}

        if(【2】)

        {c=x;x=z;z=c;}

        if(【3】)

        {c=x;x=y;y=c;}

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

        }

        參考答案:【1】y

        4.70 以下程序?qū)斎氲膬蓚€整數(shù),按從大到小順序輸出,請分析程序填空。

        main()

        {int x,y,z;

        scanf("%d,%d",&x,&y);

        if(【1】)

        {z=x;【2】}

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

        }

        參考答案:【1】x

        4.71 以下程序?qū)斎氲囊粋€小寫字母進行循環(huán)后移5個位置后輸出。如'a'變成'f','w'變成'b'。請分析程序填空。

        #include

        main()

        {char c;

        c=getchar();

        if (c>='a'&&c<='u') 【1】;

        else if (c>='v'&&c<='z') 【2】;

        putchar(c);

        }

        參考答案:【1】c=c+5【2】c=c+6-26

        4.72 輸入一個字符,如果它是大寫字母,則把它變成小寫字母,如果它是一個小寫字母,則把它變成大寫字母,其它字符不變。請分析程序填空。

        main()

        {char ch;

        scanf("%c",&ch);

        if(【1】) ch=ch+32;

        else if(ch>='a'&&ch<='z') 【2】;

        printf("%c",ch);

        }

        參考答案:【1】ch>='A'&&ch<='Z'【2】ch=ch-32

        4.73 以下程序的運行結(jié)果是 。

        main()

        {int a,b,c;

        int s,w,t;

        s=w=t=0;

        a=-1;b=3;c=3;

        if(c>0) s=a+b;

        if(a<=0)

        {if(b>0)

        if(c<=0) w=a-b;

        }

        else if(c>0) w=a-b;

        else t=c;

        printf("%d %d %d",s,w,t);

        }

        參考答案:2 0 0

        4.74以下程序的運行結(jié)果是 。

        main()

        {int a,b,c,d;

        a=c=0;

        b=1;

        d=20;

        if(a) d=d-10;

        else if(!b)

        if(!c) d=15;

        else d=25;

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

        }

        參考答案:20

        4.75 以下程序的運行結(jié)果是 。

        #include

        main()

        {int x,y=1,z;

        if(y!=0) x=5;

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

        if(y==0) x=4;

        else x=5;

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

        x=1;

        if(y<0)

        if(y>0) x=4;

        else x=5;

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

        }

        參考答案:

        □□□□□□□□5

        □□□□□□□□5

        □□□□□□□□1

        *4.76以下程序的運行結(jié)果是 。

        #include

        main()

        {int x,y=-2,z=0;

        if((z=y)<0) x=4;

        else if(y==0) x=5;

        else x=6;

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

        if(z=(y==0))

        x=5;

        x=4;

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

        if(x=z=y) x=4;

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

        }

        參考答案:

        □□□□□□□□4□□□□□□□-2

        □□□□□□□□4□□□□□□□0

        □□□□□□□□4□□□□□□□-2

        *4.77 請閱讀以下程序,為使輸出時t值為4,輸入量a和b應(yīng)滿足的條件是 。

        main()

        {int s,t,a,b;

        scanf("%d,%d",&a,&b);

        s=1;t=1;

        if(a>0) s=s+1;

        if(a>b) t=s+t;

        else if(a==b) t=5;

        else t=2*s;

        printf("s=%d,t=%d",s,t);

        }

        參考答案:00&&a

        4.78 請閱讀下面的程序,為使輸出s=1,t=5的結(jié)果,輸入量a和b應(yīng)滿足的條件是 a=b<=0 。

        main()

        {int s,t,a,b;

        scanf("%d,%d",&a,&b);

        s=1;t=1;

        if(a>0) s=s+1;

        if(a>b) t=s+t;

        else if(a==b) t=5;

        else t=2*s;

        printf("s=%d,t=%d",s,t);

        4.79 下面程序根據(jù)以下函數(shù)關(guān)系,對輸入的每個x值,計算出y值。請分析程序填空。

        xy

        2

        -1

        x≤-1x-1

        main()

        {int x,y;

        scanf("%d",&x);

        if(【1】) y=x*(x+2);

        else if(【2】) y=x-1;

        else 【3】;

        if(y!=-1) printf("%d",y);

        else printf("error");

        }

        參考答案:【1】2

        4.80下面程序根據(jù)以下函數(shù)關(guān)系,對輸入的每個x值,計算出y值。請分析程序填空。

        xy

        x=a或x=-a0

        -a

        x

        #include

        main()

        {int x,a;

        float y;

        scanf("%d %d",&x,&a);

        if(【1】) y=0;

        else if(【2】) y=sqrt(a*a-x*x);

        else y=x;

        printf("%f",y);

        }

        參考答案:【1】x==-a||x==a【2】x>-a&&x

        *4.81 以下程序的功能是計算一元二次方程ax2+bx+c=0的根,請分析程序填空。

        #include

        main()

        {float a,b,c,t,disc,twoa,term1,term2;

        printf("Enter a,b,c:");

        scanf("%f %f %f",&a,&b,&c);

        if(【1】)

        if(【2】) printf("no answer due to input error.\n");

        else printf("the single root is %f\n",-c/b);

        else

        {disc=b*b-4*a*c;

        twoa=2*a;

        term1=-b/twoa;

        t=abs(disc);

        term2=sqrt(t)/twoa;

        if(【3】)

        printf("complex root\nreal part=%f imag part=%f\n",term1,term2);

        else

        printf("real roots\nroot1=%froot2=%f\n",term1+term2,term1-term2);

        }

        }

        參考答案:【1】a==0 fabs(a)<1e-4【2】b==0【3】disc<0

        4.82 以下程序根據(jù)輸入的三角形的三邊判斷是否能組成三角形,若可以則輸出它的面積和三角形的類型。請分析程序填空。

        #include "math.h"

        main()

        {float a,b,c,s,area;

        scanf("%f%f%f",&a,&b,&c);

        if(【1】)

        {s=(a+b+c)/2;

        area=sqrt(s*(s-a)*(s-b)*(s-c));

        printf("%f",area);

        if(【2】)

        printf("等邊三角形");

        else if(【3】)

        printf("等腰三角形");

        else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c=a*a))

        printf("直角三角形");

        else printf("一般三角形");

        }

        else printf("不能組成三角形");

        }

        參考答案:【1】a+b>c&&b+c>a&&c+a>b【2】a==b&&b==c

        【3】a==b||b==c||a==c

        4.83 某郵局對郵寄包裹有如下規(guī)定:若包裹的長寬高任一尺寸超過1米或重量超過30千克,不予郵寄;對可以郵寄的包裹每件收取手續(xù)費0.2元,在加上根據(jù)下表按重量wei計算的郵資。請分析程序填空。

        重量(千克)收費標準

        wei<100.80

        10

        20

        main()

        {float len,wei,hei,wid,mon,r;

        scanf("%f %f %f %f",&len,&wid,&hei,&wei);

        if(len>1||wid>1||hei>1||wei>30) 【1】;

        else if(wei<10) r=0.8;

        else if(wei<=20) r=0.75;

        else if(wei<=30) 【2】;

        if(r==-1) printf("error\n");

        else

        {【3】;printf("%f",mon);}

        }

        參考答案:【1】r=-1【2】r=0.70【3】m=0.2+r*wei

        **4.84 某服裝店經(jīng)營套服,也單件出售。若買的不少于50套每套80元;不足50套的每套90元;只買上衣每件60元;只買褲子每條45元。以下程序的功能是讀入所買上衣c和褲子t的件數(shù),計算應(yīng)付款m。請分析程序填空。

        main()

        {int c,t,m;

        printf("input the number of coat and trousers your want buy:\n");

        scanf("%d %d",&c,&t);

        if(【1】)

        if(c>=50) m=c*80;

        else m=c*90;

        else

        if(【2】)

        if(t>=50) m=t*80+(c-t)*60;

        else m=t*90+(c-t)*60;

        else

        if(【3】) m=c*80+(t-c)*45;

        else m=c*90+(t-c)*45;

        printf("cost=%d\n",m);

        }

        參考答案:【1】t==c 【2】c>t 【3】c>=50

        4.85 以下程序的功能是判斷輸入的年份是否是閏年。請分析程序填空。

        main()

        {int y,f;

        scanf("%d",&y);

        if(y%400==0) f=1;

        else if(【1】) f=1;

        else 【2】;

        if (f) printf("%d is",y);

        else printf("%d is not",y);

        printf(" a leap year.\n");

        }

        參考答案:【1】year%4== 0&&year%100!=0【2】f=0

        *4.86 以下程序段針對輸入的截止日期(年:yend,月:mend,日:dend)和出生日期(yman,mman,dman),計算出實際年齡。請分析程序填空。

        設(shè)有:int yend,mend,dend,yman,mman,dman;

        age=yend-yman;

        if(mend【1】)mman) age--;

        else if(mend【2】mman&&dend【3】dman)

        age--;

        參考答案:【1】<【2】==【3】<

        4.87 有四個數(shù)a,b,c,d,要求從大到小的順序輸出。請分析程序填空。

        main()

        {int a,b,c,d,t;

        scanf("%d %d %d %d",&a,&b,&c,&d);

        if(a

        if(【1】){t=c;c=d;d=t;}

        if(a

        if(【2】){t=b;b=c;c=t;}

        if(b

        if(c

        printf("%d %d %d %d",a,b,c,d);

        }

        參考答案:【1】c

        4.88 以下程序的運行結(jié)果是 。

        main()

        {int a=2,b=3,c;

        c=a;

        if(a>b) c=1;

        else if(a==b) c=0;

        else c=-1

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

        }

        參考答案:-1

        4.89 若a=1,b=2,則表達式a>b?a:b+1的值是 。

        參考答案:3

        4.90 若a=1,b=2,c=3,d=4,則表達式a>b?a:c>d?c:d的值是 。

        參考答案:4

        *4.91 設(shè)有變量定義:int a=10,c=9;則表達式(--a!=c++)?--a:++c的值是 。

        參考答案:11

        4.92 若有說明語句:int x=1,y=0;則表達式x>(y+x)?10:12.5>y++?'a':'A'的值是 。

        參考答案:'a'

        *4.93 若有說明語句:int a=1,b=0;則表達式++a*--a==b?12%5:'x'的值是 。

        參考答案:'x'

        4.94 若有x=1,y=2,z=3,則表達式(x

        參考答案:0

        **4.95 若有說明語句:int x=1,y=0;則表達式x-->(y+x)?5:25>y++?'1':'2'的值是 。

        參考答案:5

        參考分析:增量運算在條件運算的第一個表達式中時,關(guān)系運算符兩側(cè)各為一個處理單元。x--中的值是1,然后增為0,故y+x為0+0,因此整個表達式計算結(jié)果為真。

        4.96 以下程序的運行結(jié)果是 。

        #include

        main()

        {int a=-10,b=-3;

        printf("%d,",-a%b);

        printf("%d,",(a-b,a+b));

        printf("%d\n",a-b?a-b:a+b);

        }

        參考答案:1,-13,-7

        4.97以下程序的運行結(jié)果是 。

        main()

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

        y=y+z;

        x=x+y;

        printf("%d,",x

        printf("%d,",x

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

        }

        參考答案:3,2,3,3

        4.98 以下程序的運行結(jié)果是 。

        main()

        {int x,y,z;

        x=3;

        y=z=4;

        printf("%d,",(x>=y>=x)?1:0);

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

        }

        參考答案:0,1

        4.99 若運行時輸入:-2,則以下程序的輸出結(jié)果是 。

        main()

        {int a,b;

        scanf("%d",&a);

        b=(a>=0)?a:-a;

        printf("b=%d",b);

        }

        參考答案:b=2

        4.100 若運行時輸入:100,下面程序的運行結(jié)果是 。

        main()

        {int a;

        scanf("%d",&a);

        printf("%s",(a%2!=0)?"no":"yes");

        }

        參考答案:yes

        4.101 如果運行時輸入字符'Q',則以下程序的運行結(jié)果是 。

        main()

        {char ch;

        scanf("%c",&ch);

        ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

        ch=(ch>='a'&&ch<='z')?(ch-32):ch;

        printf("%c",ch);

        }

        參考答案:Q

        4.102 當運行時輸入:1992,則以下程序的運行結(jié)果是 。

        main()

        {int y,t;

        scanf("%d",&y);

        t=((y%4==0)&&(y%100!=0)||y%400==0)?1:0;

        if(t) printf("%d is",y);

        else printf("%d is not",y);

        printf("a leap year");

        }

        參考答案:1992 is a leap year

        4.103 以下程序是計算x,y,z三個數(shù)中最小的。請分析程序填空。

        main()

        {int x=4,y=5,z=8;

        int u,v;

        u=x

        v=u

        printf("%d",v);

        }

        參考答案:【1】x:y【2】u:z

        4.104 設(shè)有變量定義:int a=5,c=4;則(--a==++c)?--a:c++的值是【1】,此時c的存儲單元的值為【2】。

        參考答案:【1】5【2】6

        4.105 執(zhí)行以下程序后,a=【1】,b=【2】,c=【3】。

        int x=10,y=9;

        int a,b,c;

        a=(x-- == y++) ? x-- : y++;

        b=x++;

        c=y;

        參考答案:【1】10【2】9【3】11

        *4.106 設(shè)有int x=1,y=0;則以下表達式的值為 。

        x-->(y+x)?10:12.5>y++?'A':'Z'

        參考答案:10

        參考分析:在本題中x-->(y+x)的實際比較運算是1>0+0為真。

        *4.107 設(shè)有int x=0,y=1;則以下表達式的值為 。

        x++*x--!='y'?8-4:y

        參考答案:4

        參考分析:此處x++*x—實際計算為0*0。

        4.108 若運行時輸入:3 5/,則以下程序的運行結(jié)果是 。

        main()

        {float x,y;

        char o;

        double r;

        scanf("%f %f %c",&x,&y,&o);

        switch(o)

        {case '+':r=x+y;break;

        case '-':r=x-y;break;

        case '*':r=x*y;break;

        case '/':r=x/y;break;

        }

        printf("%f",r);

        }

        參考答案:0.600000

        4.109 根據(jù)以下嵌套的if語句所給條件,填寫switch語句,使它完成相同的功能。

        (假設(shè)mark的取值在1-100之間)

        if語句:

        if(mark<60) k=1;

        else if(mark<70) k=2;

        else if(mark<80) k=3;

        else if(mark<90) k=4;

        else k=5;

        switch語句:

        switch(【1】)

        {【2】k=1;break;

        case 6 :k=2;break;

        case 7 :k=3;break;

        case 8 :k=4;break;

        【3】k=5;

        }

        參考答案:【1】mark/10 【2】default: 【3】case 9:case 10:

        4.110 設(shè)有如下程序段,若grade的值為'C',則輸出結(jié)果是 。

        switch(grade)

        {case 'A':printf("85-100\n");

        case 'B':printf("70-84\n");

        case 'C':printf("60-69\n");

        case 'D':printf("<60\n");

        default:printf("error!\n");

        }

        參考答案:

        60-69

        <60

        error!

        4.111 以下程序段的運行結(jié)果是 。

        int x=1,y=0;

        switch(x)

        {case 1:

        switch(y)

        {case 0:printf("**1**\n");break;

        case 1:printf("**2**\n");break;

        }

        case 2:printf("**3**\n");

        }

        參考答案:

        **1**

        **3**

        4.112 根據(jù)以下函數(shù)關(guān)系,對輸入的每個x值,計算出相應(yīng)的y值。請分析程序填空。

        xy

        x<00

        0≤x<10x

        10≤x<2010

        20≤x<40-0.5x+20

        main()

        {int x,c;

        float y;

        scanf("%d",&x);

        if(【1】) c=-1;

        else c=【2】;

        switch(c)

        {case –1:y=0;break;

        case 0:y=x;break;

        case 1:y=10;reak;

        case 2:case 3:y=-0.5*x+20;break;

        default:y=-2;

        }

        if(【3】) printf("y=%f",y);

        else printf("error\n");

        }

        參考答案:【1】x<0 【2】x/10 【3】y!=-2

        4.113 以下程序的運行結(jié)果是 。

        main()

        {int a=2,b=7,c=5;

        switch(a>0)

        {case 1:switch(b<0)

        {case 1:printf("@");break;

        case 2:printf("!");break;

        }

        case 0:switch(c==5)

        {case 0:printf("*");break;

        case 1:printf("#");break;

        default:printf("#");break;

        }

        default:printf("&");

        }

        printf("\n");

        }

        參考答案:#&

        4.114 下面程序的運行結(jié)果是 。

        #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",a,b);

        }

        參考答案:a=2,b=1

        4.115 假設(shè)獎金稅率如下(a代表獎金,r代表稅率)

        a<500 r=0%

        500≤a<1000 r=5%

        1000≤a<2000 r=8%

        2000≤a<3000 r=10%

        3000≤a r=15%

        以下程序?qū)斎氲囊粋€獎金數(shù),求稅率和應(yīng)交稅款以及實得獎金數(shù)(扣除獎金稅后)。請分析程序填空。

        main()

        {float a,r,t,b;

        int c;

        scanf("%f",&a);

        if(a>=3000) c=6;

        else c=【1】;

        switch(c)

        {case 0:r=0;break;

        case 1:r=0.05;break;

        case 2:case 3:【2】;break;

        case 4:case 5:r=0.1;break;

        case 6:r=0.15;break;

        }

        t=a*r;

        b=a-t;

        printf("r=%f,t=%f,b=%f",r,t,b);

        }

        參考答案:【1】a/500 【2】r=0.08

        4.116 某個自動加油站有'a','b','c'三種汽油,單價分別為1.50,1.35,1.18(元/千克),也提供了“自己加”和“協(xié)助加”兩個服務(wù)等級。這樣用戶可以得到5%或10%的優(yōu)惠。本程序針對用戶輸入加油量a,汽油品種b和服務(wù)類型c('f'--自動,'m'--自己,'e'--協(xié)助),輸出應(yīng)付款m。請分析程序填空。

        main()

        {float a,r1,r2,m;

        char b,c;

        scanf("%f %c %c",&a,&b,&c);

        swith(b)

        {case 'a':r1=1.5;break;

        case 'b': 【1】 ;break;

        case 'c':r1=1.18;break;

        }

        switch(c)

        {case 'f':r2=0;break;

        case 'm':r2=0.05;break;

        case【2】:r2=0.1;break;

        }

        m=【3】;

        printf("%f",m);

        }

        參考答案:【1】r1=1.35【2】'e'【3】a*r1*(1-r2)

        4.117 以下程序計算某年某月有幾天。其中判別閏年的條件是:能被4整除但不能被100整除的年是閏年,能被400整除的年也是閏年。請分析程序填空。

        main()

        {int yy,mm,len;

        printf("year,month=");

        scanf("%d %d",&yy,&mm);

        switch(mm)

        {case 1: case 3: case 5: case 7:case 8:

        case 10:case 12:【1】;break;

        case 4: case 6: case 9: case 11:len=30;break;

        case 2:if(yy%4==0&&yy%100!=0||yy%400==0)【2】;

        else【3】;

        break;

        default:printf("input error");break;

        }

        printf("the length of %d %d is %d\n",yy,mm,len);

        }

        參考答案:【1】len=31【2】len=29【3】len=28

        *4.118 以下程序用以計算y年m1月d1日與同年的m2月d2日之間的天數(shù)(m2>=m1),并打印計算結(jié)果。若m1=m2且d1=d2則算一天。請分析程序填空。

        main()

        {int y,m1,d1,m2,d2;

        int i,d;

        scanf("%d,%d,%d,%d,%d",&y,&m1,&d1,&m2,&d2);

        y=(y%4==0【1】y%100!=0【2】y%400==0)?1:0;

        d=0-d1;

        for(i=m1;i

        switch(i)

        {case 1:case 3:case 5: case 7:case 8:

        case 10:case 12:d+=31;break;

        case 2:d=d+28+y; break;

        case 4:case 6:case 9:case 11:【3】;

        }

        printf("%d",d+d2+1);

        }

        參考答案:【1】&&【2】||【3】d=d+30

        4.3 編程題

        4.119 編制程序,要求輸入整數(shù)a和b,若a2+b2大于100,則輸出a2+b2百位以上的數(shù)字,否則輸出兩數(shù)之和。

        參考程序:

        main()

        {int a,b;

        printf("Input a & b:");

        scanf("%d%d",&a,&b);

        if (a*a+b*b>100) printf("%d\n",(a*a+b*b)/100);

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

        }

        4.120 試編程判斷輸入的正整數(shù)是否既是5又是7的整數(shù)倍,若是輸出yes,否則輸出no。

        參考程序:

        main()

        {int a;

        printf("Input a:");

        scanf("%d",&a);

        if (a%5==0&&a%7==0) printf("yes\n");

        else printf("no\n");

        }

        4.121 請編程序,根據(jù)以下函數(shù)關(guān)系,對輸入的每個x值,計算出相應(yīng)的y值。

        xy

        x≤00

        0

        10

        20

        參考程序:

        main()

        {float x,y;

        printf("Input x:");

        scanf("%f",&x);

        y=-1;

        if(x<0) y=0;

        else if(x<=10) y=x;

        else if(x<=20) y=10;

        else if(x<40) y=0.5*x+20

        else y=-1;

        if (y==-1) printf("error");

        else printf("y=%f\n",y);

        }

        4.122 輸入一個整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:

        (1)能同時被3,5,7整除

        (2)能被其中兩數(shù)整除(要指出哪兩個)。

        (3)能被其中一個數(shù)整除(要指出哪一個)。

        (4)不能被任何一個整除。

        參考程序:

        main()

        {int m;

        printf("Input a number:");

        scanf("%d",&m);

        if(m%3==0&&m%5==0&&m%7==0)

        printf("能同時被3,5,7整除");

        else if((m%3==0&&m%5==0)||(m%3==0&&m%7==0)||(m%5==0&&m%7==0))

        {printf("能被其中兩數(shù)整除");

        if(m%3==0&&m%5==0) printf("(3,5)");

        else if(m%3==0&&m%7==0) printf("(3,7)");

        else printf("(5,7)");

        }

        else if(m%3==0||m%5==0||m%7==0)

        {printf("能被其中一個數(shù)整除");

        if(m%3==0) printf("(3)");

        else if(m%5==0) printf("(5)");

        else printf("(7)");

        }

        else printf("不能被任何一個整除");

        }

        4.123 將以下程序段改用非嵌套的if語句實現(xiàn)。

        int s,t,m;

        t=(int)(s/10);

        switch(t)

        {case 10:m=5;break;

        case 9:m=4;break;

        case 8:m=3;break;

        case 7:m=2;break;

        case 6:m=1;break;

        default: m=0;

        }

        參考程序:

        m=0;

        if(s>=100&&s<110) m=5;

        if(s>=90&&s<100) m=4;

        if(s>=80&&s<90) m=3;

        if(s>=70&&s<80) m=2;

        if(s>=60&&s<70) m=1;

        4.124 用switch編程實現(xiàn):

        -1 (x<0)

        y={0 (x=0)

        1 (x>0)

        參考程序:

        void main()

        {float x;

        int y;

        printf("Input a x:");

        scanf("%f",&x);

        switch(x<0)

        {case 1:y=-1;break;

        case 0:switch(x==0)

        {case 1:y=0;break;

        case 0:y=1;

        }

        }

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

        }

        4.125 將以下程序段改用嵌套的if語句實現(xiàn)。

        int s,t,m;

        t=(int)(s/10);

        switch(t)

        {case:m=5;break;

        case 9:m=4;break;

        case 8:m=3;break;

        case 7:m=2;break;

        case 6:m=1;break;

        default: m=0;

        }

        參考程序:

        if(s>=110&&s<60) m=0

        else if(s<110) m=5;

        else if(s<100) m=4;

        else if(s<90) m=3;

        else if(s<80) m=2;

        else m=1;

        4.126 請將以下語句改寫成為switch語句。

        if(s>0&&s<=10)

        if(s>=3&&s<=6) x=2;

        else if(s>1||s>8) x=3;

        else x=1;

        else x=0;

        參考程序:

        switch(s>0&&s<=10)

        {case 0:x=0;break;

        case 1:switch(s>=3&&s<=6)

        {case 1:x=2;break;

        case 0:switch(s>1||s>8)

        {case 1:x=3;break;

        case 0:x=1;break;

        }

        }

        }

        4.127編程實現(xiàn)以下功能:讀入兩個運算數(shù)(data1和data2)及一個運算符(op),計算表達式data1 op data2的值,其中op可為+,-,*,/(用switch語句實現(xiàn))。

        參考程序:

        #include

        #include

        main()

        {float data1,data2,result;

        char op;

        printf("Type in your expression:");

        scanf("%f %c %f",&data1,&op,&data2);

        switch(op)

        {case '+':result=data1+data2;break;

        case '-':result=data1-data2;break;

        case '*':result=data1*data2;break;

        case '/':if(data2==0){printf("\nDivision by zero!");exit(1);}

        result=data1/data2;break;

        }

        printf("This is %6.2f %c %6.2f=%6.2f\n",data1,op,data2,result);

        }

        4.128 編一程序,對于給定的一個百分制成績,輸出相應(yīng)的五分值成績。設(shè)90分以上為'A',80-89分為'B',70-79分為'C',60-69分為'D',60分以下為'E'(用switch語句實現(xiàn))。

        參考程序:

        main()

        {int score=-1,temp;

        char grade;

        while(score>=0&&score<=100)

        { printf("Enter score:");

        scanf("%d",&score);

        }

        temp=score/10;

        switch(temp)

        {case 0:case 1:case 2:case 3:case 4:case 5:grade='E';break;

        case 6:grade='D';break;

        case 7:grade='C';break;

        case 8:grade='B';break;

        case 9:case 10:grade='A';

        }

        printf("score=%d,grade=%c\n",score,grade);

        }

        第五章 循環(huán)控制

        5.1 選擇題

        5.1 設(shè)有程序段

        int k=10;

        while(k=0) k=k-1;

        則下面描述中正確的是 。

        A)while循環(huán)執(zhí)行10次 B)循環(huán)是無限循環(huán)

        C)循環(huán)體語句一次也不執(zhí)行 D)循環(huán)體語句執(zhí)行一次

        參考答案:C

        5.2設(shè)有以下程序段

        int x=0,s=0;

        while(!x!=0) s+=++x;

        printf("%d",s);

        則 。

        A)運行程序段后輸出0 B)運行程序段后輸出1

        C)循環(huán)的控制表達式不正確 D)程序段執(zhí)行無限次

        參考答案:B

        5.3語句while(!E);中的!E等價于 。

        A)E= =0 B)E!=1 C)E!=0 D)E= =1

        參考答案:A

        5.4下面程序段的運行結(jié)果是 。

        a=1;b=2;c=2;

        while(a

        printf("%d,%d,%d",a,b,c);

        A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1

        參考答案:A

        5.5 下面程序段的運行結(jié)果是 。

        x=y=0;

        while(x<15)

        y++,x+=++y;

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

        A)20,7 B)6,12 C)20,8 D)8,20

        參考答案:D

        5.6下面程序段的運行結(jié)果是 。

        int n=0;

        while(n++<=2);

        printf("%d",n);

        A)2 B)3 C)4 D)語法錯誤

        參考答案:C

        5.7 設(shè)有程序段

        t=0;

        while(printf("*"))

        {t++;

        if(t<3) break;

        }

        下面描述正確的是 。

        A)其中循環(huán)控制表達式與0等價 B)其中循環(huán)控制表達式與'0'等價

        C)其中循環(huán)控制表達式是不合法的 D)以上說法都不對

        參考答案:B

        參考分析:printf的返回值為數(shù)值1,恒真,故與B等價。

        5.8 下面程序的功能是將從鍵盤輸入的一對數(shù),由小到大排序輸出。當輸入一對相等數(shù)時結(jié)束循環(huán),請選擇填空。

        #include

        main()

        {int a,b,t;

        scanf("%d%d",&a,&b);

        while( )

        {if (a>b)

        {t=a;a=b;b=t;}

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

        scanf("%d%d",&a,&b);

        }

        }

        A)!a=b B)a!=b C)a==b D)a=b

        參考答案:B

        5.9下面程序的功能是從鍵盤輸入的一組字符中統(tǒng)計出大寫字母的個數(shù)m和小寫字母的個數(shù)n,并輸出m,n中的較大者

        #include "stdio.h"

        main()

        {int m=0,n=0;

        char c;

        while ((【1】)!='\n')

        { if(c>='A'&&c<='Z') m++;

        if (c>='a'&&c<='z') n++;

        }

        printf("%d",m

        【1】A)c=getchar() B)getchar() C)c=gets() D)scanf("%c",c)

        【2】A)m:n B)m:m C)n:n D)n:m

        參考答案:【1】A【2】D

        5.10下面程序的功能是將小寫字母變成對應(yīng)大寫字母后的第二個字母,其中y變成A,z變成B。請選擇填空。

        #include "stdio.h"

        main()

        { char c;

        while ((c=getchar())!='\n')

        {if (c>='a'&&c<='z')

        {【1】;

        if (c>'Z')

        【2】;

        }

        printf("%c",c);

        }

        }

        【1】A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30

        【2】A)c='B' B)c='A' C)c-=26 D)c=c+26

        參考答案:【1】D【2】 C

        5.11下面程序的功能是在輸入一批正整數(shù)中求出最大者,輸入0結(jié)束循環(huán),請選擇填空 。

        #include "stdio.h"

        main()

        {int a,max=0;

        scanf("%d",&a);

        while ( )

        {if (max

        scanf("%d",&a);

        }

        printf("%d",max);}

        A)a= =0 B)a C)a= =1 D)!a

        參考答案:B

        5.12 下面程序的運行結(jié)果是 。

        #include

        main()

        {int num=0;

        while(num<=2)

        {num++;

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

        }

        }

        A)1 B)1 C)1 D)1

        2 2 2

        3 3

        4

        參考答案:C

        5.13若運行以下程序時,從鍵盤輸入2473(表示回車),則下面程序的運行結(jié)果是 。

        #include "stdio.h"

        {int c;

        while ((c=getchar())!='\n')

        switch (c-'2')

        {case 0:

        case 1: putchar(c+4);

        case 2:putchar(c+4);break;

        case 3:putchar(c+3);

        default:putchar(c+2);break;

        }

        printf("\n");}

        A)668977 B)668966 C)66778777 D)6688766

        參考答案:A

        5.14 C語言中while和do while循環(huán)的主要區(qū)別是 。

        A)do-while的循環(huán)至少無條件執(zhí)行一次。

        B)while循環(huán)控制條件比do-while的循環(huán)控制條件嚴格。

        C)do-while允許從外部轉(zhuǎn)入到循環(huán)體內(nèi)。

        D)do-while的循環(huán)體不能是復合語句。

        參考答案:A

        5.15 以下能正確計算10!的程序段是 。

        A)do {i=1;s=1; B)do{i=1;s=0;

        s=s*i; s=s*i;

        i++; i++;

        }while(i<=10); }while(i<=10);

        C)i=1;s=1; D)i=1;s=0;

        do{s=s*i; do{s=s*i;

        i++; i++;

        }while(i<=10); }while(i<=10);

        5.16 以下程序段 。

        x=-1;

        do x=x*x;

        while(!x);

        A)是死循環(huán) B)循環(huán)執(zhí)行兩次

        C)循環(huán)執(zhí)行一次 D)有語法錯誤

        參考答案:C

        5.17 以下描述中正確的是 。

        A)由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復合語句。

        B)do-while循環(huán)由do開始,用while結(jié)束,在while(表達式)后面不能寫分號。

        C)在do-while循環(huán)體中,一定要有能使while后面表達式的值變?yōu)榱?"假")的操作。

        D)do-while循環(huán)中,根據(jù)情況可以省略while。

        參考答案:C

        5.18 若有語句如下,則程序段的輸出是 。

        int x=3;

        do {printf("%d",x-=2);}while(!(--x));

        A)1 B)1和-2 C)3和0 D)死循環(huán)

        *5.19下面程序的功能是計算正整數(shù)2345的各位數(shù)字平方和。

        #include "stdio.h"

        main()

        {int n,sum=0;

        n=2345;

        do {sum=sum+【1】;

        n=【2】;

        } while(n);

        printf("sum=%d",sum);}

        【1】A)n%10 B)(n%10)*(n%10) C)n/10 D)(n/10)*(n/10)

        【2】A)n/1000 B)b/100 C)n/10 D)n%10

        參考答案:【1】B 【2】C

        5.20 下面程序是從鍵盤輸入學號,然后輸出學號中百位數(shù)是3的學號,輸入0時結(jié)束循環(huán)。請選擇填空。

        #include

        main()

        {long int num;

        scanf("%ld",&num);

        do

        {if(【1】) printf("%ld",num);

        scanf("%ld",&num);

        }while(【2】);

        }

        【1】A)num%100/10==3 B)num/100%10==3

        C)num%10/10==3 D)num/10%10==3

        【2】A)!num B)num>0==0 C)!num==0 D)!num!=0

        參考答案:【1】B 【2】C

        5.21 等比數(shù)列的第一項a=1,公比q=2,下面程序的功能是求滿足前n項和小于100的最大n,請選擇填空。

        #include

        main()

        {int a,q,n,sum;

        a=1;q=2;n=sum=0;

        do

        {【1】;

        ++n;a*=q;

        }while(sum<100);

        【2】;

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

        }

        【1】A)sum++ B)sum+=a C)sum*=a D)a+=sum

        【2】A)n=n-2 B)n=n C)n++ D)n-=1

        參考答案:【1】B 【2】D

        5.22 下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除。請選擇填空。

        #include

        main()

        {int i=0,j,k;

        do

        {i++;k=316-13*i;}while( );

        j=k/11;

        printf("316=13*%d+11*%d",i,j);

        }

        A)k/11 B)k%11 C)k/11==0 D)k%11==0

        參考答案:B

        5.23 下面程序的運行結(jié)果是 。

        #include

        main()

        {int y=10;

        do {y--;}while(--y);

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

        }

        A)-1 B)1 C)8 D)0

        參考答案:D

        5.24若運行以下程序時,從鍵盤輸入Adescriptor(表示回車),則下面程序的運行結(jié)果是 。

        #include

        main()

        { char c;

        int v0=0,v1=0,v2=0;

        do {

        switch(c=getchar())

        {case 'a':case'A':

        case 'e':case'E':

        case 'i':case 'I':

        case 'o':case 'O':

        case 'u':case 'U':v1+=1;

        default:v2+=1;

        }

        v0+=1;

        } while(c!='\n');

        printf("v0-%d,v1=%d,v2=%d\n",v0,v1,v2);

        }

        A)v0=7,v1=4,v2=7 B)v0=11,v1=4,v2=11

        C)v0=12,v1=4,v2=11 D)v0=12,v1=4,v2=12

        參考答案:D

        5.25 下面程序的運行結(jié)果是 。

        #include

        main()

        {int a=1,b=10;

        do

        {b-=a;a++;}while(b--<0);

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

        }

        A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9

        參考答案:B

        5.26下面有關(guān)for循環(huán)的正確描述是 。

        A)for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況

        B)for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達式

        C)在for循環(huán)中,不能用break語句跳出循環(huán)體

        D)for循環(huán)的循環(huán)體可以包括多條語句,但必須用花括號括起來

        參考答案:D

        5.27對for(表達式1; ;表達式3)可理解為 。

        A) for (表達式1;0;表達式3) B) for (表達式1;1;表達式3)

        C) for (表達式1;null;表達式3) D)缺少一個表達式

        參考答案:B

        5.28 若i為整型變量,則以下循環(huán)執(zhí)行次數(shù)是 。

        for (i=2;i==0;)printf("%d",i--);

        A)無限次 B)0次 C)1次 D)2次

        參考答案:B

        5.29 以下for循環(huán)的執(zhí)行次數(shù)是 。

        for(x=0,y=0;(y=123)&&(x<4);x++);

        A)是無限循環(huán) B)循環(huán)次數(shù)不定 C)4次 D)3次

        參考答案:C

        5.30 以下不是無限循環(huán)的語句為 。

        A)for(y=0,x=1;x>++y;x=i++) i=x;

        B)for(;;x++=i);

        C)while(1){x++;}

        D)for(i=10;;i--) sum+=i;

        參考答案:A

        5.31下面程序段的運行結(jié)果是 。

        for(y=1;y<10;)y=((x=3*y,x+1),x-1);

        printf("x=%d,y=%d",x,y);

        A)x=27,y=27 B)x=12,y=13 C)x=15,y=14 D)x=y=27

        參考答案:C

        5.32下面程序段的運行結(jié)果是 。

        for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n")),x);

        A)**3 B)##3 C)##3 D)**3##4

        ##4 **4 **4##5 **5

        **5 ##5

        參考答案:D

        *5.33以下不是無限循環(huán)的語句為 。

        A)int i=100;

        while(1)

        {i=i%100+1;

        if(i>100)break;

        }

        B)for(;;);

        C)int k=0;

        do{++k;}while(k>=0);

        D)int s=36;

        while(s);--s;

        參考答案:C

        5.34 執(zhí)行語句for(i=1;i++<4;);后變量的值為 。

        A)3 B)4 C)5 D)不定

        參考答案:C

        5.35 有一堆零件(100到200之間),如果分成4個零件一組則多出2個零件;若分成7個零件一組,則多3個零件;若分成9個零件一組,則多出5個零件。下面程序是求這堆零件總數(shù),請選擇填空。

        #include

        main()

        {int i;

        for(i=100;i<200;i++)

        if((i-2)%4==0)

        if(!((i-3)%7))

        if( )

        printf("%d",i);

        }

        A)i%9=5 B)i%9!=5 C)(i-5)%9!=0 D)i%9==5

        參考答案:D

        5.36 下面程序的功能是計算1至50中是7的倍數(shù)的數(shù)值之和,請選擇填空。

        #include

        main()

        {int i,sum=0;

        for(i=1;i<=50;i++)

        if( 【1】 )sum+=i;

        printf("%d",sum);

        }

        A)(int)(i/7)==i/7 B)(int)i/7==i/7 C)i%7!=0 D)i%7==0

        參考答案:D

        5.37 下面程序的功能是計算1至10之間的奇數(shù)之和和偶數(shù)之和。請選擇填空。

        #include

        main()

        {int a,b,c,i;

        a=c=0;

        for(i=0;i<=10;i+=2)

        {a+=i;

        【1】;

        c+=b;

        }

        printf("偶數(shù)之和=%d\n",a);

        printf("奇數(shù)之和=%d\n", 【2】 );

        }

        【1】A)b=i-- B)b=i+1 C)b=i++ D)b=i-1

        【2】A)c-10 B)c C)c-11 D)c-b

        參考答案:【1】B 【2】CD

        參考分析:奇數(shù)累加和根據(jù)題目的要求多計算了11,需要從累加和中去除,但退出循環(huán)后b變量的值也是11,故【2】中的D也正確。

        5.38 下面程序的運行結(jié)果是 。

        #include

        main()

        {int i;

        for(i=1;i<=5;i++)

        switch(i%5)

        {case 0:printf("*");break;

        case 1:printf("#");break;

        default:printf("\n");break;

        case 2:printf("&");

        }

        }

        A)#&&* B)#& C)# D)#&

        & &

        &* & *

        &*

        參考答案:B

        5.39 下面程序的運行結(jié)果是 。

        #include

        main()

        {int x,i;

        for(i=1;i<=100;i++)

        {x=i;

        if(++x%2==0)

        if(++x%3==0)

        if(++x%7==0)

        printf("%3d",x);

        }

        }

        A) 39 81 B)42 84 C)26 68 D)28 70

        參考答案:D

        5.40 下面程序段的功能是計算1000!的末尾含有多少個零。請選擇填空。(提示:只要計算出1000!中含有因子5的個數(shù)即可)

        for(k=0,i=5;i<=1000;i+=5)

        {m=i;

        while( ){k++;m=m/5;}

        A)m%5=0 B)m=m%5==0 C)m%5==0 D)m%!=0

        5.41 下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分別表示一個三位數(shù)),請選擇填空。

        #include

        main()

        {int x,y,z,i,result=532;

        for(x=1;x<10;x++)

        for(y=1;y<10;y++)

        for(【1】;z<10;z++)

        {i=100*x+10*y+z+100*y+10*z+z;

        if(【2】)printf("x=%d,y=%d,z=%d\n",x,y,z);

        }

        }

        【1】A)z=x B)z=1 C)z=0 D)z=y

        【2】A)i/result==1 B)i=result C)i!=result D)i==result

        參考答案:【1】CB 【2】D

        參考分析:【1】由于z不需要作為百位數(shù),因此可以為0。若更進一步考慮到z為兩個數(shù)的末尾,2倍的z不可能為0,故z也不可能為0,所以B也應(yīng)當正確。

        **5.42 下面程序是對輸出一個正整數(shù)等差數(shù)列的前十項,此數(shù)列前四項之和及積分別是26和880,請選擇填空。

        #include

        main()

        {int a,d,i,s,f,x;

        for (a=1;a<=6;a++)

        for(d=1;【1】;d++)

        {s=0;f=1;x=a;

        for(i=1;i<=4;i++)

        {s=s+x;

        f=f*x;

        x=x+d;

        }

        if(s==26&&f==880)

        for(i=0;i<10;i++)

        printf("%3d", 【2】 ;

        }

        }

        【1】A)d<=a B)空 C)d<=5 D)d

        【2】a+i*d B)i*d C)a+(i+1)*d D)a+d

        參考答案:【1】C【2】A

        5.43 下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,b,k=0;

        for(i=1;i<=5;i++)

        {b=i%2;

        while(b-->=0) k++;

        }

        printf("%d,%d",k,b);

        }

        A)3,-1 B)8,-1 C)3,0 D)8,-2

        參考答案:D

        5.44 以下正確的描述是 。

        A)continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行。

        B)只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。

        C)在循環(huán)體內(nèi)使用break語句或continue語句的作用相同。

        D)從多層循環(huán)嵌套中退出時,只能使用goto語句。

        參考答案:B

        5.45 下面程序段 。

        for(t=1;t<=100;t++)

        {scanf("%d",&x);

        if(x<0)continue;

        printf("%3d",t);

        }

        A)當x

        C)printf函數(shù)永遠也不執(zhí)行 D)最多允許輸出100個非負整數(shù)

        參考答案:D

        5.46下面程序段 。

        x=3;

        do{y=x--;

        if(!y) {printf("*"); continue;}

        printf("#");

        }while(1<=x<=2);

        A)將輸出## B)將輸出###*

        C)是死循環(huán) D)含有不合法的控制表達式

        參考答案:C

        5.47 以下是死循環(huán)的程序段是 。

        A)for(i=1; ; )

        if(++i%2==0) continue;

        if(++i%3==0) break;

        }

        B)i=32767;

        do{if(i<0) break;}while(++i);

        C)for(i=1; ; ) if(++i<10) continue;

        D)i=1;

        while(i--);

        參考答案:C

        5.48 以下描述正確的是 。

        A)goto語句只能用于退出多層循環(huán)。

        B)switch語句中不能出現(xiàn)continue語句。

        C)只能用continue語句來中止本次循環(huán)。

        D)在循環(huán)中break語句不能獨立出現(xiàn)。

        參考答案:C

        5.49 與下面程序段等價的是 。

        for(n=100;n<=200;n++)

        {if(n%3==0) continue;

        printf("%4d",n);

        }

        A)for(n=100;(n%3)&&n<=200;n++) printf("%4d",n);

        B)for(n=100;(n%3)||n<=200;n++) printf("%4d",n);

        C)for(n=100;n<=200;n++) if(n%3!=0) printf("%4d",n);

        D) for(n=100;n<=200;n++)

        {if(n%3) printf("%4d",n);

        else continue;

        break;

        }

        參考答案:C

        **5.50 下面程序的功能是將從鍵盤輸入的偶數(shù)寫成兩個素數(shù)之和。請選擇填空。

        #include

        #include

        main()

        {int a,b,c,d;

        scanf("%d",&a);

        for(b=3,b<=a/2;b+=2)

        {for(c=2;c<=sqrt(b);c++) if(b%c==0) break;

        if(c>sqrt(b)) d= ;else continue;

        for(c=2;c<=sqrt(d);c++) if(d%c==0) break;

        if(c>sqrt(d)) printf("%d=%d+%d\n",a,b,d);

        }

        }

        A)a+b B)a-b C)a*b D)a/b

        參考答案:B

        5.51下面程序的運行結(jié)果是 。

        #include

        main()

        {int k=0;char c='A';

        do

        {switch(c++)

        {case 'A':k++;break;

        case 'B':k--;

        case 'C':k+=2;break;

        case 'D':k=k%2;break;

        case 'E':k=k*10;break;

        default:k=k/3;

        }

        k++;

        }while(c<'G');

        printf("k=%d\n",k);

        }

        A)k=3 B)k=4 C)k=2 D)k=0

        參考答案:B

        5.52 若運行以下程序時,從鍵盤輸入3.6 2.4,則下面程序的運行結(jié)果是 。

        #include

        #include

        main()

        {float x,y,z;

        scanf("%f%f",&x,&y);

        z=x/y;

        while(1)

        {if(fabs(z)>1.0) {x=y;y=z;z=x/y;}

        else break;

        }

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

        }

        A)1.500000 B)1.600000 C)2.000000 D)2.400000

        參考答案:B

        5.53下面程序的運行結(jié)果是 。

        #include

        main()

        {int a,b;

        for(a=1,b=1;a<=100;a++)

        {if(b>=20) break;

        if(b%3==1){b+=3;continue;}

        b-=5;

        }

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

        }

        A)7 B)8 C)9 D)10

        參考答案:B

        5.54下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,j,x=0;

        for(i=0;i<2;i++)

        {x++;

        for(j=0;j<=3;j++)

        {if(j%2) continue;

        x++;

        }

        x++;

        }

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

        }

        A)x=4 B)x=8 C)x=6 D)x=12

        參考答案:B

        5.55下面程序的運行結(jié)果是 。

        #include

        main()

        {int i;

        for(i=1;i<=5;i++)

        {if(i%2) printf("*");

        else continue;

        printf("#");

        }

        printf("$\n");

        }

        A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$

        參考答案:A

        5.56下面程序的運行結(jié)果是 。

        main()

        {int i,j,a=0;

        for(i=0;i<2;i++)

        {for(j=0;j<4;j++)

        {if(j%2) break;

        a++;

        }

        a++;

        }

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

        }

        A)4 B)5 C)6 D)7

        參考答案:A

        5.2 填空題

        5.57 下面程序段是從鍵盤輸入的字符中統(tǒng)計數(shù)字字符的個數(shù),當輸入換行符時結(jié)束循環(huán)。請分析程序填空。

        int n=0,c;

        c=gethar();

        while(【1】)

        {if(【2】) n++;

        c=getchar();

        }

        參考答案:【1】c!='\n' 【2】c>='0'&&c<='9'

        5.58 下面程序的功能是用公式π2/6≈1/12+1/22+1/32+...+1/n2求π的近似值,直到最后一項的值小于10-6為止,請分析程序填空。

        #include

        #include

        main()

        {long i=1;

        【1】pi=0;

        while(i*i>=1e6)

        {pi=【2】;i++;}

        pi=sqrt(6.0*pi);

        printf("pi=%10.6f\n",pi);

        }

        參考答案:【1】double 【2】pi+1/i/i

        5.59 有1020個西瓜,第一天賣一半多兩個,以后每天賣剩下的一半多兩個,問幾天以后能賣完?請分析程序填空。

        #include

        main()

        {int day,x1,x2;

        day=0;x1=1020;

        while(【1】){x2=【2】;x1=x2;day++;}

        printf("day=%d\n",day);

        }

        參考答案:【1】x1 【2】x1/2-2

        5.60 下面程序的功能是用“輾轉(zhuǎn)相除法”求兩個正整數(shù)的最大公約數(shù)。請分析程序填空。

        #include

        main()

        {int r,m,n;

        scanf("%d%d",&m,&n);

        if(m

        r=m%n;

        while(r){m=n;n=r;r=【2】;}

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

        }

        參考答案:【1】r=m,m=n,n=r 【2】m%n

        5.61 執(zhí)行以下程序時輸入right?,則下面程序的運行結(jié)果是 。

        #include

        main()

        {char c;

        while((c=getchar())!='?') putchar(++c);

        }

        參考答案:sjhiu

        5.62下面程序的運行結(jié)果是 。

        #include

        main()

        {int a,s,n,count;

        a=2;s=0;n=1;count=1;

        while(count<=7) {n=n*a;s=s+n;++count;}

        printf("s=%d\n",s);

        }

        參考答案:s=254

        參考分析:本題是計算21+22+...+27之和。

        5.63當運行以下程序,用戶輸入China# 程序的運行結(jié)果是 。

        #include "stdio.h"

        main()

        {int v1=0,v2=0;

        char ch;

        while ((ch=getchar())!='#')

        switch(ch)

        {case 'a':

        case 'h':

        default:v1++;

        case 'o': v2++;

        }

        printf("%d,%d\n",v1,v2);}

        參考答案:5,5

        5.64 執(zhí)行下面程序段后,k值是 。

        k=1;n=263;

        do{k*=n%10;n/=10;}while(n);

        參考答案:36

        5.65 下面程序段中循環(huán)體的執(zhí)行次數(shù)是 。

        a=10;b=0;

        do{b+=2;a-=2+b;}while(a>=0);

        參考答案:3次

        5.66下面程序段的運行結(jié)果是 。

        x=2;

        do{printf("*");x--;}while(!x==0);

        參考答案:**

        5.67下面程序段的運行結(jié)果是 。

        i=1;a=0;s=1;

        do{a=a+s*i;s=-s;i++;}while(i<=10);

        printf("a=%d",a);

        參考答案:a=-5

        5.68 下面的程序是用do while語句求1至1000之間滿足“用3除余2;用5除余3;用7除余2"的數(shù),且一行只打印五個數(shù)。請分析程序填空。

        #include

        main()

        {int i=1,j=0;

        do

        {if(【1】)

        {printf("%4d",i);

        j=j+1;

        if(【2】) printf("\n");

        }

        i=i+1;

        }while(i<1000);

        }

        參考答案:【1】i%3==2&&i%5==3&&i%7==2 【2】j%5==0

        5.69 下面程序的功能是統(tǒng)計正整數(shù)的各位數(shù)字中零的個數(shù),并求各位數(shù)字中的最大者。請分析程序填空。

        #include

        main()

        {int n,count,max,t;

        count=max=0;

        scanf("%d",&n);

        do

        {t=【1】;

        if(t==0) ++count;

        else if(max

        n/=10;

        }while(n);

        printf("count=%d,max=%d",count,max);

        }

        參考答案:【1】n%10 【2】max=t

        5.70 等差數(shù)列的第一項a=2,公差d=3,下面程序的功能是在前n項和中,輸出能被4整除的所有數(shù)的和。請分析程序填空。

        #include

        main()

        {int a,d,sum;

        a=2;d=3;sum=0;

        do

        {sum+=a;

        a+=d;

        if( )printf("%4d\n",sum);

        }while(sum<200);

        }

        參考答案:sum%4==0

        *5.71 下面程序的功能是求1111的個、十、百位上的數(shù)字之和。請分析程序填空。

        #include

        main()

        {int i,s=1,m=0;

        for(i=1;i<=11;i++) s=s*11%1000;

        do {m+=【1】;s=【2】;}while(s);

        printf("m=%d\n",m);

        }

        參考答案:【1】s%10 【2】s/10

        參考分析:本題各位數(shù)的分離,沒有什么新意,一個十進制大數(shù)的人為“高位溢出”這種技巧,值得學習和模仿。

        5.72 當運行以下程序時,從鍵盤輸入1 2 3 4 5 -1,則下面程序的運行結(jié)果是 。

        #include

        main()

        {int k=0,n;

        do{scanf("%d",&n);k+=n;}while(n!=-1);

        printf("k=%d n=%d\n",k,n);

        }

        參考答案:k=14 n=-1

        5.73下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,x,y;

        i=x=y=0;

        do{++i;

        if(i%2!=0){x=x+i;i++;}

        y=y+i++;

        }while(i<=7);

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

        }

        參考答案:x=1,y=20

        5.74下面程序的運行結(jié)果是 。

        #include

        main()

        {int a,b,i;

        a=1;b=3;i=1;

        do{printf("%d,%d,",a,b);

        a=(b-a)*2+b;

        b=(a-b)*2+a;

        if(i++%2==0) printf("\n");

        }while(b<100);

        }

        參考答案:1,3,7,15,

        31,63,

        5.75 當從鍵盤輸入-1 0,則以下程序的運行結(jié)果是 。

        #include

        main()

        {int a,b,m,n;

        m=n=1;

        scanf("%d%d",&a,&b);

        do{if(a>0) {m=2*n;b++;}

        else {n=m+n;a+=2;b++;}

        }while(a==b);

        printf("m=%d n=%d\n",m,n);

        }

        參考答案:m=4 n=2

        5.76下面程序段是找出整數(shù)的所有因子,請分析程序填空。

        scanf("%d",&x);

        for (i=1; ; i++)

        if (x%i==0) printf("%3d",i);

        參考答案:i<=x

        5.77 雞兔同籠,頭30,腳90,下面程序段計算雞兔各有多少只。請分析程序填空。

        for(x=1;x<=30;x++ )

        {y=30-x;

        if(【1】) printf("%d,%d",x,y);

        }

        參考答案:2*x+4*y==90

        5.78 下面程序段的運行結(jié)果是 。

        for(a=1,i=-1;-1<=i<1;i++)

        {a++;printf("%d,",a);}

        printf("%2d",i);

        參考答案:-1

        5.79 循環(huán)語句for(i=0;i<3;i++) printf("*");表達式i=0執(zhí)行【1】次,表達式i++執(zhí)行【2】次。

        參考答案:【1】1 【2】3

        5.80 下面程序的功能是計算1-3+5-7+...-99+101的值,請分析程序填空。

        #include

        main()

        {int i,t=1,s=0;

        for(i=1;i<=101;i+=2)

        {【1】;s=s+t;【2】;}

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

        }

        參考答案:【1】t=t*i 【2】t=-t/i

        5.81 以下程序是用梯形法求sin(x)*cos(x)的定積分。求定積分的公式為:

        s=h/2(f(a)+f(b))+h∑f(xi) (i=1~n-1)

        其中xi=a+ih,h=(b-a)/n。設(shè)a=0,b=1.2為積分上下限,積分區(qū)間分隔數(shù)n=100,請分析程序填空。

        #include

        #include

        main()

        {int i,n;double h,s,a,b;

        printf("Input a,b:");

        scanf("%lf%lf",【1】);

        n=100;h=【2】;

        s=0.5*(sin(a)*cos(a)+sin(b)*cos(b));

        for(i=1;i<=n-1;i++) s+=【3】;

        s*=h;

        printf("s=%10.4lf\n",s);

        }

        參考答案:【1】&a,&b 【2】(b-a)/n 【3】sin(a+i*h)*cos(a+i*h)

        5.82 以下程序的功能是根據(jù)公式e=1+1/1!+1/2!+...1/n!求e的近似值,精度要求為10-6。請分析程序填空。

        #include

        main()

        {int i;double e,new;

        【1】;new=1.0;

        for(i=1;【2】;i++)

        {new/=(double)i; e+=new;}

        printf("e=%lf\n",e);

        }

        參考答案:【1】e=1 【2】new>1e-6

        *5.83 下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,t,sum=0;

        for(t=i=1;i<=10;)

        {sum+=t;++i;

        if(i%3==0) t=-i;

        else t=i;

        }

        printf("sum=%d",sum);

        }

        參考答案:sum=19

        參考分析:此題為1+2-3+4+5-6+7+8-9+10之和。

        *5.84下面程序的運行結(jié)果是 。

        #include

        main()

        {int i;

        for(i=1;i<=5;i++)

        switch(i%2)

        {case 0:i++;printf("#");break;

        case 1:i+=2;printf("*");

        default:printf("\n");

        }

        }

        參考答案:*

        #

        參考分析:由于在程序中改變了循環(huán)變量的值,導致循環(huán)只能循環(huán)2次。

        5.85下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,j=4;

        for(i=j;i<=2*j;i++)

        switch(i/j)

        {case 0:case 1:printf("*");break;

        case 2:printf("#");

        }

        }

        參考答案:****#

        5.86 下面程序的功能是求出用數(shù)字0至9可以組成多少個不重復的三位偶數(shù)。請分析程序填空。

        #include

        main()

        {int n=0,i,j,k;

        for(i=1;i<=9;i++)

        for(k=0;k<=8;【1】)

        if(k!=i)

        for(j=0;j<=9;j++)

        if(【2】) n++;

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

        }

        參考答案:【1】k+=2 【2】i!=j&&k!=j

        5.87 下面程序的功能是輸出1至100之間每位數(shù)的乘積大于每位數(shù)的和的數(shù),請分析程序填空。

        #include

        main()

        {int n,k=1,s=0,m;

        for(n=1;n<=100;n++)

        {k=1;s=0;

        【1】;

        while(【2】)

        {k*=m%10;

        s+=m%10;

        【3】;

        }

        if(k>s) printf("%3d",n);

        }

        }

        參考答案:【1】m=n 【2】m 【3】m=m/10

        *5.88 下面程序的功能是求1000以內(nèi)的所有完全數(shù)。說明:一個數(shù)如果恰好等于它的因子之和(除自身外),則稱該數(shù)為完全數(shù)。例如:6=1+2+3。

        #include

        main()

        {int a,i,m;

        for(a=1;a<=1000;a++)

        {for(【1】;i<=a/2;i++)

        if(!(a%i)) 【2】;

        if(m==a) printf("%4d",a);

        }

        }

        參考答案:【1】i=1,m=0 【2】m=m+i

        5.89 下面程序的功能是完成用一元人民幣兌換一分、兩分、五分零幣的所有兌換方案。請分析程序填空。

        #include

        main()

        {int i,j,k,l=1;

        for(i=0;i<=20;i++)

        for(j=0;j<=50;j++)

        {k=【1】;

        if(【2】)

        {printf(" %2d %2d %2d ",i,j,k);

        l=l+1;

        if(l%5==0) printf("\n");

        }

        }

        }

        參考答案:【1】100-5*i-2*j 【2】k>=0

        5.90 下面程序的功能是從三個紅球、五個白球、六個黑球中任意取出八個球,且其中必須有白球,輸出所有可能的方案。請分析程序填空。

        #include

        main()

        {int i,j,k;

        printf("\n hong bai hei\n");

        for(i=0;i<=3;i++)

        for(【1】;j<=5;j++)

        {k=8-i-j;

        if(【2】) printf(" %3d %3d %3d\n",i,j,k);

        }

        }

        參考答案:【1】j=1 【2】k<7

        *5.91 若從鍵盤輸入65 14,則下面程序的運行結(jié)果是 。

        #include

        main()

        {int m,n;

        printf("Enter m,n:");

        scanf("%d%d",&m,&n);

        while(m!=n)

        {while(m>n) m-=n;

        while(n>m) n-=m;

        }

        printf("m=%d\n",m);

        }

        參考答案:m=1

        參考分析:這是一種計算兩個整型數(shù)最大公約數(shù)的一種算法。

        5.92 下面程序的運行結(jié)果是 。

        #include

        main()

        {int y=2,a=1;

        while(y--!=-1)

        {do {a*=y; a++;}while(y--);}

        printf("%d,%d",a,y);

        }

        參考答案:1,-2

        5.93 下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,j;

        for(i=0;i<=3;i++)

        {for(j=0;j<=5;j++)

        if(i==0||j==0||i==3||j==5) printf("*");

        else printf(" ");

        printf("\n");

        }

        }

        參考答案:

        ******

        * *

        * *

        ******

        5.94下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,j;

        for(i=4;i>=1;i--)

        {for(j=1;j<=i;j++) putchar('#');

        for(j=1;j<=4-i;j++) putchar('*');

        putchar('\n');

        }

        }

        參考答案:

        ####

        ###*

        ##**

        #***

        5.95下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,k=0;

        for(i=1; ;i++)

        {k++;

        while(k<i*i)< p="">

        {k++;

        if(k%3==0) goto loop;

        }

        }

        loop:printf("%d,%d",i,k);

        }

        參考答案:2,3

        5.96 下面程序段的運行結(jié)果是 。

        i=1;s=3;

        do{s+=i++;

        if(s%7==0) continue;

        else ++i;

        }while(s<15);

        printf("%d",i);

        參考答案:8

        5.97 若用0至9之間不同的三個數(shù)構(gòu)成一個三位數(shù),下面程序?qū)⒔y(tǒng)計出共有多少種方法。請分析程序填空。

        #include

        main()

        {int i,j,k,count=0;

        for(i=1;i<=9;i++)

        for(j=0;j<=9;j++)

        if(【1】)continue;

        else for(k=0;k<=9;k++)

        if(【2】) count++;

        printf("%d",count);

        }

        參考答案:【1】i==j 【2】k!=i&&k!=j

        5.98 下面程序的功能是計算100至1000之間有多少個數(shù)其各位數(shù)字之和是5。請分析程序填空。

        #include

        main()

        {int i,s,k,count=0;

        for(i=100;i<=1000;i++)

        {s=0;k=i;

        while(【1】){s+=k%10;k=【2】;}

        if(s!=5) 【3】;

        else count++;

        }

        printf("%d",count);

        }

        參考答案:【1】k 【2】k/10 【3】continue

        5.99 下面程序的功能是從鍵盤輸入的10個整數(shù)中,找出第一個能被7整除的數(shù)。若找到,打印此數(shù)后退出循環(huán);若未找到,打印“not exist”。請分析程序填空。

        #include

        main()

        {int i,a;

        for(i=1;i<=10;i++)

        {scanf("%d",&a);

        if(a%7==0) {printf("%d",a); 【1】;}

        }

        if(【2】) printf("not exist\n");

        }

        參考答案:【1】break 【2】i>10

        5.100 下面程序的功能是輸出100以內(nèi)個位數(shù)為6且能被3整除的所有數(shù)。請分析程序填空。

        #include

        main()

        {int i,j;

        for(i=0;【1】;i++)

        {j=i*10+6;

        if(【2】) continue;

        printf("%d",j);

        }

        }

        參考答案:【1】i<=9 【2】j%3

        5.101 下面程序的運行結(jié)果是 。

        #include

        main()

        {int i=1;

        while(i<=15)

        if(++i%3!=2) continue;

        else printf("%d ",i);

        printf("\n");

        }

        參考答案:2 5 8 11 14

        5.102下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,j,k=19;

        while(i=k-1)

        {k-=3;

        if(k%5==0){i++;continue;}

        else if(k<5) break;

        i++;

        }

        printf("i=%d,k=%d\n",i,k);

        }

        參考答案:i=6,k=4

        5.103下面程序的運行結(jié)果是 。

        #include

        main()

        {int a=10,y=0;

        do

        {a+=2;y+=a;

        if(y>50) break;

        }while(a=14);

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

        }

        參考答案:a=16 y=60

        5.104下面程序的運行結(jié)果是 。

        #include

        main()

        {int i=5;

        do

        {switch(i%2)

        {case 4:i--;break;

        case 6:i--;continue;

        }

        i--;i--;

        printf(%d ",i);

        }while(i>0);

        }

        參考答案:3 1 -1

        5.3 編程題

        5.105 每個蘋果0.8元,第一天買2個蘋果,第二天開始買前一天的2倍,直至購買的蘋果個數(shù)達到不超過100的最大值。編寫程序求每天平均花多少錢。

        參考程序:

        main()

        {int day=0,buy=2;

        float sum=0,ave;

        do

        {sum=sum+0.8*buy;

        day++;buy=buy*2;

        }while(buy<=100);

        ave=sum/day;

        printf("average=%f\n",ave);

        }

        5.106 編寫程序,找出1至99之間的全部同構(gòu)數(shù)。同構(gòu)數(shù)是這樣一組數(shù):它出現(xiàn)在平方數(shù)的右邊。例如,5是25右邊的數(shù),25是625右邊的數(shù),5和25就是同構(gòu)數(shù)。

        參考程序:

        main()

        {int i;

        for(i=1;i<100;i++)

        if(i*i%10==i||i*i%100==i) printf("%3d",i);

        }

        5.107 編寫程序,求一個整數(shù)任意次方的最后三位數(shù)。即求xy值的最后三位數(shù),要求x,y從鍵盤輸入。

        參考程序:

        main()

        {int x,y,i,s=1;

        printf("Input x and y:");

        scanf("%d%d",&x,&y);

        for(i=1;i<=y;i++)

        s=s*x%1000;

        printf("The last 3 digit of %d*%d is:%d\n",x,y,s);

        }

        5.108 編寫程序,從鍵盤輸入6名學生的五門成績,分別統(tǒng)計出每個學生的平均成績。

        參考程序:

        main()

        {int i,j;

        float s,sum,ave;

        for(i=0;i<6;i++)

        {sum=0;

        for(j=1;j<=5;j++)

        {scanf("%f",&s);

        sum=sum+s;

        }

        ave=sum/5;

        printf("No.%d ave=%6.2f\n",i+1,ave);

        }

        }

        第六章 數(shù)組

        6.1 選擇題

        6.1在c語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型是 。

        A)整型常量 B)整型表達式

        C)整型常量或整型表達式 D)任何類型的表達式

        參考答案:C

        參考分析:嚴格的說法應(yīng)當是常量表達式。

        6.2以下對一維數(shù)組a的正確說明是 。

        A) int n; scanf("%d",&n); int a[n]; B)int n=10,a[n];

        C) int a(10); D)#define SIZE 10

        int a[SIZE];

        參考答案:D

        6.3若有說明:int a[10];則對數(shù)組元素的正確引用是 。

        A)a[10] B)a[3,5] C)a(5) D)a[10-10]

        參考答案:D

        6.4 在C語言中,一維數(shù)組的定義方式為:類型說明符 數(shù)組名 。

        A)[常量表達式] B)[整型表達式]

        C)[整型表達式]或[整型常量] D)[整型常量]

        參考答案:A

        6.5 以下能對一維數(shù)組a進行正確初始化的語句是 。

        A)int a[10]=(0,0,0); B)int a[10]={};

        C)int a[]={0}; D)int a[10]={10*1};

        參考答案:CD

        參考分析:本題題目設(shè)計有問題,D也是正確的。

        6.6 以下對二維數(shù)組a的正確說明是 。

        A)int a[3][]; B)float a(3,4);

        C)double a[1][4]; D)float a(3)(4);

        參考答案:C

        6.7若有說明:int a[3][4];則對a數(shù)組元素的正確引用是 。

        A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)

        參考答案:C

        參考分析:在實際應(yīng)用中a[2][4]這種應(yīng)用方式實質(zhì)上訪問的是a[3][0],這是越界訪問。

        6.8 若有說明:int a[3][4];則對a數(shù)組元素的非法引用是 。

        A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]

        參考答案:D

        參考分析:a[0][4]實質(zhì)上訪問的是a[1][0],嚴格意義上并不非法。

        6.9 以下能對二維數(shù)組a進行正確初始化的語句是 。

        A)int a[2][]={{1,0,1},{5,2,3}};

        B)int a[][3]={{1,2,3},{4,5,6}};

        C)int a[2][4]={{1,2,3},{4,5},{6}};

        D)int a[][3]={{1,0,1}{},{1,1}};

        參考答案:B

        6.10以下不能對二維數(shù)組a進行正確初始化的說明是 。

        A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}};

        C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6};

        參考答案:C

        6.11 若有說明:int a[3][4]={0};則下面正確的敘述是 。

        A)只有元素a[0][0]可以得到初值0

        B)此說明語句不正確

        C)數(shù)組中各元素都可以得到初值,但其值不一定為0

        D)數(shù)組中每個元素均可得到初值0

        參考答案:D

        6.12若有說明:int a[][4]={0,0};則下面不正確的敘述是 。

        A)數(shù)組a的每個元素都可得到初值0

        B)二維數(shù)組a的第一維大小為1

        C)因為二維數(shù)組a中第二維大小的值除初值個數(shù)的商為0,故數(shù)組a的行數(shù)為1

        D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

        參考答案:D

        6.13 若有說明:static int a[3][4];則數(shù)組中各元素 。

        A)可在程序的運行階段得到初值0

        B)可在程序的編譯階段得到初值0

        C)不能得到確定的初值

        D)可在程序的編譯或運行階段得到初值0

        參考答案:B

        6.14 以下各組選項中,均能正確定義二維實型數(shù)組a的選項是 。

        A)float a[3][4]; B)float a(3,4);

        float a[][4]; float a[3][4];

        float a[3][]={{1},{0}}; float a[][]={{0},{0}};

        C)float a[3][4]; D)float a[3][4];

        static float a[][4]={{0},{0}}; float a[3][];

        auto float a[][4]={{0},{0},{0}}; float a[][4];

        參考答案:C

        6.15 下面程序有錯誤的行是 (行前數(shù)字表示行號)。

        1 main()

        2 { int a[3]={3*0};

        3 int i;

        4 for(i=0;i<3;i++)

        5 scanf("%d",&a[i]);

        6 for(i=1;i<3;i++) a[0]=a[0]+a[i];

        7 printf("%d\n",a[0]);

        8 }

        A)第2行有錯誤 B)第6行有錯誤

        C)第7行有錯誤 D)沒有錯誤

        參考答案:習題集中答案為A,實質(zhì)上應(yīng)當選擇D

        6.16下面程序有錯誤的行是 (行前數(shù)字表示行號)。

        1 main()

        2 {

        3 float a[10]={0.0};

        4 int i;

        5 for(i=0;i<3;i++) scanf("%d",&a[i]);

        6 for(i=1;i<10;i++) a[0]=a[0]+a[i];

        7 printf("%f\n",a[0]);

        8 }

        A)沒有錯誤 B)第3行有錯誤

        C)第5行有錯誤 D)第7行有錯誤

        參考答案:C

        6.17下面程序有錯誤的行是 (行前數(shù)字表示行號)。

        1 main()

        2 {

        3 int a[3]={1};

        4 int i;

        5 scanf("%d",&a);

        6 for(i=1;i<3;i++) a[0]=a[0]+a[i];

        7 printf("a[0]=%d\n",a[0]);

        8 }

        A)3 B)6 C)7 D)5

        參考答案:D

        6.18下面程序有錯誤的行是 (行前數(shù)字表示行號)。

        1 main()

        2 {

        3 int a[3]={0};

        4 int i;

        5 for(i=0;i<3;i++) scanf("%d",&a[i]);

        6 for(i=1;i<4;i++) a[0]=a[0]+a[i];

        7 printf("%d\n",a[0]);

        8 }

        A)沒有錯誤 B)3 C)5 D)6

        參考答案:D

        6.19 若二維數(shù)組a有m列,則計算任一元素a[i][j]在數(shù)組中位置的公式為(假設(shè)a[0][0]位于數(shù)組的第一個位置上) 。

        A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

        參考答案:D

        6.20 對說明語句int a[10]={6,7,8,9,10};的正確理解是 。

        A)將5個初值依次a[1]至a[5]

        B)將5個初值依次a[0]至a[4]

        C)將5個初值依次a[5]至a[9]

        D)將5個初值依次a[6]至a[10]

        參考答案:B

        6.21 以下不正確的定義語句是 。

        A)double x[5]={2.0,4.0,6.0,8.0,10.0};

        B)int y[5]={0,1,3,5,7,9};

        C)char c1[]={'1','2','3','4','5'};

        D)char c2[]={'\x10','\xa','\x8'};

        參考答案:B

        6.22 若有說明:int a[][3]={1,2,3,4,5,6,7};則a數(shù)組第一維的大小是 。

        A)2 B)3 C)4 D)無法確定

        參考答案:B

        6.23 若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為 。

        A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1

        參考答案:B

        6.24 定義如下變量和數(shù)組:int k,a[3][3]={1,2,3,4,5,6,7,8,9};則下面語句的輸出結(jié)果是 。

        for(k=0;k<3;k++) printf("%d ",a[k][2-k]);

        A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7

        參考答案:A

        6.25以下程序段的作用是 。

        int a[]={4,0,2,3,1},i,j,t;

        for (i=1;i<5;i++)

        {t=a[i];j=i-1;

        while (j>=0&&t>a[j])

        {a[j+1]=a[j];j- -;}

        a[j+1]=t;

        }

        A)對數(shù)組a進行插入排序(升序)

        B)對數(shù)組a進行插入排序(降序)

        C)對數(shù)組a進行選擇排序(升序)

        D)對數(shù)組a進行選擇排序(降序)

        參考答案:B

        6.26 以下正確的定義語句是 。

        A)int a[1][4]={1,2,3,4,5}; B)float x[3][]={{1},{2},{3}};

        C)long b[2][3]={{1},{2,3},{4,5,6}}; D)double y[][3]={0};

        參考答案:D

        6.27 下面程序的運行結(jié)果是 。

        #include

        main()

        {int a[6][6],i,j;

        for(i=1;i<6;i++)

        for(j=1;j<6;j++)

        a[i][j]=(i/j)*(j/i);

        for(i=1;i<6;i++)

        {for(j=1;j<6;j++)

        printf("%2d",a[i][j]);

        printf("\n");

        }

        }

        A) 1 1 1 1 1 B) 0 0 0 0 1 C) 1 0 0 0 0 D) 1 0 0 0 1

        1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0

        1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0

        1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0

        1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1

        參考答案:C

        6.28 下面程序的運行結(jié)果是 。

        #include

        main()

        {int a[6],i;

        for(i=1;i<6;i++)

        {a[i]=9*(i-2+4*(i>3))%5;

        printf("%2d",a[i]);

        }

        }

        A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0

        參考答案:C

        *6.29下面是對s的初始化,其中不正確的是 。

        A)char s[5]={"abc"}; B)char s[5]={'a','b','c'};

        C)char s[5]=""; D)char s[5]="abcde";

        參考答案:D

        *6.30下面程序段的運行結(jié)果是 。

        char c[5]={'a','b','\0','c','\0'};

        printf("%s",c);

        A)'a''b' B)ab C)ab c D)ab▄(▄表示空格)

        參考答案:B

        *6.31對兩個數(shù)組a和b進行如下初始化

        char a[]="ABCDEF";

        char b[]={'A','B','C','D','E','F'};

        則以下敘述正確的是 。

        A)a與b數(shù)組完全相同 B)a與b數(shù)組長度相同

        C)a和b中都存放字符串 D)a數(shù)組比b數(shù)組長度長

        參考答案:D

        6.32有兩個字符數(shù)組a、b,則以下正確的輸入語句是 。

        A)gets(a,b); B)scanf("%s%s",a,b);

        C)scanf("%s%s",&a,&b); D)gets("a");gets("b");

        參考答案:B

        6.33有字符數(shù)組a[80]和b[80],則正確的輸出語句是 。

        A)puts(a,b); B)printf("%s,%s",a[],b[]);

        C)putchar(a,b); D)puts(a),puts(b);

        參考答案:D

        *6.34 下面程序段的運行結(jié)果是 。

        char a[7]="abcdef",b[4]="ABC";

        strcpy(a,b);

        printf("%c",a[4]);

        A)■ B)\0 C)e D)ef

        參考答案:C

        6.35有下面程序段,上機運行,將 。

        char a[3],b[]="China";

        a=b;

        printf("%s",a);

        A)輸出China B)輸出Chi C)輸出Ch D)編譯出錯

        參考答案:D

        *6.36下面程序段的運行結(jié)果是 。

        char c[]="\t\v\\\0will\n";

        printf("%d",strlen(c));

        A)3 B)6 C)9 D)14

        參考答案:A

        6.37 判斷字符串a(chǎn)和b是否相等,應(yīng)當使用 。

        A)if(a==b) B)if(a=b) C)if(strcmp(a,b)) D)if(strcmp(a,b)==0)

        參考答案:D

        6.38判斷字符串s1是否大于字符串s2,應(yīng)當使用 。

        A) if (s1>s2) B) if (strcmp(s1,s2)

        C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0)

        參考答案:D

        6.39下面程序段輸出兩個字符串中對應(yīng)相等的字符。請分析程序填空。

        char x[]="programming";

        char y[]="Fortran";

        ini i=0;

        while (x[i]!='\0'&&y[i]!='\0')

        if (x[i]= =y[i]) printf("%c", );

        else i++;

        A)x[i++] B)y[++i] C)x[i] D)y[i]

        參考答案:A

        6.40 下面描述正確的是 。

        A)兩個字符串包含的字符個數(shù)相同時,才能比較字符串

        B)字符個數(shù)多的字符串比字符個數(shù)少的字符串大

        C)字符串"STOP"與"STOP■"相等

        D)字符串"That"小于字符串"The"

        參考答案:D

        6.41 下面對C語言字符數(shù)組的描述中錯誤的是 。

        A)字符數(shù)組可以存放字符串

        B)字符數(shù)組的字符串可以整體輸入、輸出

        C)可以在賦值語句中通過賦值運算符對字符數(shù)組整體賦值

        D)不可以用關(guān)系運算符對字符數(shù)組中的字符串進行比較

        參考答案:C

        ***6.42 有已排好序的字符串a(chǎn),下面的程序是將字符串s中的每個字符按升序的規(guī)律插入到a中。請選擇填空。

        #include

        main()

        {char a[20]="cehiknqtw";

        char s[]="fbla";

        int i,k,j;

        for(k=0;s[k]!='\0';k++)

        {j=0;

        while(s[k]>=a[j]&&a[j]!='\0') j++;

        for(【1】) 【2】;

        s[j]=s[k];

        }

        puts(a);

        }

        【1】A)i=strlen(a)+k;i>=j;i-- B)i=strlen(a);i>=j;i--

        C)i=j;i<=strlen(a)+k;i++ D)i=j;i<=strlen(a);i++

        【2】A)a[i]=a[i+1] B)a[i+1]=a[i]

        C)a[i]=a[i-1] D)a[i-1]=a[i]

        參考答案:【1】B 【2】B

        參考分析:向有序數(shù)據(jù)中插入數(shù)據(jù)關(guān)鍵在于兩點,一是查找插入位置——查找插入位置注意兩個問題,插入的數(shù)據(jù)與有序數(shù)組中數(shù)據(jù)的大小關(guān)系和注意防止向右越界。再一個是有序數(shù)組元素后移時自后向前。

        ***6.43下面程序的功能是將已按升序排好序的兩個字符串a(chǎn)和b中的字符,按升序歸并到字符串c中。請分析程序填空。

        #include "stdio.h"

        main()

        {char a[]="acegikm";

        char b[]="bdfhjlnpq";

        char c[80],*p;

        int i=0,j=0,k=0;

        while (a[i]!='\0'&&b[j]!='\0')

        {if (a[i]<b[j]) p="" {【1】}

        else {【2】};

        k++;

        }

        c[k]='\0';

        if (【3】) p=b+j;

        else p=a+i;

        strcat(c,p);

        puts(c);

        }

        【1】【2】

        A)c[k]=a[i];i++ B)c[k]=b[j];i++

        C)c[k]=a[i];j++ D)c[k]=b[j];j++

        【3】A)a[i]=='\0' B)a[i]!='\0' C)a[i-1]=='\0' D)a[i-1]!='\0'

        參考答案:【1】A 【2】D 【3】A

        參考分析:歸并排序的要點是將兩個數(shù)組a和b的下標逐次后移,存放的是那個數(shù)組的元素,就移動那個數(shù)組的下標,而目標數(shù)組c則每次循環(huán)都要移動,當a,b數(shù)組其中一個到達結(jié)束標志后,再將沒到達結(jié)束標志的數(shù)組中剩余的數(shù)據(jù)全部寫到目的數(shù)組中。

        ***6.44下面程序的功能是將字符串s中所有的字符'c'刪除。

        #include "stdio.h"

        main()

        {char s[80];

        int i,j;

        gets(s);

        for (i=j=0;s[i]!='\0';i++)

        if (s[i]!='c') ;

        s[j]='\0';

        puts(s);}

        A)s[j++]=s[i] B)s[++j]=s[i] C)s[j]=s[i];j++ D)s[j]=s[i]

        參考答案:A

        參考分析:刪除指定字符的程序要點在于采用雙下標,一個下標對數(shù)組從頭到尾進行逐個掃描,另外一個下標則只有當寫入不刪除字符時才向后移動。其關(guān)鍵思想就是:s[j++]=s[j]。

        *6.45 下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔。請分析程序填空。

        #include

        main()

        {char s[80],c1,c2=' ';

        int i=0,num=0;

        gets(s);

        while(s[i]!='\0')

        {c1=s[i];

        if( ) num++;

        i++;

        c2=c1;

        }

        printf("There are %d words.\n",num);

        }

        A)c1==' '&&c2==' ' B)c1!=' '&&c2==' '

        C)c1==' '&&c2!=' ' D)c1!=' '&&c2!=' '

        參考答案:B

        參考分析:判斷是不是一個單詞的要點就是當前字符不是空格而前一個字符是空格。

        6.46 下面程序的運行結(jié)果是 。

        #include

        main()

        {char ch[7]={"12ab56"};

        int i,s=0;

        for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

        s=10*s+ch[i]-'0';

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

        }

        A)1 B)1256 C)12ab56 D)1 2 5 6

        參考答案:A

        6.47 當運行以下程序時,從鍵盤輸入:aa bbcc dd則下面程序的運行結(jié)果是 。

        #include

        main()

        {char a1[5],a2[5],a3[5],a4[5];

        scanf("%s%s",a1,a2);

        gets(a3);gets(a4);

        puts(a1);puts(a2);puts(a3);puts(a4);

        }

        A)aa B)aa C)aa D)aa bb

        bb bb bb cc

        cc cc dd dd

        cc dd dd ee

        參考答案:A

        6.48 當運行以下程序時,從鍵盤輸入abcdef,則下面程序的運行結(jié)果是 。

        #include

        #define N 6

        main()

        {char c[N];int i=0;

        for(;i<n;c[i]=getchar(),i++);< p="">

        for(i=0;i<n;i++) p="" putchar(c[i]);

        }

        A)abcdef B)ab C)a D)ab

        c c c

        def d d

        參考答案:D

        6.49 當運行以下程序時,從鍵盤輸入:AhaMA Aha,則下面程序的運行結(jié)果是 。

        #include

        main()

        {char s[80],c='a';

        int i=0;

        scanf("%s",s);

        while(s[i]!='\0')

        {if(s[i]==c) s[i]=s[i]-32;

        else if(s[i]==c-32) s[i]=s[i]+32;

        i++;

        }

        puts(s);

        }

        A)ahAMa B)AhAMa C)AhAMa ahA D)ahAMa ahA

        參考答案:A

        6.50 下面程序的運行結(jié)果是 。

        #include

        #include

        main()

        {char a[20]="AB",b[20]="LMNP";

        int i=0;strcat(a,b);

        while(a[i++]!='\0') b[i]=a[i];

        puts(b);

        }

        A)LB B)ABLMNP C)AB D)LBLMNP

        參考答案:D

        6.51下面程序的運行結(jié)果是 。

        #include

        main()

        {char str[]="SSSWLIA",c;

        int k;

        for(k=2;(c=str[k])!='\0';k++)

        {switch(c)

        {case 'I':++k;break;

        case 'L':continue;

        default:putchar(c);continue;

        }

        putchar('*');

        }

        }

        A)SSW* B)SW* C)SW*A D)SW

        參考答案:B

        6.52下面程序的運行結(jié)果是 。

        #include

        main()

        {char a[]="morning",t;

        int i,j=0;

        for(i=1;i<7;i++) if(a[j]

        t=a[j];a[j]=a[7];a[7]=t;

        puts(a);

        }

        A)mogninr B)mo C)morning D)mornin

        參考答案:B

        6.2 填空題

        6.53 在c語言中,二維數(shù)組的定義方式為:類型說明符 數(shù)組名[【1】][【2】];

        參考答案:【1】【2】常量表達式

        6.54 在c語言中,二維數(shù)組在內(nèi)存中的存放順序是【 】。

        參考答案:按行主順序存放

        6.55 若有定義:double x[3][5];則x數(shù)組中行下標的下限為【1】,列下標的上限為【2】。

        參考答案:【1】0 【2】4

        6.56 若二維數(shù)組a有m列,則計算任一元素a[i][j]在數(shù)組中位置的公式為【 】。(假設(shè)a[0][0]位于數(shù)組的第一個位置上)

        參考答案:i*m+j+1

        6.57 若有定義:int a[3][4]={{1,2},{0},{4,6,8,10}};則初始化后,a[1][2]得到的初值是【1】,a[2][1]得到的初值是【2】。

        參考答案:【1】0【2】6

        6.58 若有以下輸入(數(shù)之間有空格),則下面程序的運行結(jié)果是 。

        7 16 5 4 6 7 9 8 3 2 4 6 12 2 -1

        main()

        {int b[51],x,i,j=0,n=0;

        scanf("%d",&x);

        while(x>-1){b[++n]=x;scanf("%d",&x);}

        for(i=1;i<=n;i++)

        if(b[i]%2==0) b[++j]=b[i];

        for(i=1;i<=j;i++) printf("%3d ",b[i]);

        }

        參考答案:16 4 6 8 2 4 6 12 2

        參考分析:本程序是刪除用戶所輸入的所有奇數(shù)。

        6.59 下面程序以每行4個數(shù)的形式輸出a數(shù)組,請分析程序填空。

        #define N 20

        main()

        {int a[N],i;

        for(i=0;i<n;i++) p="" scanf(?%d?,【1】);

        for(i=0;i<n;i++)< p="">

        {if(【2】) 【3】;

        printf("%3d",a[i]);

        }

        }

        參考答案:【1】&a[i] 【2】i%4==0 【3】printf("\n");

        6.60 下面程序?qū)⒍S數(shù)組a的行和列元素互換后存到另一個二維數(shù)組b中。請分析程序填空。

        main()

        {int a[2][3]={{1,2,3},{4,5,6}}, int b[3][2],i,j;

        printf("array a:\n");

        for(i=0;i<=1;i++)

        {for(j=0;【1】;j++)

        {printf("%5d",a[i][j]);

        【2】;

        }

        printf("\n");

        }

        printf("array b:\n");

        for(i=0;【3】;i++)

        {for(j=0;j<=1;j++)

        printf("%5d",b[i][j]);

        printf("\n");

        }

        }

        參考答案:【1】j<=2 【2】b[j][i]=a[i][j] 【3】i<=2

        6.61 下面程序的運行結(jié)果是 。

        main()

        {int a[2][3]={{1,2,3},{4,5,6}}, int b[3][2],i,j;

        printf("array a:\n");

        for(i=0;i<=1;i++)

        {for(j=0;j<=2;j++)

        {printf("%5d",a[i][j]);

        b[j][i]=a[i][j];

        }

        printf("\n");

        }

        printf("array b:\n");

        for(i=0;i<=2;i++)

        {for(j=0;j<=1;j++)

        printf("%5d",b[i][j]);

        printf("\n");

        }

        }

        參考答案:

        array a:

        1 2 3

        4 5 6

        array b:

        1 4

        2 5

        3 6

        6.62 下面程序可求出矩陣兩條對角線上的元素之和。請分析程序填空。

        main()

        {int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;

        for(i=0;i<3;i++)

        for(j=0;j<3;j++)

        if(i==j) sum1+=a[i][j];

        for(i=0;i<3;i++)

        for(【1】;【2】;j--)

        if(i+j==2) sum2+=a[i][j];

        printf("sum1=%d,sum2=%d\n",sum1,sum2);

        }

        參考答案:【1】j=2 【2】j>=0

        6.63 下面程序的運行結(jié)果是 。

        main()

        {int a[5][5],i,j,n=1;

        for(i=0;i<5;i++)

        for(j=0;j<5;j++)

        a[i][j]=n++;

        printf("The result is:\n");

        for(i=0;i<5;i++)

        {for(j=0;j<=i;j++)

        printf("%4d",a[i][j]);

        printf("\n");

        }

        }

        參考答案:1

        6 7

        11 12 13

        16 17 18 19

        21 22 23 24 25

        6.64 下面程序可求出矩陣a的主對角線上的元素之和。請分析程序填空。

        main()

        {int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

        for(i=0;i<3;i++)

        for(j=0;j<3;j++)

        if(【1】) sum+=【2】;

        printf("sum=%d\n",sum);

        }

        參考答案:【1】i==j 【2】a[i][j]

        6.65 以下程序可求出所有的水仙花數(shù)。(水仙花數(shù)是三位正數(shù),其各位數(shù)字的立方和等于該正數(shù),如:407=4*4*4+0*0*0+7*7*7)

        main()

        {int x,y,z,a[8],m,i=0;

        printf("The special numbers are :\n");

        for (【1】;m++)

        {x=m/100;

        y=【2】;

        z=m%10;

        if (m= =x*x*x+y*y*y+z*z*z)

        {【3】;i++;}

        }

        for (x=0;x<i;x++)< p="">

        printf(%6d",a[x]);

        }

        參考答案:【1】m=100;m<1000 【2】m/10%10或m%100/10 【3】a[i]=m

        6.66下面程序的功能是生成并打印某數(shù)列的前20項,該數(shù)列第1,2項分別為0和1,以后每個奇數(shù)編號的項是前兩項之和,偶數(shù)編號的項是前兩項差的絕對值。生成的20個數(shù)存在一維數(shù)組x中,并按每行4項的形式輸出。

        main()

        { int x[21],i,j;

        x[0]=0;x[2]=1;

        i=3;

        do

        {x[i]=【1】;

        x[i+1]=【2】;

        i=【3】;

        } while (i<=20);

        for (i=1;i<=20;i++)

        {printf("%5d",x[i]);

        if (i%4= =0)

        printf("\n");

        }

        }

        參考答案:【1】x[i-2]+x[i-1] 【2】x[i]-x[i-1] 【3】i+2

        6.67 若有以下輸入,則下面程序的運行結(jié)果是 。

        1 4 2 3 3 4 1 2 3 3 2 2 2 3 3 1 1 1 4 1 1 1 -1

        #define M 50

        main()

        {int a[M],c[4],i,n=0,x;

        printf("Enter 1 or 2 or 3 or 4,to end with -1\n");

        scanf("%d",&x);

        while(x!=-1)

        {if(x>0&&x<=4)

        {a[n-1]=x;n++;}

        scanf("%d",&x);

        }

        for(i=0;i<4;i++) c[i]=0;

        for(i=0;i<n;i++) p="" c[a[i]-1]++;

        printf("The result is:\n");

        for(i=1;i<=4;i++) printf("%d:%d\n",i,c[i-1]);

        printf("\n");

        }

        參考答案:

        The result is:

        1:8

        2:5

        3:6

        4:3

        6.68 下面程序的運行結(jié)果是 。

        main()

        {int i,j,a[2][3]={{2,4,6},{8,10,12}};

        printf("The original array is:\n");

        for(i=0;i<2;i++)

        {for(j=0;j<3;j++)

        printf("%4d",a[i][j]);

        printf("\n");

        }

        printf("\nThe result is:\n");

        for(i=0;i<3;i++)

        {for(j=0;j<2;j++)

        printf("%4d",a[j][i]);

        printf("\n");

        }

        }

        參考答案:

        The original array is:

        2 4 6

        8 10 12

        The result is:

        2 8

        4 10

        6 12

        6.69 設(shè)數(shù)組a包括10個整型元素,下面程序的功能是求出a中各相鄰兩個元素的和,并將這些和存在數(shù)組b中,按每行3個元素的形式輸出。請分析程序填空。

        void main()

        {int a[10],b[10],i;

        for(i=0;i<10;i++)

        scanf("%d",&a[i]);

        for(【1】;i<10;i++)

        【2】;

        for(i=1;i<10;i++)

        {printf("%3d",b[i]);

        if(【3】==0) printf("\n");

        }

        }

        參考答案:【1】i=1【2】b[i]=a[i-1]+a[i]【3】i%3

        6.70 下面程序是將十進制數(shù)轉(zhuǎn)換成不超過十六進制的n進制。請分析程序填空。

        #include

        main()

        {int i=0,base,n,j,num[20];

        printf("Enter data that will be converted:\n");

        scanf("%d",&n);

        printf("Enter base:\n");

        scanf("%d",&base);

        do

        {i++;

        num[i]=n【1】base;

        n=n【2】base;

        } while(n);

        printf("The data %d has been converted into the %d base data:\n",n,base);

        for(【3】)

        if(num[j]>9) putchar(num[j]+'A'-10);

        else putchar(num[j]+'0');

        }

        參考答案:【1】%【2】/【3】j=i;j>=1;j--

        6.71下面程序的功能是輸入5個整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對調(diào),然后輸出調(diào)整后的5個數(shù)。

        main()

        {int a[5],max,min,i,j,k;

        for (i=0;i<5;i++)

        scanf("%d:,&a[i];

        min=a[0];

        for (i=1;i<5;i++)

        if (a[i]

        max=a[0];

        for (i=1;i<5;i++)

        if a[i]>max) {max=a[i]; 【2】;}

        【3】

        printf("\nThe position of min is:%3d\n",k);

        printf("\nThe position of max is:%3d\n",j);

        for (i=0;i<5;i++)

        printf("%5d",a[i]);

        }

        參考答案:【1】j=i【2】k=i【3】a[j]=max;a[k]=min;

        6.72 下面程序的運行結(jié)果是 。

        main()

        {int i,f[10];

        f[0]=f[1]=1;

        for(i=2;i<10;i++)

        f[i]=f[i-2]+f[i-1];

        for(i=0;i<10;i++)

        {if(i%4==0) printf("\n");

        printf("%3d",f[i]);

        }

        }

        參考答案:

        1 1 2 3

        5 8 13 21

        34 55

        6.73 下面程序的運行結(jié)果是 。

        main()

        {int a[10]={1,2,2,3,4,3,4,5,1,5};

        int n=0,i,j,c,k;

        for(i=0;i<10-n;i++)

        {c=a[i];

        for(j=i+1;j<10-n;j++)

        if(a[j]==c)

        {for(k=j;k<10-n;k++)

        a[k]=a[k+1];

        n++;

        }

        }

        for(i=0;i<10-n;i++)

        printf("%3d",a[i]);

        }

        參考答案: 1 2 3 4 5

        **6.74 下面程序的功能是給一維數(shù)組a任意輸入6個整數(shù),假設(shè)為7 4 8 9 1 5,然后建立一個具有以下內(nèi)容的方陣并打印。請分析程序填空。

        5 7 4 8 9 1

        1 5 7 4 8 9

        9 1 5 7 4 8

        8 9 1 5 7 4

        4 8 9 1 5 7

        7 4 8 9 1 5

        main()

        {int a[6],i,j,k,m;

        for(i=0;i<6;i++)

        scanf("%d",&a[i]);

        for(i=5;i>=0;i--)

        {k=a[5];

        for(【1】;j>=0;j--)

        a[j+1]=a[j];

        【2】;

        for(m=0;m<6;m++)

        printf("%d ",a[m]);

        printf("\n");

        }

        }

        參考答案:【1】j=4 【2】a[0]=k

        參考分析:采用二維數(shù)組可以采用a[i][j]=a[i-1][(j-1+M)%M]的方式為0行以后的行進行賦值。

        **6.75 下面程序的功能是輸出以下n*n階(最大為9階)方陣。請分析程序填空。(以下例子是6階方陣)

        1 1 1 1 1 1

        1 2 2 2 2 1

        1 2 3 3 2 1

        1 2 3 3 2 1

        1 2 2 2 2 1

        1 1 1 1 1 1

        main()

        {int a[9][9],n,i,j,m;

        scanf("%d",&n);

        m=(n+1)/2;

        for(i=0;i<m;i++)< p="">

        for(j=0;j<n-i;j++)< p="">

        {a[i][j]=i+1;

        a[【1】][j]=i+1;

        a[j][i]=i+1;

        a[j][【2】]=i+1;

        }

        for(i=0;i<n;i++)< p="">

        {for(j=0;j<n;j++)< p="">

        printf("%3d",a[i][j]);

        printf("\n");

        }

        }

        參考答案:【1】【2】n-i-1

        6.76 當從鍵盤輸入18并回車后,下面程序的執(zhí)行結(jié)果是 。

        main()

        {int x,y,i,j,a[10];

        scanf("%d",&x);

        y=x;i=0;

        do

        {a[i++]=y%2;

        y=y/2;

        }while(y);

        for(j=i-1;j>=0;j--)

        printf("%d",a[j]);

        }

        參考答案:10010

        6.77 下面程序的功能是將二維數(shù)組a中每個元素向右一列,最后一列換到最左一列,移后的數(shù)組存到另一二維數(shù)組b中,并按矩陣形式輸出a和b。請分析程序填空。

        例如:array a: array b:

        4 5 6 6 4 5

        1 2 3 3 1 2

        main()

        {int i,j,a[2][3]={4,5,6,1,2,3},b[2][3];

        printf("array a:\n");

        for(i=0;i<2;i++)

        for(j=0;j<3;j++)

        {printf("%4d",a[i][j];

        【1】;

        }

        for(【2】;i++) b[i][0]=a[i][2];

        printf("array b:\n");

        for(i=0;i<2;i++)

        { for(j=0;j<3;j++)

        printf("%4d",b[i][j]);

        【3】;

        }

        }

        參考答案:【1】b[i][j+1]=a[i][j] 【2】i=0;i<2 【3】printf("\n")

        *6.78 下面程序的功能是統(tǒng)計年齡在16-31歲之間的學生人數(shù)。請分析程序填空。

        main()

        {int a[16],n,age,i;

        for(i=0;i<16;i++) a[i]=0;

        printf("Enter the age of each student(to end with -1):\n");

        scanf("%d",&age);

        while(age>-1)

        {【1】;

        scanf("%d",&age);

        }

        printf("The result is:\n");

        for(【2】;i++)

        printf("%3d%6d\n",i,a[i-16]);

        }

        參考答案:【1】a[age-16]++ 【2】i=16;i<=31

        6.79 下面程序的功能是檢查一個二維數(shù)組是否對稱(即對所有i和j都有a[i][j]=a[j][i])。請分析程序填空。

        main()

        {int i,j,found=0,a[4][4];

        printf("Enter array(4*4):\n");

        for(i=0;i<4;i++)

        for(j=0;j<4;j++)

        scanf("%d",&a[i][j]);

        for(j=0;j<4;j++)

        for(【1】;i<4;i++)

        if(a[j][i]!=a[i][j])

        {【2】;break;}

        if(found) printf("No");

        else printf("Yes");

        }

        參考答案:【1】i=j+1 【2】found=1

        6.80 下面程序中的數(shù)組a包括10個整數(shù)元素,從a中第二個元素起,分別將后項減前項之差存入數(shù)組b,并按每行3個元素輸出數(shù)組b。請分析程序填空。

        main()

        {int a[10],b[10],i;

        for(i=0;【1】;i++)

        scanf("%d",&a[i]);

        for(i=1;【2】;i++)

        b[i]=a[i]-a[i-1];

        for(i=1;i<10;i++)

        {printf("%3d",b[i]);

        if(【3】) printf("\n");

        }

        }

        參考答案:【1】i<10 【2】i<10 【3】i%3==0

        6.81 下面程序的運行結(jié)果是 。

        main()

        {int i=1,n=3,j,k=3, a[5]={1,4,5};

        while(i

        for(j=n-1;j>=i;j--)

        a[j+1]=a[j];

        a[i]=k;

        for(i=0;i<=n;i++)

        printf("%3d",a[i]);

        }

        參考答案: 1 3 4 5

        **6.82下面程序的運行結(jié)果是 。

        #include "stdio.h"

        #define LEN 12

        int num[]={3,4,5,6,7,8,9,10,11,12,13,14};

        main()

        {int i,j,k,x,y;

        x=0;y=LEN-1;

        while(x<=y)

        {j=num[x];i=2;k=1;

        while (i<=j/2&&k) //判斷j是否為素數(shù)

        k=j%i++;

        if (k)

        printf(“%3d”,num[x++];

        else //j不是素數(shù)首尾數(shù)據(jù)互換,尾指針前移

        {num[x]=num[y];

        num[y--]=j;

        }

        }

        for (i=0;i<x;i--)< p="">

        printf(“%5d”,num[i]);

        }

        參考答案: 3 13 5 11 7

        參考分析:該程序?qū)?shù)組設(shè)置了頭尾兩個下標,對數(shù)組自前向后檢查各元素是否為素數(shù),如果是則輸出該元素,頭下標后移,繼續(xù)檢查下一個元素;如果不是,則將數(shù)組后面的元素與正檢查的數(shù)組元素互換,尾下標前移,繼續(xù)檢查,直到頭下標大于尾下標。

        6.83 設(shè)數(shù)組中的元素均為正整數(shù),以下程序是求a中偶數(shù)的個數(shù)和偶數(shù)的平均值。請分析程序填空。

        main()

        {int a[10]={1,2,3,4,5,6,7,8,9,10},k,i;

        float ave,s=0;

        for(k=s=i=0;i<10;i++)

        {if(a[i]%2!=0) 【1】;

        s+=【2】;

        k++;

        }

        if(k!=0) {ave=s/k;printf("%d,%f\n",k,ave);}

        }

        參考答案:【1】continue 【2】a[i]

        6.84 以下程序是求矩陣a,b的和,結(jié)果存入矩陣c中,并按矩陣形式輸出。請分析程序填空。

        main()

        {int a[3][4]={{1,3,5,7},{4,7,2,5},{-8,2,5,6}};

        int b[3][4]={{-2,6,7,3},{-1,5,4,7},{8,9,3,2}};

        int i,j,c[3][4];

        for(i=0;i<3;i++)

        for(j=0;j<4;j++)

        c[i][j]=【1】;

        for(i=0;i<3;i++)

        {for(j=0;j<4;j++)

        printf("%3d",c[i][j]);

        【2】;

        }

        }

        參考答案:【1】a[i][j]+b[i][j] 【2】printf("\n")

        6.85 以下程序是求矩陣a,b的乘積,結(jié)果存入矩陣c中并按矩陣形式輸出。請分析程序填空。

        main()

        {int a[3][2]={2,3,4,6,3,1},b[2][2]={6,-1,8,3};

        int i,j,k,s,c[3][2];

        for(i=0;i<3;i++)

        for(j=0;j<2;j++)

        {for(【1】;k<2;k++)

        s+=【2】;

        c[i][j]=s;

        }

        for(i=0;i<3;i++)

        {for(j=0;j<2;j++)

        printf("%6d",c[i][j]);

        【3】;

        }

        }

        參考答案:【1】s=0,k=0 【2】a[i][k]*b[k][j] 【3】printf("\n")

        6.86 已知以下矩陣:

        y1 1 -0.2 0 0 1

        y2 -0.8 1 -0.2 -0.2 1

        y3= 0 -0.8 1 -0.2 × 1

        y4 0 -0.8 -0.8 1 1

        下面程序的功能是求出y1,y2,y3,y4的值。請分析程序填空。

        main()

        {float a[4][4]={{1,-0.2,0,0},{-0.8,1,-0.2,-0.2},{0,-0.8,1,-0.2},{0,-0.8,-0.8,1}};

        float x[4]={1,1,1,1},y[4];

        int i,j,k;

        for(i=0;i<4;i++)

        {y[i]=0;

        for(j=0;j<4;j++)

        【1】;

        }

        for(k=0;k<4;k++)

        printf("\ny[%d]=%-6.2f",k+1,【2】);

        }

        參考答案:【1】y[i]+=a[i][j]*x[i] 【2】y[k]

        6.87 以下程序的功能是求數(shù)組num中小于零的數(shù)據(jù)之和。請分析程序填空。

        main()

        {int num[20]={2,-3,51,-72,86,4,0,-23,3,-65,-1,0,5,8,2,-4,-7,-9,4,-8};

        int sum=0,i;

        for(i=0;i<20;i++)

        {if(【1】)

        sum=【2】;

        }

        printf("sum=%d\n",sum);

        }

        參考答案:【1】num[i]<0 【2】sum+num[i]

        6.88 以下程序的功能是 。

        main()

        {int num[20]={2,-3,51,-72,86,4,0,-23,3,-65,-1,0,5,8,2,-4,-7,-9,4,-8};

        int sum=0,i;

        for(i=0;i<20;i++)

        {if(num[i]>0)

        sum+=num[i];

        }

        printf("sum=%d\n",sum);

        }

        參考答案:求取num數(shù)組中大于0的所有數(shù)據(jù)之和。

        6.89 下面程序的運行結(jié)果是 。

        main()

        {int i,j,row,col,min;

        int a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,7,-5}};

        min=a[0][0];row=0;col=0;

        for(i=0;i<3;i++)

        for(j=0;j<3;j++)

        if(a[i][j]<min)< p="">

        {min=a[i][j];row=i;col=j;}

        printf("min=%d,row=%d,col=%d\n",min,row,col);

        }

        參考答案:min=-5,row=2,col=3

        參考分析:在二維數(shù)組中查找最小值及它的下標。

        ***6.90 若輸入52,則下面程序的運行結(jié)果是 。

        main()

        {int a[8]={6,12,18,42,46,52,67,73};

        int low=0,mid,high=7,x;

        printf("Input a x:");

        scanf("%d",&x);

        while(low<=high)

        {mid=(low+high)/2;

        if(x>a[mid]) low=mid+1;

        else if(x

        else break;

        }

        if(low<=high) printf("Search Successful! The index is:%d\n",mid);

        else printf("Can't search!\n");

        }

        參考答案:Search Successful! The index is:5

        參考分析:本題為典型的折半查找,要點有三:1.循環(huán)條件為low<=high;2.查找處理是一個三分支;3.總是把中點的前點作為后點或把中點的后點作為前點。

        **6.91 下面程序的運行結(jié)果是 。

        main()

        {int a[9]= {0,6,12,18,42,46,52,67,73};

        int x=52;i,n=9,m;

        i=n/2+1;m=n/2;

        while(m!=0)

        {if(x<a[i])< p="">

        i=i-m/2-1;

        else if(x>a[i])

        i=i+m/2+1;

        else break;

        m=m/2;

        }

        if (m) printf("The index is:%d",i);

        else printf("Can't search.");

        }

        參考答案:The index is:6

        參考分析:這是折半查找的變形題目,本算法僅計算數(shù)組中間元素的下標。計算中點下標時巧妙地利用了數(shù)據(jù)元素個數(shù)的“折半”。

        6.92 下面程序用“順序查找法”查找數(shù)組a中是否存在某一關(guān)鍵字。請分析程序填空。

        main()

        {int a[8]={25,57,48,37,12,92,86,33};

        int i,x;

        scanf("%d",&x);

        for(i=0;i<8;i++)

        if(x==a[i])

        {printf("Found! The index is:%d\n",i);【1】;}

        if(【2】)

        printf("Can't found!");

        }

        參考答案:【1】break 【2】i>=8

        **6.93 下面程序用“快速順序查找法”查找數(shù)組a中是否存在某一關(guān)鍵字。請分析程序填空。

        main()

        {int a[9]={11,23,41,27,42,64,82,59};

        int i=0,x;

        scanf("%d",&x);

        【1】;

        while(a[i]!=x) i++;

        if(【2】) printf("Found! The index is:%d\n",i);

        else printf("Can't found!\n");

        }

        參考答案:【1】a[8]=x 【2】i<8

        參考分析:如果數(shù)組中不存在需要查找的數(shù)據(jù),循環(huán)條件設(shè)置為a[i]!=x無疑會使得對數(shù)組的訪問產(chǎn)生右越界。將欲查找的數(shù)據(jù)放到數(shù)組的最后位置可以防止查找過程發(fā)生右越界。

        ***6.94 下面程序用插入法對數(shù)組a進行降序排序。請分析程序填空。

        main()

        {int a[5]={4,7,8,2,5};

        int i,j,m;

        for(i=1;i<5;i++)

        {m=a[i];

        j=【1】;

        while(j>=0&&m>a[j])

        {【2】;

        j--;

        }

        【3】=m;

        }

        for(i=0;i<5;i++)

        printf("%3d",a[i]);

        printf("\n");

        }

        參考答案:【1】i-1 【2】a[j+1]=a[j] 【3】a[j+1]

        參考分析:插入排序是一種很重要的排序方法。它的排序思想及相應(yīng)的技巧需要好好掌握。

        6.95 下面程序用“兩路合并法”把兩個已按升序排列的數(shù)組合并成一個升序數(shù)組。請分析程序填空。

        main()

        {int a[3]={5,9,19};

        int b[5]={12,24,26,37,48};

        int c[10],i=0,j=0,k=0;

        while(i<3&&j<5)

        if(【1】)

        {c[k]=b[j];k++;j++;}

        else

        {c[k]=a[i];k++;i++;}

        while(【2】)

        {c[k]=a[i];i++;k++;}

        while(【3】)

        {c[k]=b[j];k++;j++;}

        for(i=0;i<k;i++)< p="">

        printf("%3d",c[i]);

        }

        參考答案:【1】a[i]>b[j] 【2】i<3 【3】j<5

        6.96 下面程序的運行結(jié)果是 。

        main()

        {int a[6][6],i,j;

        for(i=1;i<6;i++)

        for(j=1;j<6;j++)

        a[i][j]=(i/j)*(j/i);

        for(i=1;i<6;i++)

        {for(j=1;j<6;j++)

        printf("%2d",a[i][j]);

        printf("\n");

        }

        }

        參考答案:

        1 0 0 0 0

        0 1 0 0 0

        0 0 1 0 0

        0 0 0 1 0

        0 0 0 0 1

        6.97 若輸入32458,則下面程序的運行結(jié)果是 。

        main()

        {int i=0,base,n,j,old,num[20];

        printf("Enter data that will be converted:");

        scanf("%d",&n);

        old=n;

        printf("Enter base:");

        scanf("%d",&base);

        do

        {i++;

        num[i]=n%base;

        n=n/base;

        }while(n!=0);

        printf("The data %d has been converted into the %d-base data:\n",old,base);

        for(j=i;j>=1;j--)

        printf("%5d",num[j]);

        }

        參考答案:

        Enter data that will be converted:3245

        Enter base:8

        The data 3245 has been converted into the 8-base data:

        6 2 5 5

        6.98 若輸入7 4 8 9 1 5,則下面程序的運行結(jié)果是 。

        main()

        {int a[6],i,j,k,m;

        for(i=0;i<6;i++)

        scanf("%d",&a[i]);

        for(i=5;i>=0;i--)

        {k=a[5];

        for(j=4;j>=0;j--)

        a[j+1]=a[j];

        a[0]=k;

        for(m=0;m<6;m++)

        printf("%3d",a[m]);

        printf("\n");

        }

        }

        參考答案:

        5 7 4 8 9 1

        1 5 7 4 8 9

        9 1 5 7 4 8

        8 9 1 5 7 4

        4 8 9 1 5 7

        7 4 8 9 1 5

        6.99 下面程序的運行結(jié)果是 。

        main()

        {int a[10]={1,2,3,4,5,6,7,8,9,10}, k,i;

        float ave,s=0;

        for(k=i=0;i<10;i++)

        {if(a[i]%2==0) continue;

        s+=a[i];

        k++;

        }

        if(k!=0)

        {ave=s/k;

        printf("The number is:%d, The average is:%f\n",k,ave);

        }

        }

        參考答案:The number is:5, The average is:5.000000

        6.100 若有以下輸入,則下面程序的運行結(jié)果是 。

        3 1 2 3 2 2 2 1 1 3 0

        main()

        {int a[4],x,i;

        for(i=1;i<=3;i++) a[i]=0;

        scanf("%d",&x);

        while(x>0) {a[x]+=1;scanf("%d",&x);}

        for(i=1;i<=3;i++) printf("a[%2d]=%4d\n",i,a[i]);

        }

        參考答案:

        a[ 1]= 3

        a[ 2]= 4

        a[ 3]= 3

        6.101 若有以下輸入,則下面程序的運行結(jié)果是 。

        5

        9 7 5 3 1

        5

        main()

        {int a[10],x,i,n;

        printf("Enter n(n<10):");

        scanf("%d",&n);

        for(i=1;i<=n;i++) scanf("%d",a+i);

        printf("Enter x:");scanf("%d",&x);

        a[0]=x;i=n;

        while(x>a[i]) {a[i+1]=a[i];i--;}

        a[i+1]=x;

        n++;

        for(i=1;i<=n;i++) printf("%3d",a[i]);

        printf("\n");

        }

        參考答案: 9 7 5 5 3 1

        6.102 下面程序的運行結(jié)果是 。

        #define SIZE 30

        main()

        {float a[SIZE],b[SIZE/5],sum;

        int i,k;

        for(k=2,i=0;i<size;i++)< p="">

        {a[i]=k;k+=2;}

        sum=0;

        for(k=0,i=0;i<size;i++)< p="">

        {sum+=a[i];

        if((i+1)%5==0)

        {b[k]=sum/5;

        sum=0;

        k++;

        }

        }

        printf("The result is:\n");

        for(i=0;i<size p="" printf(?%5.2f?,b[i]);

        printf("\n");

        }

        參考答案:The result is :

        6.00 16.00 26.00 36.00 46.00 56.00

        6.103 下面程序的功能是求出矩陣x的上三角元素之積。其中矩陣x的行、列數(shù)和元素值均由鍵盤輸入。請分析程序填空。

        #define M 10

        main()

        {int x[M][M];

        int n,i,j;

        long s=1;

        printf("Enter a integer(<=10):\n");

        scanf("%d",&n);

        printf("Enter %d data on each line for the array x\n",n);

        for(【1】)

        for(j=0;j<n;j++)< p="">

        scanf("%d",&x[i][j]);

        for(i=0;i<n;i++)< p="">

        for(【2】)

        【3】;

        printf("%ld\n",s);

        }

        參考答案:【1】i=0;i

        6.104 若有以下輸入,則下面程序的運行結(jié)果是 。

        4

        1 2 3 4

        1 2 3 4

        1 2 3 4

        1 2 3 4

        #define M 10

        main()

        {int x[M][M];

        int n,i,j;

        long s=1;

        printf("Enter a integer(<10):\n");

        scanf("%d",&n);

        printf("Enter %d data on each line for the array x\n",n);

        for(i=0;i<n;i++)< p="">

        for(j=0;j<n;j++)< p="">

        scanf("%d",&x[i][j]);

        for(i=0;i<n;i++)< p="">

        for(j=i;j<n;j++)< p="">

        s=s*x[i][j];

        printf("The result =%ld\n",s);

        }

        參考答案:The result=27648

        6.105 字符串"ab\n\\012\\\""的長度是 。

        參考答案:9

        6.106 下面程序段的運行結(jié)果是 。

        char ch[]="600";

        int a,s=0;

        for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

        s=10*s+ch[a]-'0';

        printf("%d",s);

        參考答案:600

        6.107 下面程序段將輸出computer,請?zhí)羁铡?/p>

        char c[]="It's a computer";

        for(i=0;【1】;i++)

        {【2】;printf(%c",c[j]);}

        參考答案:【1】i<8 【2】j=i+7

        6.108 下面程序段的運行結(jié)果是 。

        char x[]="the teacher";

        i=0;

        while(x[++i]!='\0')

        if(x[i-1]=='t') printf("%c",x[i]);

        參考答案:he

        6.109 下面程序的功能是在一個字符數(shù)組中查找一個指定的字符,若數(shù)組中含有該字符則輸出該字符在數(shù)組中第一次出現(xiàn)的位置(下標值);否則輸出-1。請分析程序填空。

        #include

        #include

        main()

        {char c='a',t[50];

        int n,k,j;

        gets(t);

        n=【1】;

        for(k=0,j=-1;k<n;k++)< p="">

        if(【2】) {j=k;break;}

        printf("%d",j);

        }

        參考答案:【1】strlen(t) 【2】t[k]==c

        6.110 下面程序的功能是在三個字符串中找出最小的。請分析程序填空。

        #include

        #include

        main()

        {char s[20],str[3][20];

        int i;

        for(i=0;i<3;i++) gets(str[i]);

        strcpy(s,【1】);

        if(strcmp(str[2],s)<0) strcpy(s,str[2]);

        printf("%s\n",【2】);

        }

        參考答案:【1】strcmp(str[0],str[1])<0?str[0]:str[1] 【2】s

        6.111 下面程序的功能是從鍵盤輸入一個大寫英文字母,要求按字母的順序打印出相鄰的字母,指定的字母在中間。若指定的字母為'Z',則打印YZA;若為A則打印ZAB。請分析程序填空。

        #include

        main()

        {char a[3],c;

        int i;

        c=getchar();

        a[1]=c;

        if(c=='Z') {a[2]='A';【1】;}

        else if(c=='A'){a[0]='Z';【2】;}

        else {a[0]=c-1;a[2]=c+1;}

        for(i=0;i<3;i++) putchar(a[i]);

        }

        參考答案:【1】a[0]=c-1 【2】a[2]=c+1

        6.112 下面程序的功能是將字符數(shù)組a[6]={'a','b','c','d','e','f'}變?yōu)閧'f','a','b','c','d','e'}。請分析程序填空。

        #include

        main()

        {char t,a[6]={'a','b','c','d','e','f'};

        int i;

        【1】;

        for(i=5;i>0;i--)

        【2】;

        a[0]=t;

        for(i=0;i<=5;i++) printf("%c",a[i]);

        }

        參考答案:【1】t=a[5] 【2】a[i]=a[i-1]

        6.113 下面程序的功能是將字符串a(chǎn)中下標值為偶數(shù)的元素由小到大排序,其他元素不變。請分析程序填空。

        #include

        main()

        {char a[]="labchmfye",t;

        int i,j;

        for(i=0;i<7;i+=2)

        for(j=i+2;j<9;【1】)

        if(【2】)

        {t=a[i];a[i]=a[j];a[j]=t;}

        puts(a);

        }

        參考答案:【1】j+=2 【2】a[i]>a[j]

        6.114 下面程序的功能是在任意的字符串a(chǎn)中將與字符c相等的所有元素下標值分別存放在整型數(shù)組b中。請分析程序填空。

        #include

        main()

        {char a[80];

        int i,b[80],k=0;

        gets(a);

        for(i=0;a[i]!='\0';i++)

        if(【1】){b[k]=i;【2】;}

        for(i=0;i<k;i++) p="" printf(?%3d?,b[i]);

        }

        參考答案:【1】a[i]=='c' 【2】k++

        6.115 有十個字符串。下面程序的功能是在每個字符串中,找出最大字符按一一對應(yīng)的順序放入一維數(shù)組中,即第i個字符串中的最大字符放在a[i]中,輸出每個字符串中的最大字符及其下標。

        #include

        main()

        {char s[10][20],a[10];

        int i,j;

        for (i=0;i<10;i++) gets(s[i]);

        for(i=0;i<10;i++)

        {【1】;

        for(j=1;s[i][j]!='\0';j++)

        if(a[i]<s[i][j]) p="" 【2】;

        }

        for(i=0;i<10;i++) printf("%d %c\n",i,a[i]);

        }

        參考答案:【1】a[i]=s[i][0] 【2】a[i]=s[i][j]

        6.116 下面程序的運行結(jié)果是 。

        #include

        main()

        {int i;

        char a[]="Time",b[]="Tom";

        for(i=0;a[i]!='\0'&&b[i]!='\0';i++)

        if(a[i]==b[i])

        if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32);

        else printf("%c",a[i]+32);

        else printf("*");

        }

        參考答案:t*M

        6.117下面程序的運行結(jié)果是 。

        #include

        main()

        {char a[2][6]={"Sun","Moon"};

        int i,j,len[2];

        for(i=0;i<2;i++)

        {for(j=0;j<6;j++)

        if(a[i][j]=='\0')

        {len[i]=j;break;}

        printf("%6s:%d\n",a[i],len[i]);

        }

        }

        參考答案: Sun:3

        Moon:4

        6.118下面程序的運行結(jié)果是 。

        #include

        main()

        {int i,r;

        char s1="bus",s2="book";

        for(i=r=0;s1[i]!='\0'&&s2[i]!='\0';i++)

        if(s1[i]==s2[i]) i++;

        else {r=s1[i]-s2[i];break;}

        printf("%d",r);

        }

        參考答案:4

        *6.119下面程序的運行結(jié)果是 。

        #include

        #define LEN 4

        main()

        {int j,c;

        char n[2][LEN+1]={"8980","9198"};

        for(j=LEN-1;j>=0;j--)

        {c=n[0][j]+n[1][j]-2*'0';

        n[0][j]=c%10+'0';

        }

        for(j=0;j<=1;j++) puts(n[j]);

        }

        參考答案:7078

        9198

        *6.120下面程序的運行結(jié)果是 。

        #include

        main()

        {int i=5;

        char c[6]="abcd";

        do{c[i]=c[i-1];} while(--i>0);

        puts(c);

        }

        參考答案:aabcd

        *6.121 當運行以下程序時,從鍵盤輸入AabD,則運行結(jié)果是 。

        #include

        main()

        {char s[80];

        int i;

        gets(s);

        while(s[i]!='\0')

        {if(s[i]

        s[i]='z'+'a'-s[i];

        i++;

        }

        puts(s);

        }

        參考答案:AzyD

        參考分析:本題是將串中小寫字母逆序轉(zhuǎn)換。

        *6.122下面程序的運行結(jié)果是 。

        #include

        main()

        {char s[]="ABCCDA",c;

        int k;

        for(k=1;(c=s[k])!='\0';k++)

        {switch(c)

        {case 'A':putchar('%');continue;

        case 'B':++k;break;

        default:putchar('*');

        case 'C':putchar('&');continue;

        }

        putchar('#');

        }

        }

        參考答案:#&*&%

        6.123下面程序的運行結(jié)果是 。

        #include

        main()

        {int i=0;

        char a[]="abm",b[]=aqid",c[10];

        while(a[i]!='\0'&&b[i]!='\0')

        {if(a[i]>=b[i]) c[i]=a[i]-32;

        else c[i]=b[i]-32;

        i++;

        }

        c[i]='\0';

        puts(c);

        }

        參考答案:AQM

        *6.124 當運行以下程序時,從鍵盤輸入:

        BOOK

        CUT

        GAME

        PAGE

        則下面程序的運行結(jié)果是 。

        #include

        #include

        main()

        {int i;

        char str[10],temp[10]="Control";

        for(i=0;i<4;i++)

        {gets(str);

        if(strcmp(temp,str)<0) strcpy(temp,str);

        }

        puts(temp);

        }

        參考答案:PAGE

        參考分析:本題是查找輸入的最大字符串(含初始串)。

        6.125 當運行以下程序時,從鍵盤輸入:

        apple

        orange

        則下面程序的運行結(jié)果是 。

        #include

        #include

        main()

        {char a[2][80],t;

        int i,j,m=0,n=0,l,max;

        for(i=0;i<=1;i++) gets(a[i]);

        t=a[0][0];

        for(i=0;i<=1;i++)

        {l=strlen(a[i]);

        for(j=0;j<=l;j++)

        if(a[i][j]>t) {max=a[i][j];m=i;n=j;}

        }

        printf("%c %d %d\n",max,m,n);

        }

        參考答案:e 1 5

        參考分析:本題是查找最后一個大于首字符的字符及其位置。

        6.3 編程題

        6.126 從鍵盤輸入若干個整數(shù),其值在0至4范圍內(nèi),用-1作為輸入結(jié)束的標志。統(tǒng)計每個整數(shù)的個數(shù)。

        參考程序:

        void main()

        {int i,s[5],x

        printf("Input some numbers(between 0 to 4):");

        scanf("%d",&x);

        while(x!=-1)

        {if (x>=0&&x<=4) s[x]++;}

        for(i=0;i<=4;i++)

        printf("%d: %d\n",i,s[i]);

        }

        6.127 若有說明:int a[2][3]={{1,2,3},{4,5,6}};現(xiàn)要將a的行和列的元素互換后存到另一個二維數(shù)組b中。請編寫程序并輸出a和b數(shù)組中的元素。

        參考程序:

        main()

        {int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;

        printf("Array a:\n");

        for(i=0;i<2;i++)

        {for(j=0;j<3;j++)

        {b[j][i]=a[i][j];

        printf("%3d",a[i][j]);

        }

        printf("\n");

        }

        printf("Array b:");

        for(i=0;i<3;i++)

        {for(j=0;j<2;j++)

        printf("%3d",b[i][j]);

        printf("\n");

        }

        }

        6.128 定義一個含有30個整型元素的數(shù)組,按順序分別賦予從2開始的偶數(shù);然后按順序每五個數(shù)求出一個平均值,放在另一個數(shù)組中并輸出。試編程。

        參考程序:

        #define SIZE 30

        main()

        {float b[SIZE/5],sum;

        int a[SIZE],i,k;

        for(k=2,i=0;i<size;i++,k+=2)< p="">

        a[i]=k;

        sum=0;

        for(k=0,i=0;i<size;i++)< p="">

        {sum=sum+a[i];

        if((i+1)%5==0)

        {b[k++]=sum/5;

        sum=0;

        }

        }

        printf("The result is:\n");

        for(i=0;i<size p="" 5;i++)="" ?,b[i]);

        }

        6.129 通過賦初值按行順序為一個2×3的二維數(shù)組賦予2、4、6、...等偶數(shù),然后按列的順序輸出該數(shù)組。試編程。

        參考程序:

        main()

        {int i,j,a[2][3]={{2,4,6},{8,10,12}};

        printf("\nThe result is:\n");

        for(i=0;i<3;i++)

        {for(j=0;j<2;j++)

        printf("%4d",a[j][i]);

        printf("\n");

        }

        }

        6.130 通過循環(huán)按行順序為一個5×5的二維數(shù)組a賦1到25的自然數(shù),然后輸出該數(shù)組的左下半三角。試編程。

        參考程序:

        main()

        {int a[5][5],i,j,n=1;

        for(i=0;i<5;i++)

        for(j=0;j<5;j++)

        a[i][j]=n++;

        printf("The result is:\n");

        for(i=0;i<5;i++)

        {for(j=0;j<=i;j++)

        printf("%4d",a[i][j]);

        printf("\n");

        }

        }

        6.131 試編程打印用戶指定的n階順時針螺旋方陣(n<10)。

        參考程序:

        main()

        {int a[10][10],i,j,k=0,m,n;

        printf("Enter n(n<10):\n");

        scanf("%d",&n);

        if(n%2==0)

        m=n/2;

        else

        m=n/2+1;

        for(i=0;i<m;i++)< p="">

        {for(j=i;j<n-i;j++)< p="">

        {k++;a[i][j]=k;}

        for(j=i+1;j<n-i;j++)< p="">

        {k++;a[j][n-i-1]=k;}

        for(j=n-i-2;j>=i;j--)

        {k++;a[n-i-1][j]=k;}

        for(j=n-i-2;j>=i+1;j--)

        {k++;a[j][i]=k;}

        }

        for(i=0;i<n;i++)< p="">

        {for(j=0;j<n;j++)< p="">

        printf("%5d",a[i][j]);

        printf("\n");

        }

        }

        6.132 數(shù)組a包括10個整數(shù),把a中所有的后項除以前項之商取整后存入數(shù)組b,并按每行3個元素的格式輸出數(shù)組b。試編程。

        參考程序:

        #define N 10

        main()

        {int a[N],b[N],i;

        printf("Enter %d data:",N);

        for(i=0;i<n;i++)< p="">

        scanf("%d",&a[i]);

        for(i=1;i<n;i++)< p="">

        b[i]=a[i]/a[i-1];

        for(i=1;i<n;i++)< p="">

        {printf("%3d",b[i]);

        if(i%3==0)

        printf("\n");

        }

        }

        6.133 從鍵盤輸入一個整數(shù),,用折半查找法找出該數(shù)在10個有序整型數(shù)組a中的位置。若該數(shù)不在a中,則打印出相應(yīng)信息。試編程。

        參考程序:

        main()

        {int a[10]={1,3,5,7,9,11,13,15,17,19},top,bot,mid,m;

        printf("Enter a integer:");

        scanf("%d",&m);

        top=0;bot=9; /*字符型bot=strlen(a)-1*/

        while(top<=bot)

        {mid=(top+bot)/2;

        if(a[mid]==m) break;

        else if(a[mid]>m) top=mid+1;

        else bot=mid-1;

        }

        if(top<=bot) printf("Found! position is %d.\n",mid);

        else printf("Not found %d.\n",m);

        }

        6.134 從鍵盤輸入兩個字符串a(chǎn)和b,要求不用庫函數(shù)strcat把串b的前五個字符連接到串a(chǎn)中;如果b的長度小于5,則把b的所有元素都連接到a中。試編程。

        參考程序:

        #include

        main()

        {char a[80],b[80];

        int i=0,j;

        printf("Input two strings:\n");

        gets(a);gets(b);

        while(a[i]) i++;

        for(j=0;j<5&&b[j];j++)

        a[i++]=b[j];

        a[i]='\0';

        puts(a);

        }

        6.135 從鍵盤輸入一個字符串a(chǎn),并在串中的最大元素后邊插入另外輸入的字符串b。試編程。

        參考程序:

        #include

        main()

        {char a[80],b[]="ab",max;

        int i=1,j;

        printf("Input a string:\n");

        gets(a);

        puts(a);

        max=a[0];

        while(a[i])

        {if(a[i]>max)

        {max=a[i];j=i;}

        i++;

        }

        for(i=strlen(a)+strlen(b)-1;i>j;i--)

        a[i]=a[i-strlen(b)];

        j=0;i++;

        while(b[j])

        {a[i]=b[j];

        i++;j++;

        }

        puts(a);

        }

        更多資料

        統(tǒng)招專升本《高等數(shù)學》備考資料一

        江西專升本《高等數(shù)學》歷年真題匯編

        《高等數(shù)學》知識集錦(電子版)

        更多課程

        《市場營銷學》公開課—業(yè)務(wù)成長戰(zhàn)略

        1節(jié)課

        《基礎(chǔ)會計》公開課—會計要素-反映財務(wù)狀況的會計要素

        1節(jié)課

        《管理學》公開課——馬斯洛需要層次理論

        1節(jié)課

        溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準!

        專升本備考資料免費領(lǐng)取

        去領(lǐng)取