C語言期末考試復習題及答案3講課講稿_第1頁
C語言期末考試復習題及答案3講課講稿_第2頁
C語言期末考試復習題及答案3講課講稿_第3頁
C語言期末考試復習題及答案3講課講稿_第4頁
C語言期末考試復習題及答案3講課講稿_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言期末考試復習題及答案

一、選擇題:下列各題A)、B)、C)、D)四個選項中

只有一個是正確的,請將正確的選項涂寫在答案紙上。答在試卷上

不得分。

(1)C語言規(guī)定:在一個源程序中,main函數(shù)的位置匕

A)必須在最后B)必須在系統(tǒng)調用的庫函數(shù)的后面。

C)必須在最開始。。D)可以任意

(2)C語言中的標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一

個字符A。

A)必須為字母或下劃線。。B)必須為下劃線。

C)必須為字母D)可以是字母、數(shù)字和下劃線中的任一種字符。

(3)下面四個選項中,均是正確的八進制數(shù)或十六進制數(shù)的選項是

A)-100x8f-0UB)010-0xll0xfl

C)Oabc-O170xcD)0al2-0xl23-0xa

(4)C語言中int型數(shù)據在內存中占兩個字節(jié),則unsegnedint取值范圍

是Ao

A)0~65535B)0~32767

C)-32767^32768D)-32768^327687

⑸若有定義:inta=7;floax=,y=;

則表達式x+a%3*(int)(x+y)%2/4的值是匕

C)D)

(6)已知ch是字符型變量,下面不正確的賦值語句是目。

A)ch=5+9;B)ch='a+b';C)ch='\0';D)ch='7'+'6';

(7)設x,y和z是int型變量,且x=3,y=4,z=5則下面表達式中值為0

是Ao

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

D)x<=y

(8)設有程序段

intk=10;

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

以下描述正確的是Ao

A)循環(huán)體語句一次也不執(zhí)行。B)循環(huán)是無限循環(huán)。

C)while循環(huán)語句執(zhí)行十次。D)循環(huán)體語句執(zhí)行一次。

(9)以下C程序正確的運行結果是儲

main()

{longy=23456;

printf(,,y=%3x\n/,,y);

printf("y=%8x\n”,y);

printf("y=%#8x\n",y);

I

A)y=5ba0B)y=5ba0C)y=5ba0D)y=5ba0

y=5ba0y=5ba0y=bbaOy=5ba0

y=0x5ba0y=0x5ba0y=0x5ba0y=####5ba0

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

if(a<b)

if(c<d)x=l;

else

if(a<c)

if(b<d)x=2;

elsex=3;

elsex=6;

elsex=7;

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

(11)下面程序的運行結果是D。

#include〃〃

main()

{inta=l,b=10

do

{b-=a;a++;}

whi1e(b一<0);

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

A)a=3,b=l1B)a=4,b=9

C)a=l,b=-lD)a=2,b=8

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

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

A)無限次。B)4次。C)0次。D)3次。

(13)以下是死循環(huán)的程序段的是Co

A)for(i=l;;)B)i=32767

{if(++i%2==0)continue;do{if(i<0)break;}while(++i)

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

C)for(i=l;;)D)i=l

if(++i<10)continue;whi1e(i一);

(14)若有說明:inta[10];則對a數(shù)組元素的正確引用是員。

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

(15)根據定義和數(shù)據的輸入方式,輸入語句的正確形式為小。

已有定義:floatfl,f2;數(shù)據輸入方式:

A)scanf("%f%f”,&fl,&f2);

B)scanf("%f,&fl,&f2);

C)scanf(,/%%//,&fl,&f2);D)scanf("%%”,&f1,&f2);

(16)已知ch是字符型變量,下面正確的賦值語句是

A)ch='123';B)ch='\08';C)ch='\xff';D)ch="\";

(17)以下if語句語法正確的是儲

A)if(x>0)B)if(x>0)printf-x)

{x=x+y;printf("%f",x);}elseprintf("%f",-x);

elseprintf-x);

C)if(x>0)D)if(x>0)

{x=x+y;printfx);};{x=x+y;peintf('%f",x)}

elseprintf-x);elseprintf-x);

(18)若W=l,X=2,Y=3,Z=4則條件式:

W<X?W:Y<Z?Y:Z的值是解

A)IB)3C)4D)2

(19)以下程序段Bo

x=-l;

do{x=x*x;}

while(!x);

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

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

(20)邏輯運算符兩側運算對象的數(shù)據類型Bo

A)只能是0或1B)可以是任何類型的數(shù)據

C)只能是整型或字符型數(shù)據D)只能是0或非0正數(shù)

(21)下面程序中有錯誤的行是Co(前面數(shù)字表示行號)

1、main()5、scanf(〃%d〃,&a);

2、{6、

for(i=l;i<3;i++)a[0]=a[0]+a[i],

3、inta[3]={1};7、

printf(〃a[0]=%d\n〃,a[0]);

4、inti;8、}

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

(22)下面的程序段Do

for(t=l;t<=100,t++)

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

if(x<0)continue;

printf("%3d”,t);

A)當x〈0時整個循環(huán)結束B)當x>=0時什么也不輸出

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

(23)以下對一維整型數(shù)組a的正確說明是

A)inta(10)B)intn=10;a[n];

C)intn;D)#defineSIZE10

scanf&n);inta[SIZE];

inta[n];

(24)下面程序的運行結果是Ao

a=l;b=2;c=2;

while(a<b<c){t=a;a=b;b=t;c一;}

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

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

(25)若有說明:inta[3][4];則對數(shù)組元素的非法引用是旦。

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

(26)對以下說明的正確理解是旦。

inta[10]={6,7,8,9,10}

A)將5個初值依此賦給a[l]至a[5]B)將5個初值依此賦給a[0]至a[4]

C)將5個初值依此賦給a[6]至a[10]D)因長度與初值個數(shù)不同,故語

句錯誤

(27)若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為A

A)i*m+jB)j*m+iC)D)i*m+j+l

(28)以下程序段運行的結果是Do

chare=

printf(“驅s”,c);

A)‘a''b'B)abcC)abcD)ab

(29)以下正確的函數(shù)定義形式是Ao

A)doublefun(intx,inty)B)doublefun(intx;inty)

C)doublefun(intx,inty);D)doublefun(intx,inty);

(30)以下不正確的說法是Do

A)實參可以是常量、變量或表達式。B)形參應與其對應的實參類型

一致。

C)實參可以為任意類型。D)形參可以是常量、變量或表達式。

(31)有兩個字符數(shù)組a,b,則以下正確的輸入格式是C。

A)scanf(〃%s%s〃,&a,&b)B)gets(a,b)

C)scanf(〃%s%s〃,a,b)D)gets(〃a〃);gets(〃b〃)

(32)以下程序正確的運行結果是Co

main()

{inta=2,i;

for(i=0;i<3;i++)printf(〃%4d〃,f(a));

)

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);}

A)777B)710130789D)7911

(33)#define能做簡單的替代,用宏替代計算多項式4*x*x+3*x+2之值

的函數(shù)f,正確的宏定義是Co

A)#definef(x)4*x*x+3*x+2B)#definef4*x*x+3*x+2

C)#definef(a)(4*a*a+3*a+2)D)ttdefine(4*a*a+3*a+2)f(a)

(34)當運行以下程序時,從鍵盤輸入:ab<CR>

c<CR>

def<CR>

(<CR>表示回車)則下面程序的運行結果是Do

Sinclude

#defineN6

main()

{chare(N);

inti=0;

for(;i<N;c[i]=getchar(),i++);

for(i=0;i<N;i++)putchar(c[i]);

)

A)abedefB)aC)bD)ab

bcc

cdd

d

e

f

(35)請讀程序:

#defineAD(x)x+x

main()

{intm=l,n=2,k=3;

intsum=AD(m+n)*k;

printf(z,sum=%d/z,sum);}

上面程序的運行結果是Bo

A)sum=9B)sum=10C)sum=12D)sum=18

(36)對下面程序段正確的判斷是:_____C_______

#defineA3

#defineB(a)((A+l)*a)

x=3*(A+B(7));

A)程序錯誤,不許嵌套宏定義。B)x=21

C)x=93D)程序錯誤,宏定義不許有參數(shù)。

(37)執(zhí)行以下程序后,a,b的值為

main()

{inta,b,k=4,m=6,*pl=&k,*p2=&m;

a=pl==&m;

b=(-*pl)/(*p2)+7;

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

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

A)-1B)OC)1D)4

57610

(38)以下程序中調用scanf函數(shù)給變量a輸入數(shù)

值的方法是錯誤的,因為。

main()

{int*p,*q,a,b;

p=&a;

printf(ninputa:");

scanf("%d",*p);

A)*p表示的是變量a的值,而不是變量a的地址。

B)*p表示的是指針變量p的地址。

C)*p表示的是指針變量p的值。

D)*p只能用來說明p是一個指針變量。

(39)以下程序的運行結果是。

#defineMIN(x,y)(x)<(y)?(x):(y)

main()

{inti=10,j=15,k;

k=10*MIN(i,j);

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

A)15B)10C)100D)150

(40)以下正確的函數(shù)形式是

B)doublefun(intx,inty)B)fun(intx,y)

{z=x+y;returnz;}{intz;returnz;}

C)fun(x,y)D)doublefun(intx,inty)

{intx,y;doublez;}{doublez;z=x+y;returnz;)

(41)以下不正確的說法是。

A)在不同函數(shù)中可以使用相同名字的變量。

B)形式參數(shù)是局部變量。

C)在函數(shù)內的復合語句中定義的變量在本函數(shù)

范圍內有效。

D)在函數(shù)內定義的變量只在本函數(shù)范圍內有效。

(42)C語言提供的預處理功能包括條件編譯,其

基本形式為:

#xxx標識符

程序段1

#else

程序段2

ttendif

這里XXX可以是。

A)define或include.B)ifdef或ifndef或if

C)ifdef或ifndef或defineD)ifdef或include

(43)以下程序的正確運行結果是。

ttinclude

main()

{intk=4,m=l,p;

p=func(k,m);printf(K%d,H,p);

p=func(k,m);printf("%d\n'f,p);)

func(inta,intb)

{staticintm=O,i=2;

i+=m+l;

m=i+a+b;return(m);}

A)8,16B)8,17C)8,20D)8,8

(44)已有定義intk=2;int*pl,*p2,且pl和p2

均已指向變量k,下面不能正確執(zhí)行的賦值語句

是。

A)k=*pl+*p2;B)pl=p2;

C)p2=k;D)k=*pl*(*p2);

(45)若有說明int*p,m=5,n;以下正確的程序段

7^1o

A)p=&n;B)p=&n;

Scanf("%d",&p);Scanf("%d",*p);

C)Scanf("%d",&n)D)p=&n;

*p=n;*p=m;

(46)以下scanf函數(shù)調用語句中,對結構體成員

的不正確引用為。

structpupil

{charname[20];

intage;

intsex;

}pup[5],*p;

P二pup;

A)scanf("%s'pup[0].name);B)scanf("%d;&p

up[0].age);

C)scanf("%d",p->sex);D)scanf("%d",&(p->ag

e));

(47)若有定義:inta[3][4];則對a數(shù)組的第i

行第j列(假設i,j已正確說明并賦

值)元素值的正確引用為。

A)*(*(a+i)+j)B)(a+j)[j]

C)*(a+i+j)D)*(a+i)+j

(48)若已定義charS[10];則在下面表達式中不

表示S[l]的地址的是。

A)S+1B)&S[1]C)&S[0]+1D)S++

(49)若有定義:inta[2][3]則對a數(shù)值的第i行,

第j列元素地址的正確引用為。

A)*(a[i]+j)B)a[i]+jC)*(a+j)D)(a+i)

(50)若有以下定義,且0〈二i〈6,則正確的賦值語

句是。

ints[4][6],t[6][4],(*p)[6];

A)p=t;B)p=s[i];C)p=s;D)p=t[i];

(51)以下程序的運行結果是。

#includen"

main()

{union{longa;

intb;

chare;

}m;

printf("%d'n”,sizeof(m));}

A)4B)2C)6D)8

(52)當順利執(zhí)行了文件,關閉操作時,fclose函

數(shù)的返回值是。

A)OB)TURNC)-1D)1

(53)已知學生記錄描述為

structstudent

{intno;

charname[20];

charsex;

struct

{intyear;

intmonth;

intday;}birth;

)s;

設變量s中的“生日”應是“1984年6月6日”,

下列對“生日”的正確賦值方式是。

A)year=1984;B)birth.year=1984;

month=6;birth.month=6;

day=6;birth.day=6;

C)s.year=1984;D)s.birth.year=1984;

s.month=6;s.birth.month=6;

s.day=6;s.birth.day=6;

(54)表達式a<b||?c&d的運算順序是.;

(55)設有以下語句:

charx=3,y=6,z;

z=x^y<<2;

則z的二進制值是.

A)00010100B)00011000

C)00011100D)00011011

(56)已知函數(shù)的調用形

式:fread(buffer,size,count,fp),其中buffer

代表的是。

A)一個整型變量,代表要讀入的數(shù)據項總數(shù).

B)一個文件指針,指向要讀的文件.

0一個存儲器,存放要讀的數(shù)據項.

D)一個指針,指向要讀入數(shù)據的存放地址

(57)若有函數(shù)max(a,b),并且已使函數(shù)指針變量

P指向函數(shù)max,當調用該函數(shù)時,正確的調用方

法是。

A)(*p)max(a,b);B)*pmax(a,b);

C)*p(a,b)D)(*p)(a,b)

(58)在16位IBM-PC機上使用C語言,若有如下

定義:

uniondata

{inti;

charch;

doublef;

}b;

則其共用體變量b占用內存字節(jié)數(shù)是。

A)IB)2C)8D)4

(59)若有以下程序段

intx=l,y=2;

x=xz'y;

y=y^x;

X=xy;

則執(zhí)行以上語句后x和y的值分別是。

A)x=lB)x=2C)x=2D)x=l

y=2y=2y=ly=l

(60)若要用fopen函數(shù)打開一個新的二進制文

件,該文件要既能讀也能寫,則文件方式字符串

應是。

A)"w+"B)"ab+"C)"wb+"D)"ab"

二.填空(每空2分,共40分):請在口處添上

正確答案。

⑴條件"2<x<3或x<-10"的C語言表達式是]].

⑵以下程序的功能是判斷輸入的年份是不是閏

年,請在口內添入正確的內容.

main()

{inty,f;

scanf("%d",&y);

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

elseif([2])f=l;

else[3];

if(f)printf("%disn,y);

elseprintf("%disnot",y);

Printf(naleapyear\n");

(3)以下程序是用梯形法求sin(x)*cos(x)的定

積分,求定積分的公式為:

其中xi=a+ih,h=(b-a)/n

設"0,b二為積分上下限,積分區(qū)間分割數(shù)n=100,

#include<stdio.h>

#include<math.h>

main()

{inti,n;doubleh,s,a,b;

printf(ninputa,b:");

scanf(H%lf%lf\[4]);

n=100;h=[5]

S=*(sin(a)*cos(a)+sin(b)*cos(b));

for(i=l;i<=n-l;i++)S+=[6];

S*=h;

Printf(nS=%lf\n\S);}

(4)下面程序的運行結果是[7])

Winclude""

main()

{inti=l;

while(i<=15)

if(++i%3!=2)continue;

elseprintf("%d",i);

printf("\n");}

⑸下面程序段運行的結果是[8]。

i=l;s=3;

do{s+=i++;

if(s%7==0)continue;

else++i;

}while(s<15);

printf("%d”,i);

以下程序是矩陣a,b的乘積:

I

c

g

oO

vH

—8(

二+

L

二+

N一

6(

—〕(((

—+西

z〔+++

7g±〉

)+++

〕二

A)?I選

AK西-

〉{O

zZs〉*L

〕7?

=q二gX

〔0二s

g。6

N。=O

0〕4〕2

P-)N

uq=)Ve

A)』O

U」

Q』0+

IoJ

+-U>UOo上S

-lua)IIJj)

printf(%6dn,c[i][j]);

[11]))

⑹設數(shù)組a包括10個整型元素。下面程序的功

能是求出a中各相鄰兩個元素的和,并將這些和

存放在數(shù)組b中,按每行三個元素的形式輸出。

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

for([12];i<10;i++)

[13]

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

{printf("%3dn,b[i]);

if([14]=0)printf("\n");

)

⑺以下程序的功能是根據公式求e的近似值,

精度要求為10-6.請?zhí)羁?

WincludeO

main()

{inti;doublee,new;

[15]new二

for(i=l;[16]i++)

{new/=(double)i;e+=new;}

printf(ne=%f\n",e);}

溫馨提示

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

評論

0/150

提交評論