C語言程序設(shè)計題庫模擬試題10套期末考試卷帶答案_第1頁
C語言程序設(shè)計題庫模擬試題10套期末考試卷帶答案_第2頁
C語言程序設(shè)計題庫模擬試題10套期末考試卷帶答案_第3頁
C語言程序設(shè)計題庫模擬試題10套期末考試卷帶答案_第4頁
C語言程序設(shè)計題庫模擬試題10套期末考試卷帶答案_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

《C語言程序設(shè)計》模擬試卷一一、

單項(xiàng)選擇題(每題2分,共30分)1、下列有關(guān)C語言的敘述中錯誤的是()。A)C語句必須以分號結(jié)束

B)任何一個C程序中有且只有一個主函數(shù)C)復(fù)合語句在語法上可被看作一條語句

D)C程序中對數(shù)據(jù)的任何操作都可由運(yùn)算符實(shí)現(xiàn)2、以下不能定義為用戶標(biāo)識符的是()。

A)MAIN

B)_HJ

C)2ong

D)LINE13、下列符號中用來表示C語言中的回車換行的是()。

A)\r

B)\n

C)\b

D)\t4、如有如下定義:int

a=1,則語句printf(“%d,%d”,a,++a);的運(yùn)行結(jié)果為()。

A)1,

1

B)1,

2

C)2,

2

D)2,

15、已知ch為字符型變量,下面表達(dá)式中正確的是()。

A)ch=’\xff’

B)ch=’\ff’

C)ch=’ff’

D)ch=”ff”6、以下能正確定義一維數(shù)組的是()。

A)int

a[5]={0,1,2,3,4,5};

B)int

a[5]=”012345”;

C)char

a[]=”012345”;

D)char

a[5]={0,1,2,3,4,5};7、以下語句中能正確定義變量并賦初值的是()。

A)char

c=65;

B)float

f=f+1.1;

C)double

x=12.3e3.6;

D)int

m=n=2.0;8、在執(zhí)行下列程序時輸入:1357924,則程序的運(yùn)行結(jié)果為()。

main()

{int

x,y;scanf(“%2d%2d”,&x,&y);printf(“%2d”,x*y);

}A)13

B)1357

C)74

D)7419、執(zhí)行下列程序段后輸出的結(jié)果是()。

x=9;

while(x>7)

{

printf(“*”);x--;}A)****

B)***

C)**

D)*10、設(shè)charstr1[10]=“ABCDE”,str2[10]=“xyz”;則執(zhí)行語句

printf(“%d”,strlen(strcpy(str1,str2)));后的輸出結(jié)果是()A)

9

B)8

C)5

D)311、若用數(shù)組名作為函數(shù)調(diào)用的實(shí)參,則傳遞給形參的是()A)數(shù)組的首地址

B)數(shù)組第一個元素的值C)數(shù)組中全部元素的值

D)數(shù)組元素的個數(shù)12、在C程序中,若未在函數(shù)定義時說明函數(shù)類型,則函數(shù)默認(rèn)的類型為(

)A)void

B)double

C)int

D)char13、下面不能正確進(jìn)行字符串賦值操作的語句是()A)chars[5]={"ABCD"};

B)chars[5];

s="ABCD";C)char*s;s="ABCDEF";

D)char*s="ABCD";14、設(shè)有說明ints[5]={1,3,5,7,9};int*p=s;則下列表達(dá)式中值為3的是()A)++p

B)++(*p)

C)*(++p)

D)*(p+=2)15、下面程序的輸出結(jié)果是()int

m=13;int

fun(intx,

int

y){intm=3;

return(x*y-m);}main(){inta=7,b=5;

printf(“%d\n”,fun(a,b)/m);}A)1

B)

2

C)3

D)10

二、

判斷(每空1分,共10分)1、C語言有三種結(jié)構(gòu)化程序設(shè)計方法,分別為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

)2、C語言規(guī)定:標(biāo)識符應(yīng)由字母、下劃線和數(shù)字組成,且可以是上述字符的任意組合,其長度也是任意的。(

3、數(shù)組在定義時沒有必要指定數(shù)組的長度,其長度可以在程序中根據(jù)元素個數(shù)再決定。(

)4、if語句有多種使用方法,其中if子句和else子句也都可以單獨(dú)使用。

)5、for語句作為循環(huán)控制語句時,從語法上將其括號內(nèi)各個表達(dá)式都可缺省,但表達(dá)式內(nèi)的分號卻不可以卻省。()

6、字符串是C語言中一種基本數(shù)據(jù)類型,字符串總是以‘\n’作為結(jié)束標(biāo)志。(

)7、在C語言中,程序的最小編譯單位是源文件,最小功能單位是函數(shù)。(

)8、在定義指針型變量時指定的基類型為該指針變量所能指向的變量類型。(

)9、結(jié)構(gòu)體與數(shù)組一樣,屬于構(gòu)造類型數(shù)據(jù),且在結(jié)構(gòu)體中的各個成員的類型也可不同。(

)10、在發(fā)生函數(shù)調(diào)用時,主~被調(diào)函數(shù)中的參數(shù)可以是簡單變量,也可以是數(shù)組名,當(dāng)采用數(shù)組名作為參數(shù)時其數(shù)據(jù)傳遞方式為單向值傳遞。(

三、

程序填空(每小題2分,共12分)1、以下程序可求出所有水仙花數(shù)(指3位正整數(shù)中各位數(shù)字立方和等于該數(shù)本身,如153=13+53+33),請?zhí)羁铡ain()

{int

x,y,z,m;printf(“shuixianhuanshu:\n”);for(m=100;m<1000;m++){x=m/100;

y=

(1)

;

z=m%10;if(

(2)

)printf(“%6d”,m);

}

}2、輸入一個字符,如果是大寫字母,則把其變成小寫字母;如果是小寫字母,則變成大寫字母;其它字符不變。請補(bǔ)充()內(nèi)缺省的內(nèi)容。#include<stdio.h>main()

{

char

ch;

ch=getchar();

if(___(3)____)

{ch=ch+32;

putchar(ch);}

elseif(__(4)___)

{ch=ch-32;

putchar(ch);}else

putchar(ch);}3、以下程序使用遞歸法求n!,請?zhí)羁?。main(){

int

n,y;

printf(“input

a

integer

number”);scanf(“%d”,&n);y=(5);

printf(“%d!

=%6d”,n,y);

}int

fac(int

n){

int

f;if(n<0){printf(“n<0”dataerror);f=-1;}

elseif(n==0||n==1)

f=1;

else

f=(6)

;

return(f);

}

四、

讀程序?qū)懗鼋Y(jié)果(本大題共5道小題,每小題4分,共20分)1、寫出下面程序的執(zhí)行結(jié)果

#include<stdio.h>

main()

{int

a,b,x; x=(a=3,b=a--);printf(“x=%d,a=%d,b=%d”,x,a,b);

}2、以下程序的運(yùn)行結(jié)果是

#include<stdio.h>

main()

{int

a=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;

else

c=-1;printf(“%d\n”,c);

}3、以下程序的運(yùn)行結(jié)果是

#include<stdio.h>main(){inti,j,k;

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

{for(j=1;j<4-i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("%c",'A'+i-1);

printf("\n");}

}4、以下程序的運(yùn)行結(jié)果是

main(

){inta[5][5],i,j;

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

{a[i][0]=1;a[i][i]=1;}

for(i=2;i<5;i++

)

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

{for(j=1;j<=i;j++)

printf(“%5d”,a[i][j]);printf(“\n”);}

}5、以下程序運(yùn)行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結(jié)果為

#include<stdio.h>#include<string.h>intfunc(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",func(p));}

五、

編程題(本大題28分,第一題8分,第二題9分,第三題11分)1、請編程實(shí)現(xiàn)下列分段函數(shù)的值:

(1-x)1/2

(x≤0)

y=

1-x

(x≤1)

(1-x)2

(x>1)2、百錢百雞問題:用100元錢買100只雞,公雞每只5元,母雞每只3元,小雞每3只1元,要求每種雞至少買1只,試編程求各種雞各買多少只。3、輸入20位學(xué)生的成績,分別用函數(shù)實(shí)現(xiàn):(1)將20位學(xué)生的成績按從高到低進(jìn)行排名。(2)求所有成績的平均分,并輸出所有成績中比平均分低的分?jǐn)?shù)。參考答案:單項(xiàng)選擇題1、D 2、C 3、B 4、B 5、A 6、C 7、A 8、D 9、C 10、D11、A 12、A 13、A 14、B 15、B二、判斷題1、T 2、F 3、F 4、F 5、T 6、F 7、T 8、T 9、T 10、F三、程序填空題1、(1)m/10%10 (2)m==x*x*x+y*y*y+z*z*z2、(3)ch>’A’&&ch<’Z’ (4)ch>’a’&&ch<’z’3、(5)fac(n) (6)n*fac(n-1)四、讀程序?qū)懡Y(jié)果1、x=3,a=2,b=32、-13、ABBBCCCCC4、 1 2 1 3 3 1 4 6 4 15、 5五、編程題1、#include<stdio.h>#include<math.h>voidmain(){ intx; doubley; printf("Pleaseinputxvalue:"); scanf("%d",&x); if(x<=0) y=sqrt(1-x); elseif(x<=1) y=1-x; else y=(1-x)*(1-x); printf("y=%f\n",y);}2、#include<stdio.h>voidmain(){ intx,y,z;/*分別代表所買的公雞數(shù),母雞數(shù),小雞數(shù)*/ for(x=1;x<99;x++) for(y=1;y<99;y++) for(z=1;z<99;z++) if((x*5+y*3+z/3==100)&&(z%3==0)&&(x+y+z==100)) printf("公雞數(shù)為%d只,母雞數(shù)為%d只,小雞數(shù)為%d只\n",x,y,z);}3、#include<stdio.h>voidsort(intb[20]){ inti,j; inttemp; for(i=0;i<20;i++) for(j=0;j<20;j++) { if(b[i]<b[j]) {temp=b[i];b[i]=b[j];b[j]=temp;} } for(i=0;i<20;i++) printf("%d",b[i]); printf("\n");}doubleave(intc[20]){ doublesum=0.0; inti; for(i=0;i<20;i++) sum=sum+c[i]; sum=sum/20; returnsum;}voidmain(){ inti; inta[20]; doublepingjun; printf("Pleaseinput20studentsscore!\n"); for(i=0;i<20;i++) { printf("Pleaseinput%dstudentscore:",i+1); scanf("%d",&a[i]); } for(i=0;i<20;i++) printf("%d",a[i]); printf("\n"); sort(a); pingjun=ave(a); printf("平均分為:%f\n",pingjun); printf("比平均分低的有:\n"); for(i=0;i<20;i++) if(a[i]<pingjun) printf("%d",a[i]); printf("\n");}《C語言程序設(shè)計》模擬試卷二

一、填空題。(每空2分,共30分)1.設(shè)有變量說明語句

intx=1,y=2;則執(zhí)行下述printf語句的輸出結(jié)果是______

_____。

printf("%f\n",1.0+x/y);2.執(zhí)行下述程序

#include<stdio.h>

main()

{

intx,y;

scanf("%2d%*2s%1d",&x,&y);

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

}若從鍵盤輸入

12345671則程序的輸出結(jié)果是________。3.以下程序的功能是:從鍵盤上輸入若干名學(xué)生的成績(百分制,可帶小數(shù),以輸入負(fù)數(shù)或0為結(jié)束標(biāo)志),統(tǒng)計并輸出最高成績和最低成績。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{

floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while()

{

if(x>amax)

amax=x;

elseif(x<amin)

amin=x;

scanf("%f',&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}4.設(shè)n是整型變量,且已具有某正整數(shù)值。根據(jù)下述數(shù)學(xué)式求s的值并輸出??删帉懭缦轮绦蚨螌?shí)現(xiàn)之。請?zhí)羁铡?/p>

intk;

doubles,d;

s=0.0;

d=1.0;

K=0;

do

{

s=s+d;

___

_________;

d=1.0/(k*(k+1));

}while(k<=n);

printf("%f\n",s);5.執(zhí)行下述程序的輸出結(jié)果是____

____。

#inclued<stdio.h>

main()

{

inta[6],i;

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

{

a[i]=9*(i-2+4*(i>3))%5;

printf("%3d",a[i]);

}

printf("\n");

}6.執(zhí)行下述程序時的輸出結(jié)果是_________

________。

#include<stdio.h>

main()

{

inta[]={2,4,6,},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}7.執(zhí)行下述程序的輸出結(jié)果是_____

_______。

#include<stdio.h>

main()

{

inta[][2]={10,20,30,40,50,60},(*p)[2];

p=a;

printf("%d\n",*(*(p+2)+1));

}8.執(zhí)行以下程序的輸出結(jié)果是___

______。

#include<stdio.h>

main()

{

ints,i,sum();

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

s=sum(i);

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

}

sum(intk)

{

intx=0;

return(x+=k);

}9.下述函數(shù)定義用來求出兩個整數(shù)之和,并通過函數(shù)的模擬傳地址調(diào)用,傳回兩整數(shù)相加之和值,請?zhí)羁铡?/p>

voidadd(intx,inty,____

___)

{

*z=x+y;

}10.函數(shù)func的功能是將整型變量x的值轉(zhuǎn)換成二進(jìn)制數(shù),并將該二進(jìn)制數(shù)的每一位存入由整型指針b所指向的一維數(shù)組a,最低位存放于a[0]中,次低位存放于a[1]中,依此類推。請?zhí)羁铡?/p>

voidfunc(intx,int*b)

{

intr;

do

{

r=x%2;

_____________=r;

x/=2;

}while(x);

}11.以下程序中函數(shù)invert實(shí)現(xiàn)將數(shù)組內(nèi)所有數(shù)組元素的值逆置。比如,執(zhí)行本程序?qū)⑤敵?/p>

10

9

8

7

6

5

4

3

2

1請?zhí)羁铡?/p>

#include<stdio.h>

main()

{

inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;

invert(a,n-1);

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

printf("%3d”,a[i]);

printf("\n");

}

invert(int*s,intnum)

{

int*t,k;

t=s+num;

while(____

________)

{

k=*s;

*s=*t;

*t=k;

s++;

t--;

}

}12.若有以下定義和說明,則結(jié)構(gòu)體變量w在內(nèi)存中所占的字節(jié)數(shù)是_____unionaa

{

floatx;

floaty;

charc[6];

};

structst

{

unionaav;

floatw[5];

doubleave;

}w;

13.執(zhí)行下述程序的輸出結(jié)果是______

_______。

#include<stdio.h>

structstr

{

floatx;

char*y;

}*m;

structstrgroup[3]={

95.0,"Li",

82.5,"Wang",

73.5,"Sun"

};

main()

{

m=group;

printf("%.lf,%s\n",m->x,m->y);

}14.下面的程序用來統(tǒng)計某文件文件中字符的個數(shù)。請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{

FILE*fp;

longnum=0;

if((fp=fopen("fnam.dat","r"))==NULL)

{

printf("Can'topenthisfile!\n");

exit(0);

}

while(____

_____)

{

fgetc(fp);

num++;

}

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

fclose(fp);

}15.執(zhí)行下述程序后,輸出結(jié)果為____________。

#include<stdio.h>

#defineFUN1(a,b)a+b

#defineFUN2(a,b)a-b

#defineCAL(a,b)a*b+a+3

main()

{

printf("%d\n",CAL(FUN1(3,5),FUN2(4,5)));

}

二、單項(xiàng)選擇題。(每題1分,共20分)1.以下不是c語言規(guī)定保留字的是(

)。(A)float

(B)integer

(C)signed

(D)unsigned2.設(shè)int型變量x有初始值3,則表達(dá)式x++*5/10的值是(

)(A)0

(B)1

(C)2

(D)33.下述程序執(zhí)行后的輸出結(jié)果是(

)

#include<stdio.h>

main()

{

intx='f';

printf("%c\n",'a'+(x-'a'+1));

}(A)g

(B)h

(C)i

(D)j4.設(shè)有程序#include<stdio.h>main(){

inti,j;

for(i=0,j=1;i<=j+1;i+=2,j--)

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

}在運(yùn)行上述程序時,for語句中循環(huán)體的執(zhí)行次數(shù)是(

)(A)3

(B)2

(C)1

(D)05.在下述選項(xiàng)時,沒有構(gòu)成死循環(huán)的程序是(

)

(A)inti=100

while(1)

{

i=i%100+1;

if(i>100)

break;

}(B)for(;;);(C)intk=1000;

do

{

++k;

}while(k>=10000);(D)ints=36;

while(s);--s;6.假定a和b為int型變量,則執(zhí)行下述語句組后,b的值為(

)。

a=1;

b=10;

do

{

b-=a;

a++;

}while(b--<0);

(A)9

(B)-2

(C)-1

(D)87.設(shè)有變量說明語句

int

a=1,b=0;則執(zhí)行以下程序段的輸出結(jié)果為(

)。

switch

(a)

{

case1:

switch

(b)

{

case0:printf("**0**");break;

case1:printf("**1**");break;

}

case2:printf("**2**");break;

}

printf("\n");

(A)**0**

(B)**0****2**

(C)**0****1****2**

(D)有語法錯誤8.以下合法的數(shù)組說明是(

)。

(A)chara[7]="string";

(B)inta[5]={0,1,2,3,4,5};

(C)chara="string";

(D)INTa[]={0,12,3,4,5};9.下述程序代碼中有語法錯誤的行是(

)。

inti,ia[10],ib[10];

/*第1行*/

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

/*第2行*/

ia[i]=0;

/*第3行*/

ib=ia;

/第4行*/

(A)第1行

(B)第2行

(C)第3行

(D)第4行10.若已定義

inta[9],*p=a;并在以后的語句中未改變p的值,則不能表示a[1]地址的表達(dá)式是(

)。(A)p+1

(B)a+1

(C)a++

(D)++p11.若有下述說明和語句

int**pp,*p,a=10,b=20;

pp=&p;

p=&a;

p=&b;

printf("%d,%d\n",*p,**pp);則輸出結(jié)果是(

)。

(A)10,10

(B)10,20

(C)20,10

(D)20,2012.執(zhí)行下述程序后的輸出結(jié)果是(

)。

#include<stdio.h>

func(inta)

{

intb=0;

staticintc=3;

a=c++,b++;

return(a);

}

main()

{

inta=2,i,k;

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

k=func(a++);

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

}

(A)3

(B)0

(C)5

(D)413.執(zhí)行下述程序的輸出結(jié)果是(

)。

#include<stdio.h>

main()

{

intaa[3][3]={{2},{4},{6}};

inti,*p=&aa[0][0];

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

{

if(i==0)

aa[i][i+1]=*p+1;

else

++p;

printf("%d",*p);

}

printf("\n");

}

(A)23

(B)26

(C)33

(D)3614.讀下面的程序,正確的輸出結(jié)果是(

)。#include<stdio.h>staticinta=50;voidf1(inta){printf("%d,",a+=10);}voidf2(void){printf("%d,",a+=3);}voidmain() {inta=10;f1(a);f2();printf("%d\n",a);}

(A)60,63,60

(B)20,23,23

(C)20,13,10

(D)20,53,1015.執(zhí)行下述程序的輸出結(jié)果是(

)。

#include<stdio.h>

intpower(intx,inty);

main()

{

floata=2.6,b=3.4;

intp;

p=power((int)a,(int)b);

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

}

intpower(intx,inty)

{

inti,p=1;

for(i=y;i>0;i--)

p=p*x;

return(p);

}

(A)8

(B)9

(C)27

(D)8116.已知函數(shù)scopy的定義如下

voidscopy(char*s,char*t)

{

while(*s++=*t++);

}

則該函數(shù)的功能是(

)。

(A)串復(fù)制

(B)求串長度

(C)串比較

(D)串反向17.執(zhí)行下述程序的輸出是(

)。

#include<stdio.h>voidmain(){structcomplex{intre;intim;};structcomplexcp[3]={2,5,4,7};cp[2].re=cp[0].re+cp[1].re;cp[2].im=cp[0].im+cp[1].im;printf("%d%d\n",cp[2].re,cp[2].im);}(A)711

(B)612

(C)99

(D)12618.執(zhí)行下述程序的輸出結(jié)果是(

)。

#include<stdio.h>

main()

{

union

{

intk;

chari[2];

}

*s,a;

s=&a;

s->i[0]=0x39;

s->i[1]=0x38;

printf("%x\n",s->k);

}

(A)cccc3839

(B)3938

(C)380039

(D)39003819.有以下程序,則結(jié)果為。structabc{inta,b,c;};main(){

structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;printf(“%d\n”,t);}A)5B)6C)7D)820.以下程序for語句循環(huán)體中printf語句執(zhí)行次數(shù)是(

)。

#include<stdio.h>

#defineN2

#defineMN+1

#defineNUM(M+1)*M/2

main()

{

inti;

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

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

}

(A)5

(B)6

(C)8

(D)9三、程序分析題(每題5分,共30分)1.閱讀程序,寫出執(zhí)行該程序的輸出結(jié)果。

#include<stdio.h>

main()

{

chars[]="pressakey.";

inti;

charch;

for(i=0;(ch=s[i])!='\0';i++)

{

switch(ch)

{

case'p':

case'a':

case'k':putchar(ch-32);continue;

case'

':putchar('*');break;

case'.':putchar('!');break;

default:putchar(ch);continue;

}

putchar('\n');

}

}

2.閱讀程序,寫出執(zhí)行該程序的輸出結(jié)果。

#include<stdio.h>

#defineN5

main()

{

inti,j;

inta[N][N];

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

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

if(i>=j)

a[i][j]=1;

else

a[i][j]=a[i][j-1]+1;

for(i=0;j<N;j++)

{

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

printf("%3d",a[i][j]);

printf("\n");

}

}

3.閱讀程序,寫出執(zhí)行該程序的輸出結(jié)果

#include<stdio.h>

main()

{

intm[5],n[5],*px,*py,k;

px=m;py=n;

for(k=1;k<4;k++,px++,py++)

{

*px=k;*py=2*k;

printf("%d,%d",m[k-1],n[k-1]);

}

printf("\n");

px=&m[1];

py=&n[1];

for(k=1;k<3;k++)

{

*px+=k;*py*=k;

printf("%d,%d,",*px++,*py++);

}

printf("\n");

}

4.閱讀程序,寫出執(zhí)行該程序的輸出結(jié)果。#include<stdio.h>voidf(inty){staticinti=5;intj=3;j++;printf("%d%d%d=%d\n",i,j,y,i+j+y);i*=2; }voidmain(){intx;for(x=1;x<+3;++x)f(x);}

5.閱讀下列程序,寫出程序運(yùn)行的輸出結(jié)果。#include<stdio.h>voidmain(){chara[20]={"1A2B3C"},b[20],*p1,*p2;p1=a,p2=b; do{if(!(*p1>='\0'&&*p1<='9')) {*p2=*p1;p2++;*p2=*p1;}else*p2=*p1;p1++,p2++;}while(*p1='\0');*p2=*p1;printf("%s\n",b);}6.閱讀下列程序,寫出程序的主要功能。

main(){intn,I;printf("\npleaseinputanumber:\n");scanf("%d",&n);printf("%d=",n);for(i=2,i<=n,i){while(n!=i){if(n%i==0){printf("%d*",i);n=n/i;}elsebreak;}}printf("%d",n);}四、程序設(shè)計題(每小題10分,共20分)1、編寫.程序求1、2、3、4個數(shù)字能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?。2、有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?

試卷二參考答案一、填空題。1. 1.0000002. 173. x!=0&&x<100&&x>04. k++5. -3-404436. 67. 608. s=109. int*z10. *(b++)11. t>s12. 1813. 95,Li14. !feof(fp)15. 29二、單項(xiàng)選擇題。1、 B 2、 B 3、 A 4、 C 5、 C 6、 D7、 B 8、 A 9、 D 10、C 11、D 12、D13、A 14、D 15、A 16、A 17、B 18、A19、B 20、C三、程序分析題1、PressAKey!2、無任何輸出結(jié)果。3、 1,22,43,6 3,4,5,12,4、 541=10 1042=165、16、求一個正整數(shù)分解質(zhì)因數(shù)。四、程序設(shè)計題1、#include"stdio.h"main(){inti,j,k;printf("\n");for(i=1;i<5;i++)/*以下為三重循環(huán)*/for(j=1;j<5;j++)for(k=1;k<5;k++){if(i!=k&&i!=j&&j!=k)/*確保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}2、#include"stdio.h"main(){longf1,f2;intI;f1=f2=1;for(i=1;i<=20;i++){printf("%ld%ld",f1,f2);if(i%2==0)printf("\n");/*控制輸出,每行四個*/f1=f1+f2;/*前兩個月加起來賦值給第三個月*/f2=f1+f2;/*前兩個月加起來賦值給第三個月*/}}《C語言程序設(shè)計》模擬試卷三

一、填空題。(每空2分,共16分)1.在內(nèi)存中,短整型變量占

字節(jié),單精度實(shí)型變量占

字節(jié),字符型變量占

字節(jié)。2.一個C語言文件是由若干個

組成。3.設(shè)有以下變量定義,并已賦確定的值charw;intx;floaty;doublez;則表達(dá)式:w*x+z-y所求得的數(shù)據(jù)類型為

。4.若x為int類型,請以最簡單的形式寫出與邏輯表達(dá)式!x等價的C語言關(guān)系表達(dá)式

。5.若有如下圖所示五個連續(xù)的int類型的存儲單元并賦值如下圖,a[0]的地址小于a[4]的地址。p和s是基類型為int的指針變量。請對以下問題進(jìn)行填空。a[0]a[1]a[2]a[3]a[4]2233445566(1)若p已指向存儲單元a[1]。通過指針p,給s賦值,使s指向最后一個存儲單元a[4]的語句是

。(2)若指針s指向存儲單元a[2],p指向存儲單元a[0],表達(dá)式s-p的值是

。二、單項(xiàng)選擇題。(每題2分,共40分)1.設(shè)有intx=11;則表達(dá)式(x++*1/3)的值是()。A)3B)4C)11D)122.下列程序的輸出結(jié)果是()。A)3

B)3.2

C)0

D)3.07main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf(“%d\n”,d*y);}3.下列程序執(zhí)行后的輸出結(jié)果是(小數(shù)點(diǎn)后只寫一位)()。A)6

6

6.0

6.0B)6

6

6.7

6.7C)6

6

6.0

6.7D)6

6

6.7

6.0main(){doubled;floatf;longl;inti;i=f=l=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);scanf("%d",&d);}4.下列變量定義中合法的是()。A)short_a=1-.le-1;

B)doubleb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;5.設(shè)intx=1,y=1;表達(dá)式(!x||y--)的值是()。A)0B)1C)2D)-16.與y=(x>0?1:x<0?-1:0);的功能相同的if語句是()。A)if(x>0)y=1;

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

if(x>0)y=1;elsey=0;elseif(x<0)y=-1;

elsey=0;C)y=-1

D)

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

if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

elsey=-1;7.以下循環(huán)體的執(zhí)行次數(shù)是()。A)3B)2C)1D)0main(){inti,j;for(i=0,j=1;i<=j+1;i+=2,j--)printf(“%d\n”,i);}8.以下敘述正確的是()。A)do-while語句構(gòu)成的循環(huán)不能用其它語句構(gòu)成的循環(huán)來代替。B)do-while語句構(gòu)成的循環(huán)只能用break語句退出。C)用do-while語句構(gòu)成的循環(huán),在while后的表達(dá)式為非零時結(jié)束循環(huán)。D)用do-while語句構(gòu)成的循環(huán),在while后的表達(dá)式為零時結(jié)束循環(huán)。9.下列程序執(zhí)行后的輸出結(jié)果是()。A)GB)HC)ID)Jmain(){intx=’f’;printf(“%c\n”,’A’+(x-‘a(chǎn)’+1));}10.執(zhí)行下面的程序段后,變量k中的值為()。A)不定值B)33C)30D)10intk=3,s[2];s[0]=k;k=s[1]*10;11.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9],*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是()。A)a[p-a]B)*(&a[i])C)p[i]D)a[10]12.下列程序執(zhí)行后的輸出結(jié)果是()。A)6B)7C)8D)9voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf(“%d\n”,b[0]);}13.下列程序的運(yùn)行結(jié)果是()。A)a=%2,b=%5

B)a=2,b=5C)a=d,b=dD)a=%d,b=%d#include<stdio.h>main(){inta=2,c=5;printf(“a=%d,b=%d\n”,a,c);}14.下列程序執(zhí)行后的輸出結(jié)果是()。A)3B)6C)9D)隨機(jī)數(shù)main(){

inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf(“%d\n”,a[1][2]);}15.設(shè)有數(shù)組定義:chararray[]=“China”;則數(shù)組array所占的空間為()。A)4個字節(jié)B)5個字節(jié)C)6個字節(jié)D)7個字節(jié)16.下列程序的輸出結(jié)果是()。A)4B)6C)8D)10intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf(“%d\n”,res);}17.有以下定義和語句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];則*(p[0]+1)所代表的數(shù)組元素是()A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]18.下列程序的輸出結(jié)果是()。A)5B)6C)7D)8structabc{inta,b,c;};main(){

structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;printf(“%d\n”,t);}19.若有以下調(diào)用語句,則不正確的fun函數(shù)的首部是()。A)voidfun(intm,intx[])B)voidfun(ints,inth[41])C)voidfun(intp,int*s)

D)voidfun(intn,inta)main(){…inta[50],n;…fun(n,&a[9]);…}20.在C程序中,可把整型數(shù)以二進(jìn)制形式存放到文件中的函數(shù)是()。A)fprintf函數(shù)B)fread函數(shù)

C)fwrite函數(shù)

D)fputc函數(shù)三、修改下列程序:(在程序出錯的語句下劃橫線并標(biāo)號,把修改后的語句寫在程序下面的橫線上。)(每小題5分,共10分)1.下列給定程序的功能是:讀入一個整數(shù)(2<=k<=10000),打印它的所有質(zhì)因子(即所有為素數(shù)的因子)。例如,若輸入整數(shù)2310,則應(yīng)輸出2、3、5、7、11。#include<conio.h>#include<stdio.h>*******************************IsPrime(intn);{inti,m;m=1;for(i=2;i<n;i++)******************************if!(n%i){m=0;contitue;}return(m);}main(){intj,k;clrscr();printf(“nPleaseenteranintegernumberbetween2and10000:”);scanf(“%d”,k);printf(“nnTheprimefactor(s)of%dis(are):”,k);for(j=2;j<=k;j++)if((!(k%j))&(IsPrime(j))) printf("%4d",j);getchar();})

2.下列給定程序中,函數(shù)fun的功能是:逐個比較a、b兩個字符串對應(yīng)位置中的字符,把ASCII值大或等于的字符一次存放到c數(shù)組中,形成一個新的字符串。例如,若a中的字符串為aBCDeFgH,b中的字符串為:ABcd,則c中的字符串為:aBcdeFgh。#include<stdio.h>#include<string.h>***************************************void;fun(char*p,char*q,char*c);***************************************{intk=1;**************************************while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}K=’\0’;}***************************************

main(){chara[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80]={“”};fun(a,b,c);printf(“Thestringa:”);puts(a);printf(“Thestringb:”);puts(b);printf(“Theresult:”);puts(c);}

四、閱讀下列程序,在程序后面的橫線上,寫出該程序的功能或給出運(yùn)行結(jié)果。(每小題4分,共16分)1.

#include<stdio.h>

voidmain()

{

charch;intk=0;

for(ch=’A’;ch<’H’;ch++,k++)if(k%2==0)printf(“%c”,ch);

printf(“\n”);

}

輸出結(jié)果:

2.

#include<stdio.h>

voidmain()

{

intk=0;

charc=’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);}

輸出結(jié)果:

3.

#include<stdio.h>

voidmain()

{

inta[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;

for(i=0;i<6;i++){

for(j=0;j<6;j++)if(a[i]==b[j])break;

if(j<6)printf(“%d”,a[i]);

}

printf(“\n”);

}

輸出結(jié)果:

4.

#include<stdio.h>

voidmain()

{

inta[8]={1,0,1,0,1,0,1,0},i;

for(i=2;i<8;i++)a[i]+=a[i-1]+a[i-2];

for(i=0;i<8;i++)printf(“%d”,a[i]);

printf(“\n”);

}

輸出結(jié)果:

五、按給出的程序功能,在空格處,填寫正確的程序語句,使程序完整。(每空1分,共6分)1.將兩個數(shù)從小到達(dá)輸出。

main(){float

a,b,

;scanf(

,&a,&b);if(a>b)

{t=a;

;

b=t;

}printf(“Thenumsmalltobig:%d%d”,a,b);

}2.輸出購買總價值和數(shù)量。#define

30

main()

{

;

num=10;

total=num*PRICE;printf(“total=%d,num=%d\n”,

);}六、按要求編寫下列程序。(每題6分,共12分)1.輸出下圖。

*

*

*

*

*

*

*

*

*

*

2.編程判斷輸入的正整數(shù)是否既是5又是7的整數(shù)倍數(shù)。若是,則輸出yes;否則輸出no?!禖語言程序設(shè)計》模擬試卷三答案一、填空題。(每空2分,共16分)12

4

12.

函數(shù)

3.double

4.

x==0||x==1

5.

s=p+3

2

二、單項(xiàng)選擇題。(每題2分,共40分)1.A2.C3.A4.A5.B6.A7.C8.D9.A10.A11.D12.A13.B14.B15.C16.B17.C18.B19.D20.C三、修改下列程序:(在程序出錯的語句下劃橫線并標(biāo)號,把修改后的語句寫在程序下面的橫線上。)(每小題5分,共10分)1

IsPrime(intn)

if(!(n%i))

scanf(“%d”,&k);

2.

voidfun(char*p,char*q,char*c)

k=0;

while(*p||*q)

四、閱讀下列程序,在程序后面的橫線上,寫出該程序的功能或給出運(yùn)行結(jié)果。(每小題4分,共16分)1.

ACEG

2.

k=8

3.

4252716

4.1022571320

五、按給出的程序功能,在空格處,填寫正確的程序語句,使程序完整。(每空1分,共6分)1.

t

“a=%f,b=%f”

a=b

2.

PRICE

intnum

,total

total,num

六、按要求編寫下列程序。(每題6分,共12分)1.main(){ inti,j; for(i=0;i<=3;i++) { for(j=0;j<=i;j++) printf("*"); printf("\n"); } getchar();}2.main(){ intn; printf("請輸入整數(shù)n:"); scanf("%d",&n);if(!(n%5)||!(n%7)) printf("Yes!"); else printf("No!");}《C語言程序設(shè)計》模擬試卷四一、

單項(xiàng)選擇題(每題2分,共30分)1、下列對C語言特點(diǎn)的描述中,錯誤的是

。A)C語言不是結(jié)構(gòu)化程序設(shè)計語言

B)C語言編程簡潔明了C)C語言功能較強(qiáng)

D)C語言移植性好2、設(shè)變量a是整型,b是實(shí)型,c是雙精度型,則表達(dá)式2+‘a(chǎn)’+b*c值的數(shù)據(jù)類型

。A)int

B)float

C)double

D)不確定3、在a=2,b=0,c;則執(zhí)行c=b||a--;語句后,a和c的結(jié)果是

。A)0,1

B)1,0

C)1,1

D)2,04、在scanf()函數(shù)的給是說明符中,長整型數(shù)的輸入格式說明符是

。A)%d

B)%ld

C)%lf

D)%x5、以下程序的執(zhí)行結(jié)果是

main()

{intn=1;printf(“%d,%d,%d”,n,++n,n--);}A)1,1,1

B)1,2,1

C)0,1,1

D)1,2,26、判斷char型變量ch是否為大寫字母的正確表達(dá)式是

。A)‘A’<=ch<=‘Z’

B)(ch>=‘A’)&(ch<=‘Z’)

C)(‘A’<=ch)AND(‘Z’>=ch)D)(ch>=‘A’)&&(ch<=‘Z’)7、能夠完成如下函數(shù)計算的程序段是

。

-1

x<0

y=

0

x=0

1

x>0

A)y=-1;

B)if(x>=0)

if(x!=0)

if(x>0)y=1;

if(x>0)y=1;

elsey=0;

else

y=0;

else

y=-1;C)y=0;

D)y=-1;

if(x>=0)

if(x>0)y=1;

if(x>0)y=1;

elsey=0;

elsey=-18、下列循環(huán)語句中,執(zhí)行循環(huán)體的次數(shù)是

。

inti,j;

while(10)printf(“ABC”);A)10次

B)0次

C)1次

D)無限次9、若i、j已定義為int類型,則以下程序段中的內(nèi)循環(huán)體的執(zhí)行次數(shù)是

。

for(i=4;i;i--)

for(j=0;j<5;j++){……}A)10

B)15

C)20

D)2510、數(shù)組賦初值時的數(shù)據(jù)項(xiàng)的個數(shù)與數(shù)組元素的個數(shù)的下列關(guān)系中,錯誤的是

。A)大于

B)小于

C)等于

D)小于等于11、下列數(shù)組初始化的定義中,錯誤的是

。A)inta[5]={a};

B)chars[5]=“a123b”;

C)intn[]={6,5,4,3,2,1};

D)intb[3]={1,2,3};12、已知:staticinta[][3]={{5},{3},{13}};數(shù)值為0的元素是

。A)a[0][0]

B)a[0][2]

C)a[1][0]

D)a[2][0]13、關(guān)于下列函數(shù)定義的描述中,錯誤的是

。A)定義函數(shù)時必須指出函數(shù)名和函數(shù)的類型B)定義函數(shù)時可以省略函數(shù)的類型C)函數(shù)可以嵌套定義D)函數(shù)不可以嵌套定義14、下面程序的輸出結(jié)果是

。

voidprtv(intx)

{printf(“%d\n”,++x);}

main()

{intt=10;prtv(t);

}A)8

B)9

C)10

D)1115、下面程序的輸出結(jié)果是

。main()

{inta[]={1,2,3},s,b,*p;

s=1;

p=a;

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

s*=*(p+b);

printf(“s=%d\n”,s);}A)s=1

B)s=2

C)s=3

D)s=6二、

判斷(每空1分,共10分)1、C語言有三種結(jié)構(gòu)化程序設(shè)計方法,分別為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。(

)2、C語言規(guī)定:標(biāo)識符應(yīng)由字母、下劃線和數(shù)字組成,且可以是上述字符的任意組合,其長度也是任意的。(

3、數(shù)組在定義時沒有必要指定數(shù)組的長度,其長度可以在程序中根據(jù)元素個數(shù)再決定。(

)4、if語句有多種使用方法,其中if子句和else子句也都可以單獨(dú)使用。

)5、for語句作為循環(huán)控制語句時,從語法上將其括號內(nèi)各個表達(dá)式都可缺省,但表達(dá)式內(nèi)的分號卻不可以卻省。()

6、字符串是C語言中一種基本數(shù)據(jù)類型,字符串總是以‘\n’作為結(jié)束標(biāo)志。(

)7、在C語言中,程序的最小編譯單位是源文件,最小功能單位是函數(shù)。(

)8、在定義指針型變量時指定的基類型為該指針變量所能指向的變量類型。(

)9、結(jié)構(gòu)體與數(shù)組一樣,屬于構(gòu)造類型數(shù)據(jù),且在結(jié)構(gòu)體中的各個成員的類型也可不同。(

)10、在發(fā)生函數(shù)調(diào)用時,主~被調(diào)函數(shù)中的參數(shù)可以是簡單變量,也可以是數(shù)組名,當(dāng)采用數(shù)組名作為參數(shù)時其數(shù)據(jù)傳遞方式為單向值傳遞。(

三、

程序填空(每小題2分,共12分)1、求一個3位數(shù)各個位上值的和。(如123為1+2+3=6)#include<s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論