違法信息舉報(bào) 客服熱線:400-118-7898
廣告
?
專接本欄目測(cè)試廣告

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

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

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

第四章 邏輯運(yùn)算和判斷選取控制

4.1 選擇題

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

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

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

參考答案:D

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

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

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

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

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

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

參考答案:C

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

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

參考答案:B

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

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

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

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

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

參考答案:B

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

4.5 表示圖中坐標(biāo)軸上陰影部分正確的表達(dá)式是 。

| | |

a b c

A)(x

C)(x

參考答案:C

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

A)'A'<=ch

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

參考答案:C

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

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

參考答案:D

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

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

參考答案:C

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

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

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

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

A)'a'<=ch

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

參考答案:D

4.12 以下程序的運(yùn)行結(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

參考分析:計(jì)算時(shí),非零為真。

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

int a,b,c;

a=b=c=1;

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

A)0 B)1 C)2 D)錯(cuò)誤

參考答案:C B

參考分析:c語言在計(jì)算表達(dá)式時(shí)采用短路算法。

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ùn)算符中優(yōu)先級(jí)最低的是 ,優(yōu)先級(jí)最高的是 。

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)有語法錯(cuò)誤不能通過編譯 B)可以通過編譯,但不能通過連接

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

參考答案:C

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

4.20 以下程序的運(yùn)行結(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進(jìn)行關(guān)系比較,然后進(jìn)行增量運(yùn)算,m值為6,因比較結(jié)果為假,執(zhí)行else,輸出為6,m為7。

4.21 當(dāng)a=1,b=3,c=5,d=4時(shí),執(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)系,因此不會(huì)影響到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子句總是與 配對(duì)。

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

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

參考答案:B

參考分析:本題表述不嚴(yán)謹(jǐn)。

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 請(qǐng)閱讀以下程序:

#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);

}

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

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

參考答案:B

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

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

參考答案:B

參考分析:在C語言中,當(dāng)一個(gè)表達(dá)式不等于0時(shí),可以將不等于部分省略,其效果完全一樣。

4.29 若運(yùn)行時(shí)給變量輸入12,則以下程序的運(yùn)行結(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 以下程序的運(yùn)行結(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進(jìn)行--操作,x為9,然后與y進(jìn)行等于比較,即9==9,然后y++為10。由于比較結(jié)果為真,故計(jì)算--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;則表達(dá)式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;表達(dá)式f=a>b>c的值是( )。

參考答案:0

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

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

參考答案:1

4.37 以下程序的運(yùn)行結(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個(gè))

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

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

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

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

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

參考答案:&& || !

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

參考答案:x

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

參考答案: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,表達(dá)式A>B&&C>A||AB的值是( )。

參考答案:0

參考分析:在本表達(dá)式的計(jì)算過程中A

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

參考答案:1

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

參考答案:0

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

參考答案:0

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

參考答案:1

4.48 若a=5,b=2,c=1,則表達(dá)式a-b

參考答案:0

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

參考答案:1

4.50 條件“2

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

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

參考答案:0 1

4.52 以下程序的運(yùn)行結(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

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

4.53 以下程序的運(yùn)行結(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 以下程序的運(yùn)行結(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為真,后面的或和與運(yùn)算均被短路。

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

參考答案:1

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

參考答案:1

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

參考答案:13

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

參考答案:1

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

參考答案:0

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

參考答案:1

4.61 若運(yùn)行時(shí)輸入:16,則以下程序的運(yùn)行結(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 若運(yùn)行時(shí)輸入:2,則以下程序的運(yùn)行結(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 若運(yùn)行時(shí)輸入:4.4,則以下程序的運(yùn)行結(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 以下程序的運(yùn)行結(jié)果是 。

main()

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

printf("T");

else

printf("F");

}

參考答案:F

4.65 請(qǐng)閱讀以下程序,若運(yùn)行時(shí)輸入:1605時(shí),程序的運(yùn)行結(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和運(yùn)算標(biāo)志m,按照運(yùn)算標(biāo)志進(jìn)行指定計(jì)算,請(qǐng)?zhí)羁铡?/p>

標(biāo)志 運(yùn)算

a 面積

c 周長(zhǎng)

b 二者均計(jì)算

#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 若運(yùn)行時(shí)輸入:5999,則以下程序的運(yùn)行結(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三個(gè)數(shù)中的最大者。請(qǐng)分析程序填空。

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ū)⑤斎氲娜齻€(gè)整數(shù)按從大到小順序輸出,請(qǐng)分析程序填空。

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ū)斎氲膬蓚€(gè)整數(shù),按從大到小順序輸出,請(qǐng)分析程序填空。

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ū)斎氲囊粋€(gè)小寫字母進(jìn)行循環(huán)后移5個(gè)位置后輸出。如'a'變成'f','w'變成'b'。請(qǐng)分析程序填空。

#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 輸入一個(gè)字符,如果它是大寫字母,則把它變成小寫字母,如果它是一個(gè)小寫字母,則把它變成大寫字母,其它字符不變。請(qǐng)分析程序填空。

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 以下程序的運(yùn)行結(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以下程序的運(yùn)行結(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 以下程序的運(yùn)行結(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以下程序的運(yùn)行結(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 請(qǐng)閱讀以下程序,為使輸出時(shí)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 請(qǐng)閱讀下面的程序,為使輸出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)系,對(duì)輸入的每個(gè)x值,計(jì)算出y值。請(qǐng)分析程序填空。

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)系,對(duì)輸入的每個(gè)x值,計(jì)算出y值。請(qǐng)分析程序填空。

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 以下程序的功能是計(jì)算一元二次方程ax2+bx+c=0的根,請(qǐng)分析程序填空。

#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ù)輸入的三角形的三邊判斷是否能組成三角形,若可以則輸出它的面積和三角形的類型。請(qǐng)分析程序填空。

#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 某郵局對(duì)郵寄包裹有如下規(guī)定:若包裹的長(zhǎng)寬高任一尺寸超過1米或重量超過30千克,不予郵寄;對(duì)可以郵寄的包裹每件收取手續(xù)費(fèi)0.2元,在加上根據(jù)下表按重量wei計(jì)算的郵資。請(qǐng)分析程序填空。

重量(千克)收費(fèi)標(biāo)準(zhǔn)

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)營(yíng)套服,也單件出售。若買的不少于50套每套80元;不足50套的每套90元;只買上衣每件60元;只買褲子每條45元。以下程序的功能是讀入所買上衣c和褲子t的件數(shù),計(jì)算應(yīng)付款m。請(qǐng)分析程序填空。

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 以下程序的功能是判斷輸入的年份是否是閏年。請(qǐng)分析程序填空。

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 以下程序段針對(duì)輸入的截止日期(年:yend,月:mend,日:dend)和出生日期(yman,mman,dman),計(jì)算出實(shí)際年齡。請(qǐng)分析程序填空。

設(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 有四個(gè)數(shù)a,b,c,d,要求從大到小的順序輸出。請(qǐng)分析程序填空。

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 以下程序的運(yùn)行結(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,則表達(dá)式a>b?a:b+1的值是 。

參考答案:3

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

參考答案:4

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

參考答案:11

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

參考答案:'a'

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

參考答案:'x'

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

參考答案:0

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

參考答案:5

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

4.96 以下程序的運(yùn)行結(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以下程序的運(yùn)行結(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 以下程序的運(yùn)行結(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 若運(yùn)行時(shí)輸入:-2,則以下程序的輸出結(jié)果是 。

main()

{int a,b;

scanf("%d",&a);

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

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

}

參考答案:b=2

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

main()

{int a;

scanf("%d",&a);

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

}

參考答案:yes

4.101 如果運(yùn)行時(shí)輸入字符'Q',則以下程序的運(yùn)行結(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 當(dāng)運(yùn)行時(shí)輸入:1992,則以下程序的運(yùn)行結(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 以下程序是計(jì)算x,y,z三個(gè)數(shù)中最小的。請(qǐng)分析程序填空。

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】,此時(shí)c的存儲(chǔ)單元的值為【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;則以下表達(dá)式的值為 。

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

參考答案:10

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

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

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

參考答案:4

參考分析:此處x++*x—實(shí)際計(jì)算為0*0。

4.108 若運(yùn)行時(shí)輸入:3 5/,則以下程序的運(yùn)行結(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 以下程序段的運(yùn)行結(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)系,對(duì)輸入的每個(gè)x值,計(jì)算出相應(yīng)的y值。請(qǐng)分析程序填空。

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 以下程序的運(yùn)行結(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 下面程序的運(yùn)行結(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è)獎(jiǎng)金稅率如下(a代表獎(jiǎng)金,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ū)斎氲囊粋€(gè)獎(jiǎng)金數(shù),求稅率和應(yīng)交稅款以及實(shí)得獎(jiǎng)金數(shù)(扣除獎(jiǎng)金稅后)。請(qǐng)分析程序填空。

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

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 以下程序計(jì)算某年某月有幾天。其中判別閏年的條件是:能被4整除但不能被100整除的年是閏年,能被400整除的年也是閏年。請(qǐng)分析程序填空。

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 以下程序用以計(jì)算y年m1月d1日與同年的m2月d2日之間的天數(shù)(m2>=m1),并打印計(jì)算結(jié)果。若m1=m2且d1=d2則算一天。請(qǐng)分析程序填空。

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 請(qǐng)編程序,根據(jù)以下函數(shù)關(guān)系,對(duì)輸入的每個(gè)x值,計(jì)算出相應(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 輸入一個(gè)整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:

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

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

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

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

參考程序:

main()

{int m;

printf("Input a number:");

scanf("%d",&m);

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

printf("能同時(shí)被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("能被其中一個(gè)數(shù)整除");

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

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

else printf("(7)");

}

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

}

4.123 將以下程序段改用非嵌套的if語句實(shí)現(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編程實(shí)現(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語句實(shí)現(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 請(qǐng)將以下語句改寫成為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編程實(shí)現(xiàn)以下功能:讀入兩個(gè)運(yùn)算數(shù)(data1和data2)及一個(gè)運(yùn)算符(op),計(jì)算表達(dá)式data1 op data2的值,其中op可為+,-,*,/(用switch語句實(shí)現(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 編一程序,對(duì)于給定的一個(gè)百分制成績(jī),輸出相應(yīng)的五分值成績(jī)。設(shè)90分以上為'A',80-89分為'B',70-79分為'C',60-69分為'D',60分以下為'E'(用switch語句實(shí)現(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)運(yùn)行程序段后輸出0 B)運(yùn)行程序段后輸出1

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

參考答案:B

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

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

參考答案:A

5.4下面程序段的運(yùn)行結(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 下面程序段的運(yùn)行結(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下面程序段的運(yùn)行結(jié)果是 。

int n=0;

while(n++<=2);

printf("%d",n);

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

參考答案:C

5.7 設(shè)有程序段

t=0;

while(printf("*"))

{t++;

if(t<3) break;

}

下面描述正確的是 。

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

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

參考答案:B

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

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

#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)計(jì)出大寫字母的個(gè)數(shù)m和小寫字母的個(gè)數(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下面程序的功能是將小寫字母變成對(duì)應(yīng)大寫字母后的第二個(gè)字母,其中y變成A,z變成B。請(qǐng)選擇填空。

#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),請(qǐng)選擇填空 。

#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 下面程序的運(yùn)行結(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若運(yùn)行以下程序時(shí),從鍵盤輸入2473(表示回車),則下面程序的運(yùn)行結(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)控制條件嚴(yán)格。

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

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

參考答案:A

5.15 以下能正確計(jì)算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)有語法錯(cuò)誤

參考答案:C

5.17 以下描述中正確的是 。

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

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

C)在do-while循環(huán)體中,一定要有能使while后面表達(dá)式的值變?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下面程序的功能是計(jì)算正整數(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 下面程序是從鍵盤輸入學(xué)號(hào),然后輸出學(xué)號(hào)中百位數(shù)是3的學(xué)號(hào),輸入0時(shí)結(jié)束循環(huán)。請(qǐng)選擇填空。

#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ù)列的第一項(xiàng)a=1,公比q=2,下面程序的功能是求滿足前n項(xiàng)和小于100的最大n,請(qǐng)選擇填空。

#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表示為兩個(gè)加數(shù)的和,使兩個(gè)加數(shù)分別能被13和11整除。請(qǐng)選擇填空。

#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 下面程序的運(yùn)行結(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若運(yùn)行以下程序時(shí),從鍵盤輸入Adescriptor(表示回車),則下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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)體語句,后判斷表達(dá)式

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

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

參考答案:D

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

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

C) for (表達(dá)式1;null;表達(dá)式3) D)缺少一個(gè)表達(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下面程序段的運(yùn)行結(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下面程序段的運(yùn)行結(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個(gè)零件一組則多出2個(gè)零件;若分成7個(gè)零件一組,則多3個(gè)零件;若分成9個(gè)零件一組,則多出5個(gè)零件。下面程序是求這堆零件總數(shù),請(qǐng)選擇填空。

#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 下面程序的功能是計(jì)算1至50中是7的倍數(shù)的數(shù)值之和,請(qǐng)選擇填空。

#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 下面程序的功能是計(jì)算1至10之間的奇數(shù)之和和偶數(shù)之和。請(qǐng)選擇填空。

#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ù)題目的要求多計(jì)算了11,需要從累加和中去除,但退出循環(huán)后b變量的值也是11,故【2】中的D也正確。

5.38 下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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 下面程序段的功能是計(jì)算1000!的末尾含有多少個(gè)零。請(qǐng)選擇填空。(提示:只要計(jì)算出1000!中含有因子5的個(gè)數(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分別表示一個(gè)三位數(shù)),請(qǐng)選擇填空。

#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。若更進(jìn)一步考慮到z為兩個(gè)數(shù)的末尾,2倍的z不可能為0,故z也不可能為0,所以B也應(yīng)當(dāng)正確。

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

#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 下面程序的運(yùn)行結(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é)束整個(gè)循環(huán)的執(zhí)行。

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

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

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

參考答案:B

5.45 下面程序段 。

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

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

if(x<0)continue;

printf("%3d",t);

}

A)當(dāng)x

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

參考答案:D

5.46下面程序段 。

x=3;

do{y=x--;

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

printf("#");

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

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

C)是死循環(huán) D)含有不合法的控制表達(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語句不能獨(dú)立出現(xiàn)。

參考答案:C

5.49 與下面程序段等價(jià)的是 。

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ù)寫成兩個(gè)素?cái)?shù)之和。請(qǐng)選擇填空。

#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下面程序的運(yùn)行結(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 若運(yùn)行以下程序時(shí),從鍵盤輸入3.6 2.4,則下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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)計(jì)數(shù)字字符的個(gè)數(shù),當(dāng)輸入換行符時(shí)結(jié)束循環(huán)。請(qǐng)分析程序填空。

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求π的近似值,直到最后一項(xiàng)的值小于10-6為止,請(qǐng)分析程序填空。

#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個(gè)西瓜,第一天賣一半多兩個(gè),以后每天賣剩下的一半多兩個(gè),問幾天以后能賣完?請(qǐng)分析程序填空。

#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)相除法”求兩個(gè)正整數(shù)的最大公約數(shù)。請(qǐng)分析程序填空。

#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í)行以下程序時(shí)輸入right?,則下面程序的運(yùn)行結(jié)果是 。

#include

main()

{char c;

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

}

參考答案:sjhiu

5.62下面程序的運(yùn)行結(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

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

5.63當(dāng)運(yùn)行以下程序,用戶輸入China# 程序的運(yùn)行結(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下面程序段的運(yùn)行結(jié)果是 。

x=2;

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

參考答案:**

5.67下面程序段的運(yùn)行結(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ù),且一行只打印五個(gè)數(shù)。請(qǐng)分析程序填空。

#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)計(jì)正整數(shù)的各位數(shù)字中零的個(gè)數(shù),并求各位數(shù)字中的最大者。請(qǐng)分析程序填空。

#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ù)列的第一項(xiàng)a=2,公差d=3,下面程序的功能是在前n項(xiàng)和中,輸出能被4整除的所有數(shù)的和。請(qǐng)分析程序填空。

#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的個(gè)、十、百位上的數(shù)字之和。請(qǐng)分析程序填空。

#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ù)的分離,沒有什么新意,一個(gè)十進(jìn)制大數(shù)的人為“高位溢出”這種技巧,值得學(xué)習(xí)和模仿。

5.72 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入1 2 3 4 5 -1,則下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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 當(dāng)從鍵盤輸入-1 0,則以下程序的運(yùn)行結(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ù)的所有因子,請(qǐng)分析程序填空。

scanf("%d",&x);

for (i=1; ; i++)

if (x%i==0) printf("%3d",i);

參考答案:i<=x

5.77 雞兔同籠,頭30,腳90,下面程序段計(jì)算雞兔各有多少只。請(qǐng)分析程序填空。

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

{y=30-x;

if(【1】) printf("%d,%d",x,y);

}

參考答案:2*x+4*y==90

5.78 下面程序段的運(yùn)行結(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("*");表達(dá)式i=0執(zhí)行【1】次,表達(dá)式i++執(zhí)行【2】次。

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

5.80 下面程序的功能是計(jì)算1-3+5-7+...-99+101的值,請(qǐng)分析程序填空。

#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,請(qǐng)分析程序填空。

#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。請(qǐng)分析程序填空。

#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 下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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)變量的值,導(dǎo)致循環(huán)只能循環(huán)2次。

5.85下面程序的運(yùn)行結(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可以組成多少個(gè)不重復(fù)的三位偶數(shù)。請(qǐng)分析程序填空。

#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ù),請(qǐng)分析程序填空。

#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ù)。說明:一個(gè)數(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 下面程序的功能是完成用一元人民幣兌換一分、兩分、五分零幣的所有兌換方案。請(qǐng)分析程序填空。

#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 下面程序的功能是從三個(gè)紅球、五個(gè)白球、六個(gè)黑球中任意取出八個(gè)球,且其中必須有白球,輸出所有可能的方案。請(qǐng)分析程序填空。

#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,則下面程序的運(yùn)行結(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

參考分析:這是一種計(jì)算兩個(gè)整型數(shù)最大公約數(shù)的一種算法。

5.92 下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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 下面程序段的運(yùn)行結(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之間不同的三個(gè)數(shù)構(gòu)成一個(gè)三位數(shù),下面程序?qū)⒔y(tǒng)計(jì)出共有多少種方法。請(qǐ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 下面程序的功能是計(jì)算100至1000之間有多少個(gè)數(shù)其各位數(shù)字之和是5。請(qǐng)分析程序填空。

#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個(gè)整數(shù)中,找出第一個(gè)能被7整除的數(shù)。若找到,打印此數(shù)后退出循環(huán);若未找到,打印“not exist”。請(qǐng)分析程序填空。

#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)個(gè)位數(shù)為6且能被3整除的所有數(shù)。請(qǐng)分析程序填空。

#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 下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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 每個(gè)蘋果0.8元,第一天買2個(gè)蘋果,第二天開始買前一天的2倍,直至購買的蘋果個(gè)數(shù)達(dá)到不超過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 編寫程序,求一個(gè)整數(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名學(xué)生的五門成績(jī),分別統(tǒng)計(jì)出每個(gè)學(xué)生的平均成績(jī)。

參考程序:

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ù)組下標(biāo)的數(shù)據(jù)類型是 。

A)整型常量 B)整型表達(dá)式

C)整型常量或整型表達(dá)式 D)任何類型的表達(dá)式

參考答案:C

參考分析:嚴(yán)格的說法應(yīng)當(dāng)是常量表達(dá)式。

6.2以下對(duì)一維數(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];則對(duì)數(shù)組元素的正確引用是 。

A)a[10] B)a[3,5] C)a(5) D)a[10-10]

參考答案:D

6.4 在C語言中,一維數(shù)組的定義方式為:類型說明符 數(shù)組名 。

A)[常量表達(dá)式] B)[整型表達(dá)式]

C)[整型表達(dá)式]或[整型常量] D)[整型常量]

參考答案:A

6.5 以下能對(duì)一維數(shù)組a進(jìn)行正確初始化的語句是 。

A)int a[10]=(0,0,0); B)int a[10]={};

C)int a[]={0}; D)int a[10]={10*1};

參考答案:CD

參考分析:本題題目設(shè)計(jì)有問題,D也是正確的。

6.6 以下對(duì)二維數(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];則對(duì)a數(shù)組元素的正確引用是 。

A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)

參考答案:C

參考分析:在實(shí)際應(yīng)用中a[2][4]這種應(yīng)用方式實(shí)質(zhì)上訪問的是a[3][0],這是越界訪問。

6.8 若有說明:int a[3][4];則對(duì)a數(shù)組元素的非法引用是 。

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]

參考答案:D

參考分析:a[0][4]實(shí)質(zhì)上訪問的是a[1][0],嚴(yán)格意義上并不非法。

6.9 以下能對(duì)二維數(shù)組a進(jìn)行正確初始化的語句是 。

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以下不能對(duì)二維數(shù)組a進(jìn)行正確初始化的說明是 。

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ù)組中每個(gè)元素均可得到初值0

參考答案:D

6.12若有說明:int a[][4]={0,0};則下面不正確的敘述是 。

A)數(shù)組a的每個(gè)元素都可得到初值0

B)二維數(shù)組a的第一維大小為1

C)因?yàn)槎S數(shù)組a中第二維大小的值除初值個(gè)數(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)可在程序的運(yùn)行階段得到初值0

B)可在程序的編譯階段得到初值0

C)不能得到確定的初值

D)可在程序的編譯或運(yùn)行階段得到初值0

參考答案:B

6.14 以下各組選項(xiàng)中,均能正確定義二維實(shí)型數(shù)組a的選項(xiàng)是 。

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 下面程序有錯(cuò)誤的行是 (行前數(shù)字表示行號(hào))。

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行有錯(cuò)誤 B)第6行有錯(cuò)誤

C)第7行有錯(cuò)誤 D)沒有錯(cuò)誤

參考答案:習(xí)題集中答案為A,實(shí)質(zhì)上應(yīng)當(dāng)選擇D

6.16下面程序有錯(cuò)誤的行是 (行前數(shù)字表示行號(hào))。

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)沒有錯(cuò)誤 B)第3行有錯(cuò)誤

C)第5行有錯(cuò)誤 D)第7行有錯(cuò)誤

參考答案:C

6.17下面程序有錯(cuò)誤的行是 (行前數(shù)字表示行號(hào))。

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下面程序有錯(cuò)誤的行是 (行前數(shù)字表示行號(hào))。

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)沒有錯(cuò)誤 B)3 C)5 D)6

參考答案:D

6.19 若二維數(shù)組a有m列,則計(jì)算任一元素a[i][j]在數(shù)組中位置的公式為(假設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上) 。

A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

參考答案:D

6.20 對(duì)說明語句int a[10]={6,7,8,9,10};的正確理解是 。

A)將5個(gè)初值依次a[1]至a[5]

B)將5個(gè)初值依次a[0]至a[4]

C)將5個(gè)初值依次a[5]至a[9]

D)將5個(gè)初值依次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]前的元素個(gè)數(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)對(duì)數(shù)組a進(jìn)行插入排序(升序)

B)對(duì)數(shù)組a進(jìn)行插入排序(降序)

C)對(duì)數(shù)組a進(jìn)行選擇排序(升序)

D)對(duì)數(shù)組a進(jìn)行選擇排序(降序)

參考答案: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 下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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下面是對(duì)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下面程序段的運(yùn)行結(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對(duì)兩個(gè)數(shù)組a和b進(jìn)行如下初始化

char a[]="ABCDEF";

char b[]={'A','B','C','D','E','F'};

則以下敘述正確的是 。

A)a與b數(shù)組完全相同 B)a與b數(shù)組長(zhǎng)度相同

C)a和b中都存放字符串 D)a數(shù)組比b數(shù)組長(zhǎng)度長(zhǎng)

參考答案:D

6.32有兩個(gè)字符數(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 下面程序段的運(yùn)行結(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有下面程序段,上機(jī)運(yùn)行,將 。

char a[3],b[]="China";

a=b;

printf("%s",a);

A)輸出China B)輸出Chi C)輸出Ch D)編譯出錯(cuò)

參考答案:D

*6.36下面程序段的運(yùn)行結(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)當(dā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)當(dā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下面程序段輸出兩個(gè)字符串中對(duì)應(yīng)相等的字符。請(qǐ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)兩個(gè)字符串包含的字符個(gè)數(shù)相同時(shí),才能比較字符串

B)字符個(gè)數(shù)多的字符串比字符個(gè)數(shù)少的字符串大

C)字符串"STOP"與"STOP■"相等

D)字符串"That"小于字符串"The"

參考答案:D

6.41 下面對(duì)C語言字符數(shù)組的描述中錯(cuò)誤的是 。

A)字符數(shù)組可以存放字符串

B)字符數(shù)組的字符串可以整體輸入、輸出

C)可以在賦值語句中通過賦值運(yùn)算符對(duì)字符數(shù)組整體賦值

D)不可以用關(guān)系運(yùn)算符對(duì)字符數(shù)組中的字符串進(jìn)行比較

參考答案:C

***6.42 有已排好序的字符串a(chǎn),下面的程序是將字符串s中的每個(gè)字符按升序的規(guī)律插入到a中。請(qǐng)選擇填空。

#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)鍵在于兩點(diǎn),一是查找插入位置——查找插入位置注意兩個(gè)問題,插入的數(shù)據(jù)與有序數(shù)組中數(shù)據(jù)的大小關(guān)系和注意防止向右越界。再一個(gè)是有序數(shù)組元素后移時(shí)自后向前。

***6.43下面程序的功能是將已按升序排好序的兩個(gè)字符串a(chǎn)和b中的字符,按升序歸并到字符串c中。請(qǐng)分析程序填空。

#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

參考分析:歸并排序的要點(diǎn)是將兩個(gè)數(shù)組a和b的下標(biāo)逐次后移,存放的是那個(gè)數(shù)組的元素,就移動(dòng)那個(gè)數(shù)組的下標(biāo),而目標(biāo)數(shù)組c則每次循環(huán)都要移動(dòng),當(dāng)a,b數(shù)組其中一個(gè)到達(dá)結(jié)束標(biāo)志后,再將沒到達(dá)結(jié)束標(biāo)志的數(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

參考分析:刪除指定字符的程序要點(diǎn)在于采用雙下標(biāo),一個(gè)下標(biāo)對(duì)數(shù)組從頭到尾進(jìn)行逐個(gè)掃描,另外一個(gè)下標(biāo)則只有當(dāng)寫入不刪除字符時(shí)才向后移動(dòng)。其關(guān)鍵思想就是:s[j++]=s[j]。

*6.45 下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔。請(qǐ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

參考分析:判斷是不是一個(gè)單詞的要點(diǎn)就是當(dāng)前字符不是空格而前一個(gè)字符是空格。

6.46 下面程序的運(yùn)行結(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 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入:aa bbcc dd則下面程序的運(yùn)行結(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 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入abcdef,則下面程序的運(yùn)行結(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 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入:AhaMA Aha,則下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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】常量表達(dá)式

6.54 在c語言中,二維數(shù)組在內(nèi)存中的存放順序是【 】。

參考答案:按行主順序存放

6.55 若有定義:double x[3][5];則x數(shù)組中行下標(biāo)的下限為【1】,列下標(biāo)的上限為【2】。

參考答案:【1】0 【2】4

6.56 若二維數(shù)組a有m列,則計(jì)算任一元素a[i][j]在數(shù)組中位置的公式為【 】。(假設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上)

參考答案: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ù)之間有空格),則下面程序的運(yùn)行結(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個(gè)數(shù)的形式輸出a數(shù)組,請(qǐng)分析程序填空。

#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的行和列元素互換后存到另一個(gè)二維數(shù)組b中。請(qǐng)分析程序填空。

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 下面程序的運(yùn)行結(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 下面程序可求出矩陣兩條對(duì)角線上的元素之和。請(qǐng)分析程序填空。

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 下面程序的運(yùn)行結(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的主對(duì)角線上的元素之和。請(qǐng)分析程序填空。

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項(xiàng),該數(shù)列第1,2項(xiàng)分別為0和1,以后每個(gè)奇數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)之和,偶數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)差的絕對(duì)值。生成的20個(gè)數(shù)存在一維數(shù)組x中,并按每行4項(xiàng)的形式輸出。

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 若有以下輸入,則下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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個(gè)整型元素,下面程序的功能是求出a中各相鄰兩個(gè)元素的和,并將這些和存在數(shù)組b中,按每行3個(gè)元素的形式輸出。請(qǐng)分析程序填空。

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 下面程序是將十進(jìn)制數(shù)轉(zhuǎn)換成不超過十六進(jìn)制的n進(jìn)制。請(qǐng)分析程序填空。

#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個(gè)整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對(duì)調(diào),然后輸出調(diào)整后的5個(gè)數(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 下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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個(gè)整數(shù),假設(shè)為7 4 8 9 1 5,然后建立一個(gè)具有以下內(nèi)容的方陣并打印。請(qǐng)分析程序填空。

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行以后的行進(jìn)行賦值。

**6.75 下面程序的功能是輸出以下n*n階(最大為9階)方陣。請(qǐng)分析程序填空。(以下例子是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 當(dāng)從鍵盤輸入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中每個(gè)元素向右一列,最后一列換到最左一列,移后的數(shù)組存到另一二維數(shù)組b中,并按矩陣形式輸出a和b。請(qǐng)分析程序填空。

例如: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)計(jì)年齡在16-31歲之間的學(xué)生人數(shù)。請(qǐng)分析程序填空。

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 下面程序的功能是檢查一個(gè)二維數(shù)組是否對(duì)稱(即對(duì)所有i和j都有a[i][j]=a[j][i])。請(qǐng)分析程序填空。

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個(gè)整數(shù)元素,從a中第二個(gè)元素起,分別將后項(xiàng)減前項(xiàng)之差存入數(shù)組b,并按每行3個(gè)元素輸出數(shù)組b。請(qǐng)分析程序填空。

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 下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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是否為素?cái)?shù)

k=j%i++;

if (k)

printf(“%3d”,num[x++];

else //j不是素?cái)?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è)置了頭尾兩個(gè)下標(biāo),對(duì)數(shù)組自前向后檢查各元素是否為素?cái)?shù),如果是則輸出該元素,頭下標(biāo)后移,繼續(xù)檢查下一個(gè)元素;如果不是,則將數(shù)組后面的元素與正檢查的數(shù)組元素互換,尾下標(biāo)前移,繼續(xù)檢查,直到頭下標(biāo)大于尾下標(biāo)。

6.83 設(shè)數(shù)組中的元素均為正整數(shù),以下程序是求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。請(qǐng)分析程序填空。

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中,并按矩陣形式輸出。請(qǐng)分析程序填空。

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中并按矩陣形式輸出。請(qǐng)分析程序填空。

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的值。請(qǐng)分析程序填空。

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ù)之和。請(qǐng)分析程序填空。

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 下面程序的運(yùn)行結(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ù)組中查找最小值及它的下標(biāo)。

***6.90 若輸入52,則下面程序的運(yùn)行結(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

參考分析:本題為典型的折半查找,要點(diǎn)有三:1.循環(huán)條件為low<=high;2.查找處理是一個(gè)三分支;3.總是把中點(diǎn)的前點(diǎn)作為后點(diǎn)或把中點(diǎn)的后點(diǎn)作為前點(diǎn)。

**6.91 下面程序的運(yùn)行結(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

參考分析:這是折半查找的變形題目,本算法僅計(jì)算數(shù)組中間元素的下標(biāo)。計(jì)算中點(diǎn)下標(biāo)時(shí)巧妙地利用了數(shù)據(jù)元素個(gè)數(shù)的“折半”。

6.92 下面程序用“順序查找法”查找數(shù)組a中是否存在某一關(guān)鍵字。請(qǐng)分析程序填空。

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)鍵字。請(qǐng)分析程序填空。

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無疑會(huì)使得對(duì)數(shù)組的訪問產(chǎn)生右越界。將欲查找的數(shù)據(jù)放到數(shù)組的最后位置可以防止查找過程發(fā)生右越界。

***6.94 下面程序用插入法對(duì)數(shù)組a進(jìn)行降序排序。請(qǐng)分析程序填空。

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 下面程序用“兩路合并法”把兩個(gè)已按升序排列的數(shù)組合并成一個(gè)升序數(shù)組。請(qǐng)分析程序填空。

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 下面程序的運(yùn)行結(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,則下面程序的運(yùn)行結(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,則下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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 若有以下輸入,則下面程序的運(yùn)行結(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 若有以下輸入,則下面程序的運(yùn)行結(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 下面程序的運(yùn)行結(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ù)和元素值均由鍵盤輸入。請(qǐng)分析程序填空。

#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 若有以下輸入,則下面程序的運(yùn)行結(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\\\""的長(zhǎng)度是 。

參考答案:9

6.106 下面程序段的運(yùn)行結(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,請(qǐng)?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 下面程序段的運(yùn)行結(jié)果是 。

char x[]="the teacher";

i=0;

while(x[++i]!='\0')

if(x[i-1]=='t') printf("%c",x[i]);

參考答案:he

6.109 下面程序的功能是在一個(gè)字符數(shù)組中查找一個(gè)指定的字符,若數(shù)組中含有該字符則輸出該字符在數(shù)組中第一次出現(xiàn)的位置(下標(biāo)值);否則輸出-1。請(qǐng)分析程序填空。

#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 下面程序的功能是在三個(gè)字符串中找出最小的。請(qǐng)分析程序填空。

#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 下面程序的功能是從鍵盤輸入一個(gè)大寫英文字母,要求按字母的順序打印出相鄰的字母,指定的字母在中間。若指定的字母為'Z',則打印YZA;若為A則打印ZAB。請(qǐng)分析程序填空。

#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'}。請(qǐng)分析程序填空。

#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)中下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變。請(qǐng)分析程序填空。

#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相等的所有元素下標(biāo)值分別存放在整型數(shù)組b中。請(qǐng)分析程序填空。

#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 有十個(gè)字符串。下面程序的功能是在每個(gè)字符串中,找出最大字符按一一對(duì)應(yīng)的順序放入一維數(shù)組中,即第i個(gè)字符串中的最大字符放在a[i]中,輸出每個(gè)字符串中的最大字符及其下標(biāo)。

#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 下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(jié)果是 。

#include

main()

{int i=5;

char c[6]="abcd";

do{c[i]=c[i-1];} while(--i>0);

puts(c);

}

參考答案:aabcd

*6.121 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入AabD,則運(yùn)行結(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下面程序的運(yùn)行結(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下面程序的運(yùn)行結(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 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入:

BOOK

CUT

GAME

PAGE

則下面程序的運(yùn)行結(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 當(dāng)運(yùn)行以下程序時(shí),從鍵盤輸入:

apple

orange

則下面程序的運(yùn)行結(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

參考分析:本題是查找最后一個(gè)大于首字符的字符及其位置。

6.3 編程題

6.126 從鍵盤輸入若干個(gè)整數(shù),其值在0至4范圍內(nèi),用-1作為輸入結(jié)束的標(biāo)志。統(tǒng)計(jì)每個(gè)整數(shù)的個(gè)數(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的行和列的元素互換后存到另一個(gè)二維數(shù)組b中。請(qǐng)編寫程序并輸出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 定義一個(gè)含有30個(gè)整型元素的數(shù)組,按順序分別賦予從2開始的偶數(shù);然后按順序每五個(gè)數(shù)求出一個(gè)平均值,放在另一個(gè)數(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 通過賦初值按行順序?yàn)橐粋€(gè)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)按行順序?yàn)橐粋€(gè)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階順時(shí)針螺旋方陣(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個(gè)整數(shù),把a(bǔ)中所有的后項(xiàng)除以前項(xiàng)之商取整后存入數(shù)組b,并按每行3個(gè)元素的格式輸出數(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 從鍵盤輸入一個(gè)整數(shù),,用折半查找法找出該數(shù)在10個(gè)有序整型數(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 從鍵盤輸入兩個(gè)字符串a(chǎn)和b,要求不用庫函數(shù)strcat把串b的前五個(gè)字符連接到串a(chǎn)中;如果b的長(zhǎng)度小于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 從鍵盤輸入一個(gè)字符串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);

}

更多資料

廣東省專升本《大學(xué)語文》真題

云南專升本《高等數(shù)學(xué)》真題(2019年)

統(tǒng)招專升本《高等數(shù)學(xué)》真題回憶版(2021年)

更多課程

《市場(chǎng)營(yíng)銷學(xué)》公開課—業(yè)務(wù)成長(zhǎng)戰(zhàn)略

1節(jié)課

《基礎(chǔ)會(huì)計(jì)》公開課—會(huì)計(jì)要素-反映財(cái)務(wù)狀況的會(huì)計(jì)要素

1節(jié)課

《管理學(xué)》公開課——馬斯洛需要層次理論

1節(jié)課

溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

專升本備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

資料下載
  • 統(tǒng)招專升本《大學(xué)語文》真題資料

    下載
  • 統(tǒng)招專升本《大學(xué)語文》真題回憶版(2021年)

    下載
  • 統(tǒng)招專升本《大學(xué)語文》備考資料一

    下載
  • 全國(guó)版專接本《大學(xué)語文》真題匯編

    下載