C語言各章節(jié)復(fù)習(xí)題(帶答案)_第1頁
C語言各章節(jié)復(fù)習(xí)題(帶答案)_第2頁
C語言各章節(jié)復(fù)習(xí)題(帶答案)_第3頁
C語言各章節(jié)復(fù)習(xí)題(帶答案)_第4頁
C語言各章節(jié)復(fù)習(xí)題(帶答案)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一、C語言概述練習(xí)題

選擇

I.一個(gè)c程序的執(zhí)行是從。

A)本程序的main函數(shù)開始,到main函數(shù)結(jié)束

B)本程序文件的第一個(gè)函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束

C)本程序文件的第一個(gè)函數(shù)開始,到本程序main函數(shù)結(jié)束

D)本程序的main函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束

2.以下敘述不正確的是o

A)一個(gè)C源程序必須包含一個(gè)main函數(shù)B)一個(gè)C源程序可由一個(gè)

或多個(gè)函數(shù)組成

0C程序的基本組成單位是函數(shù)D)在C程序中,注釋說明只能位于

一條語句的后面

3.以下敘述正確的是o

A)在對(duì)一個(gè)C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤

B)在C程序中,main函數(shù)必須位于程序的最前面

0C語言本身沒有輸入輸出語句D)C程序的每行中只能寫

一條語句

4.一個(gè)C語言程序是由。

A)一個(gè)主程序和若干個(gè)子程序組成B)函數(shù)組成C)若干過程組

成D)若干子程序組成

5.計(jì)算機(jī)高級(jí)語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述

中正確的是0

A)C語言程序僅可以編譯執(zhí)行B)C語言程序僅可以解釋執(zhí)行

C)C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D)以上說法都不對(duì)

6.以下敘述中錯(cuò)誤的是o

A)C語言的可執(zhí)行程序是由一系列機(jī)器指令構(gòu)成的B)用C語言編寫的

源程序不能直接在計(jì)算機(jī)上運(yùn)行

C)通過編譯得到的二進(jìn)制目標(biāo)程序需要連接才可以運(yùn)行

D)在沒有安裝C語言集成開發(fā)環(huán)境的機(jī)器上不能運(yùn)行C源程序生成的.exe

文件

7.以下敘述正確的是o

A)C語言程序是由過程和函數(shù)組成的B)C語言函數(shù)可以嵌套調(diào)用,例

如:fun(fun(x))

0C語言函數(shù)不可以單獨(dú)編譯D)C語言中除了main函數(shù),其他函數(shù)不可

作為單獨(dú)文件形式存在

二、數(shù)據(jù)類型、運(yùn)算符與表達(dá)式

選擇.

1.若x、i、j、k都是int型變量,則計(jì)算下面表達(dá)式后,x的值為

x=(i=4,j=16,k=32)A)4B)16C)32D)

52

2.下列四組選項(xiàng)中,均不是C語言關(guān)鍵字的選項(xiàng)是

A)defineIFtypeB)getccharprintfC)includecase

scanfD)whilegopow

3.下列四組選項(xiàng)中,均是不合法的用戶標(biāo)識(shí)符的選項(xiàng)是。

A)WP0doB)b-agotointC)floatlaO_AD)

-123abcTEMP

4.下列四組選項(xiàng)中,均是合法轉(zhuǎn)義字符的選項(xiàng)是

A)'<\\,MB)、<\017,,\”'

C)''018''\f',xab'D),\\0',xlf'

5.下面不正確的字符常量是

A)"c"B)'C)''D)K

6.以下敘述不正確的是o

A)在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低B)在C程序中,

MAX和max是兩個(gè)不同的變量

C)若a和b類型相同,在計(jì)算了賦值表達(dá)式a=b后,b中的值將放入a中,

而b中的值不變

D)當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量

只能輸入實(shí)型數(shù)值

7.以下敘述正確的是o

A)在C程序中,每行只能寫一條語句

B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整

型數(shù)

0在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符(字符型也可以)

D)在C程序中,無論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤地表示

8.已知字母A的ASCII碼為十進(jìn)制數(shù)65,且c2為字符型,則執(zhí)行語句c2

='A'+'6'-'3'后,c2中的值為o

A)DB)68C)不確定的值D)C

9.sizeof(float)是。

A)一個(gè)雙精度型表達(dá)式B)一個(gè)整型表達(dá)式C)一種函數(shù)表達(dá)式

D)一個(gè)不合法的表達(dá)式

10.設(shè)C語言中,一個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則unsignedint型

數(shù)據(jù)的取值范圍為o

A)0~255B)0-32767C)0-65535D)0?

2147483647

11.設(shè)有說明:charw;intx;floaty;doublez;則表達(dá)式w*x+z-y值

的數(shù)據(jù)類型為。

A)floatB)charC)intD)double

12.設(shè)以下變量均為int類型,則值不等于7的表達(dá)式是o

A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)C)(x=6,x+1,y=6,x+y)

D)(y=6,y+1,x=y,x+1)

13.下列變量定義中合法的是。

A)short_a=015;B)doubleb=e2.5;C)longdo=0xfdaL;D)float

2_and=le-3;

14.有以下程序

ftinclude<stdio.h>

main()

{intx=011;

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

}程序運(yùn)行后的輸出結(jié)果是O

A)12B)llC)10D)9

填空

1.若有以下定義,intm=5,y=2;則計(jì)算表達(dá)式y(tǒng)+=y-=m*=y后的y值是【1】。

-16

2.在C語言中,一個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則int型數(shù)據(jù)的取

值范圍為[2]0-32768?32767

3.若s是int型變量,且s=6,則下面表達(dá)式s%2+(s+l)%2的值為【3】。

1

4.若a是int型變量,則下面表達(dá)式(a=4*5,a*2),a+6的值為【4】。26

5.若x和a均是int型變量,則計(jì)算表達(dá)式(1)后的x值為【5],計(jì)算

表達(dá)式(2)后的x值為【6】。4

12

(1)x=(a=4,6*2)(2)x=a=4,6*2

6.若a是int型變量,則計(jì)算下面表達(dá)式a=25/3%3后a的值為【7】。2

7.若x和n均是int型變量,且x和n的初值均為5,則計(jì)算表達(dá)式后x

的值為[8],n的值為[9]o106

x+=n++〃若改為x+=++n則計(jì)算后X為,n為116

8.若有定義:charc=、01(T;則變量c中包含的字符個(gè)數(shù)為[10]01

9.若有定義:intx=3,y=2;floata=2.5,b=3.5;則下面表達(dá)式

(x+y)%2+(int)a/(int)b的值為[11]01

10.已知字母a的ASCH碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)

式ch='a'+'8'-'3'的值為【12】。f

三、簡單的C程序設(shè)計(jì)

選擇

1.putchar函數(shù)可以向終端輸出一個(gè)。

A)整型變量表達(dá)式B)實(shí)型變量值C)字符串D)字符

或字符型變量值

2.printf函數(shù)中用到格式符%5s,其中數(shù)字5表示輸出的字符串占用5歹I」。

如果字符串長度大于5,則輸出按方式B;如果字符串長度小

于5,則輸出按方式C。

A)從左起輸出該字符串,右補(bǔ)空格B)按原字符長從左向右全部輸出

C)右對(duì)齊輸出該字符串,左補(bǔ)空格D)輸出錯(cuò)誤信息

3.閱讀以下程序,當(dāng)輸入數(shù)據(jù)的形式為:25,13,10<CR>(注:<CR>表示

回車),則正確的輸出結(jié)果為。

main()

{intx,y,z;

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

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

}A)x+y+z=48B)x+y+z=35C)x+z=35D)不

確定值

4.根據(jù)下面的程序及數(shù)據(jù)的輸入和輸出形式,程序中輸入語句的正確形式

應(yīng)該為。

main()

{charchi,ch2,ch3;

輸入語句

printf("%c%%c”,chi,ch2,ch3);

}輸出形式:ABC輸入形

式:ABC

A)scanf(“%c%c%c",&chl,&ch2,&ch3);B)

scanf("%c,%c,%c”,&chl,&ch2,&ch3);

C)scanf(“祝%c%cw,&chl,&ch2,&ch3);D)

scanf(<<%c%cn,&chl,&ch2,&ch3);

5.已知ch是字符型變量,下面不正確的賦值語句是o

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

ch=5+9;

6.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是o

A)一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成

B)結(jié)構(gòu)化程序使用goto語句會(huì)很便捷

C)在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

D)由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題

7.有以下程序

ttinclude<stdio.h>

main()

{intal,a2;charcl,c2;

scanf("%d%c%d%c",&al,&cl,&a2,&c2);

printf(u%d,%c,%d,%cv,al,cl,a2,c2);

}若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,

c2的值為字符b,程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以

下_代表空格,<CR>代表回車)

A)12a34b<CR>B)12_a_34_b<CR>C)12,a,34,b<CR>

D)12_a34_b〈CR>

填空

1.以下的輸出結(jié)果是[1]oc:decn20,oct=170,hex=78,ASCII=x

main()

{charc=,x';

printf(<<c:dec=%d,oct=%o,hex=%x,ASCH=%c\n”,c,c,c,c);

}

2.以下的輸出結(jié)果是[2】o

main()

{intx=l,y=2;

printf("x=%dy=%d*sum*=%d\n”,x,y,x+y);

printf('TOSquaredis:%d\n”,10*10);}

x=ly=2*sum*=3

10Squaredis:100

3.假設(shè)變量a和b均為整型,以下語句可以不借助任何變量把a(bǔ)、b中的

值進(jìn)行交換。請(qǐng)?zhí)羁铡?/p>

a+=[3];b=a-[4];a~=[5];bbb

4.若x為int型變量,則執(zhí)行以下語句x=7;x+=x-=x+x;后的x值為【6】。

-14

5.有一輸入語句scanf("%d”,k);則不能使float類型變量k得到正確

數(shù)值的原因是[7]和【8】o格式控制符應(yīng)為%£,;變量k前缺少&

四、邏輯運(yùn)算與判斷選取控制

選擇

1.邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的數(shù)據(jù)類型0

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

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

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

A)'A'<=ch<='Z'B)(ch>='A')&(ch<='Z')

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

3.若希望當(dāng)A的值為奇數(shù)時(shí),表達(dá)式的值為“真”,A的值為偶數(shù)時(shí),表

達(dá)式的值為“假”。則以下不能滿足要求的表達(dá)式是0

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

4.設(shè)有:inta=l,b=2,c=3,d=4,m=2,n=2;執(zhí)行(m=a>b)&&(n=c〉d)后n的值

為o

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

5.以下程序的運(yùn)行結(jié)果是o

main()

{inta,b,d=241;

a=d/100%9;

b=(-l)&&(-l);

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

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

2,0

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

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

A)x=10,y=20,z=30B)x=20,y=30,z=30C)x=20,y=30,z=10

D)x=20,y=30,z=20

7.以下程序的運(yùn)行結(jié)果是o

main()

{intm=5;

if(m++>5)

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

else;

printf("%d\n”,m-);

}A)4B)5C)6

D)7

8.若運(yùn)行時(shí)給變量x輸入12,則以下程序的運(yùn)行結(jié)果是。

main()

{intx,y;

scanf("%d",&x);

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

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

A)4B)3C)2D)

0

9.if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述

中正確的是0

A)必須是邏輯值B)必須是整數(shù)值C)必須是正數(shù)D)可以是任意合法的

數(shù)值

10.有以下程序

ttinclude<stdio.h>

main()

{inta=l,b=0;

if(!a)b++;

elseif(a==0)if(a)b+=2;

elseb+=3;

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

}程序運(yùn)行后的輸出結(jié)果是oA)0B)1C)2

D)3

11.有以下程序

ttinclude<stdio.h>

main()

{intc=0,k;

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

switch(k)

{default:c+=k;

case2:c++;break;

case4:c+=2;break;

)

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

}程序運(yùn)行后的輸出結(jié)果是oA)3B)5

C)7D)9

五、循環(huán)控制

選擇1.設(shè)有程序段intk=10;while(k=0)k=k-l;這下面描述中正

確的是?

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

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

2.語句while(!E);中的表達(dá)式!E等價(jià)于.a)E==0b)E!=l

c)E!=0d)E==l

3.下面程序段的運(yùn)行結(jié)果是c.循環(huán)次數(shù)為b.

intn=0;while(n++<=2);printf("%d",n);a)2

b)3c)4d)有語法錯(cuò)

//若改為while(++n<=2);printf("%d",n);結(jié)果又如何?

4.下面程序的運(yùn)行結(jié)果是.

#include<stdio.h>

main()

{intnum=0;

while(num<=2)

{num++;

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

)

)

a)1b)1c)1d)1

222

33

4

5.以下程序段.

x=-l;do{x=x*x;}while(!x);

a)是死循環(huán)b)循環(huán)執(zhí)行二次c)循環(huán)執(zhí)行一次d)有語法

錯(cuò)誤

6.若有如下語句

intx=3;

do{printf("%d\n",x~=2);}while(!(一x));

則上面程序段.a)輸出的是1b)輸出的是1和-2c)輸

出的是3和0d)是死循環(huán)

7.下面程序的運(yùn)行結(jié)果是.

#include<stdio.h>

main()

{inty=10;

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

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

}a)-lb)lc)8d)0

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

for(i=2;i==0;)printfi-);

a)無限次b)0次c)l次d)2次

9.執(zhí)行語句for(i=l;i++<4;);后變量i的值是.

a)3b)4c)5d)不定

10.以下正確的描述是.

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語句

11.有以下程序

main()

{charb,c;inti;

b=,a;c=,A';

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

{if(i%2)putchar(i+b);

elseputchar(i+c);

}

printf('\n");

}程序運(yùn)行后的輸出結(jié)果是.

A)ABCDEFB)AbCdEfC)aBcDeFD)abcdef

(二)、填空題

1.下面程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循

環(huán)。請(qǐng)?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!='\n')

(

if(c>='O'&&c<='9')n++;

c=getchar();

}

2.下面程序的功能是用〃輾轉(zhuǎn)相除法〃求兩個(gè)正整數(shù)的最大公約數(shù)。請(qǐng)?zhí)羁铡?/p>

ftinclude<stdio.h>

main()

(intr,m,n;

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

if(m<n){r=m;m=n;n=r;}

r=m%n;

while(r){m=n;n=r;r=m%n;}

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

)

3.下面程序的運(yùn)行結(jié)果是s=254.

#include<stdio.h>

main()

{inta,s,n,count;

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

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

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

)

4.下面程序段的運(yùn)行結(jié)果是一a=-5.

i=l;a=0;s=l;

do{a=a+s*i;s=-s;i++;}while(i<=10);

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

5.下面程序段的運(yùn)行結(jié)果是8

i=l;s=3;

do{s+=i++;

if(s%7-0)continue;

else++i;

}while(s<15);

printf("%d”,i);

六、數(shù)組

1.以下為一維整型數(shù)組a的正確說明是.

a)inta(10);b)intn=10,a[n];

c)intn;d)#defineSIZE10

scanf&n);inta[SIZE];

inta[n];

2.以下對(duì)二維數(shù)組a的正確說明是.

a)inta[3][];b)floata(3,4);c)doublea[l][4]

d)floata(3)(4);

3.若二維數(shù)組a有m列,則計(jì)算任一元素在數(shù)組中位置的公式為

.(假設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上。)

a)i*m+jb)j*m+ic)i*m+jTd)i*m+j+]

4.若二維數(shù)組a有m歹則在前的元素個(gè)數(shù)為.

a)j*m+ib)i*m+jc)d)i*m+j+l

5.若有以下程序段:

inta[]={4,0,2,3,1},i,j,t;

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

{t=a[i];j=i-l;

while(j>=0&&t>a[j])

{a[j+l]=a[j];j—;}

a[j+l]=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)行選擇排序(降序)

6.有兩個(gè)字符數(shù)組a、b,則以下正確的輸入語句是.

a)gets(a,b);b)scanf("%s%s”,a,b);c)scanf&a,&b);

d)gets("a"),gets(〃b〃);

7.下面程序段的運(yùn)行結(jié)果是.

chara[7]="abcdef”;

charb[4]="ABC";

strcpy(a,b);

printfa[5]);a)空格b)\0c)ed)f

8.判斷字符串si是否大于字符串s2,應(yīng)當(dāng)使用.

a)if(sl>s2)b)if(strcmp(si,s2))c)if(strcmp(s2,si)>0)

d)if(strcmp(sl,s2)>0)

9.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞

之間用空格分隔,請(qǐng)選擇填空。

ttinclude<stdio.h>

main()

(

chars[80],cl,c2=,;

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{cl=s[i];

if(i==0)c2=>';

elsec2=s[i-1];

if(__)num++;

i++;

)

printf("Thereare%dwords.\n",num);

}

a)cl==,'&&c2==''b)cl!=''&&c2==''c)cl==''&&c2!='

d)cl!=''&&c2!=''

10.下面程序的運(yùn)行結(jié)果是.

ttinclude<stdio.h>

main()

{charstr[]="SSSWLIA”,c;

intk;

for(k=2;(c=str[k])!='\0';k++)

{switch(c)

{case'r:++k;break;

case'L':continue;

default:putchar(c);continue;

)

putchar('*,);

}

}

a)SSW*b)SW*c)SW*Ad)SW

填空1.若有定義:doublex[3][5];則x數(shù)組中行下標(biāo)的下限為

0,列下標(biāo)的上限為4

2.下面程序以每行4個(gè)數(shù)據(jù)的形式輸出a數(shù)組,請(qǐng)?zhí)羁铡?/p>

ttdefineN20

main()

{inta[N],i;

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

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

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

{if(i%4==0)printf("\n");

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

)

printf('\n");

)

3.下面程序可求出矩陣a的主對(duì)角線上的元素之和,請(qǐng)?zhí)羁铡?/p>

main()

{inta[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(i==j_)sum=sum+a[i][i];

printf("sum=%d\n”,sum);

)

4.當(dāng)從鍵盤輸入18并回車后,下面程序的運(yùn)行結(jié)果是_10010

main()

{intx,y,i,a[8],j,u,v;

scanf("%d",&x);

y=x;i=0;

do

{u=y/2;

a[i]=y%2;

i++;y=u;

}while(y>=l);

for(j=i-l;j>=0;j—)

printfa[j]);

)

5.下面程序用插入法對(duì)數(shù)組a進(jìn)行降序排序。請(qǐng)?zhí)羁铡?/p>

main()

{inta[5]={4,7,2,5,1);

inti,j,m;

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

{m=a[i];

.1=i-1;

while(j>=0&&m>a[j])

{a[j+l]=a[j];

J-;

)

a[j+l]=m;

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

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

printf(〃\n〃);

6.下面程序的功能是在三個(gè)字符串中找出最小的,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

main()

{chars[20],str[3][20];

inti;

for(i=0;i<3;i++)gets(str[i]);

strcpy(s,str[0]);

if(strcmp(s,str[1])<0)strcpy(s,str[1]);

if(strcmp(str[2],s)<0)strcpy(s,str[2]);

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

7.下面程序的運(yùn)行結(jié)果是#&*&%.

#include<stdio.h>

main()

{chars[]="ABCCDA”;

intk;

charc;

for(k=l;(c=s[k])!='\0';k++)

{switch(c)

{case'A':putchar('%');continue;

case'B':++k;break;

default:putchar('*');

case'C':putchar('&');continue;

putchar('#');

七、函數(shù)

選擇

1.以下正確的說法是.建立函數(shù)的目的之一是

a)提高程序的執(zhí)行效率b)提高程序的可讀性c)減少程序的篇幅d)

減少程序文件所占內(nèi)存

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

a)doublefun(intx,inty)b)doublefun(intx;inty)c)double

fun(intx,inty);d)doublefun(intx,y);

3.C語言規(guī)定,簡單變量做實(shí)參時(shí),它和對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式為

A)地址傳遞B)單向值傳遞C)由實(shí)參傳給形參,再由形參傳回給實(shí)參

D)由用戶指定傳遞方式

4.C語言允許函數(shù)值類型缺省定義,此時(shí)該函數(shù)值隱含的類型是.

a)floatb)intc)longd)double

5.已有以下數(shù)組定義和f函數(shù)調(diào)用語句,則在f函數(shù)的說明中,對(duì)形參數(shù)

組array的錯(cuò)誤定義方式為.

inta[3][4];f(a);

a)f(intarray[][6])b)f(intarray[3][])c)f(intarray[][4])

d)f(intarray[2][5])

6.以下程序的正確運(yùn)行結(jié)果是.

#include<stdio.h>

voidnum()

{externintx,y;

inta=15,b=10;

x=a-b;

y=a+b;

}

intx,y;

main()

{inta=7,b=5;

x=a+b;

y=a-b;

num();

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

}

a)12,2b)不確定c)5,25d)1,12

有以下程序:

ttinclude<stdio.h>

intf()

{staticintx=l;

x+=l;returnx;

)

main()

{inti,s=l;

for(i=l;i<=5;i++)s+=fun();

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

}程序運(yùn)行后的輸出結(jié)果是A)llB)21C)6

D)120

填空1.以下程序的運(yùn)行結(jié)果是maxis2

#include<stdio.h>

intmax(int,int);

main()

{inta=l,b=2,c;

c=max(a,b);

printf(z,maxis%d'n”,c);

)

intmax(intx,inty)

{intz;

z=(x>y)?x:y;

return(z);

}

2.函數(shù)gongyu的作用是求整數(shù)numl和num2的最大公約數(shù),并返回該值。

請(qǐng)?zhí)羁铡?/p>

gongyu(intnuml,intnum2)

{inttemp,a,b;

if(numl(1)num2)

{temp=numl;numl=num2;num2=temp;}

a=numl;b=num2;

while(!b)

{temp=a%b;a=b;b=temp;}

return(a);

3.以下程序的運(yùn)行結(jié)果是—A+B=9.

#include<stdio.h>

inta=5;intb=7;

intplus(int,int);

voidmain()

{inta=4,b=5,c;

c=plus(a,b);

printf("A+B=%d\n”,c);

)

intplus(intx,inty)

{intz;

z=x+y;

return(z);

)

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

main()X=1

y=l

{inexO;incy();incx();incy();incx()X=1incy();

y=2

}X=1

y=3

incx()

{intx=0;

printf(/,x=%d\t,z,++x);

)

incy()

{staticinty=0;

printf(〃\ny=%d\n〃,++y);

八、編譯預(yù)處理

選擇

1.以下敘述中正確的是.

a)在程序的一行上可以出現(xiàn)多個(gè)有效的預(yù)處理命令行

b)使用帶參的宏時(shí),參數(shù)的類型應(yīng)與宏定義時(shí)的一致

c)宏替換不占用運(yùn)行時(shí)間,只占用編譯時(shí)間

d)在以下定義中CR是稱為“宏名”的標(biāo)識(shí)符

ttdefineCR045

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

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

main()

{inti=10,j=15,k;

k=10*MIN(i,j);

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

}a)10b)15c)100d)150

3.若有宏定義如下:

ttdefineX5

#defineYX+l

#defineZY*X/2

則執(zhí)行以下printf語句后,輸出結(jié)果是.

inta;a=Y;

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

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

a)7b)12c)12d)7

6655

4.請(qǐng)讀程序:

#include<stdio.h>

ttdefineMUL(x,y)(x)*y

main()

{

inta=3,b=4,c;

c=MUL(a++,b++);

printf(z,%d\n/z,c);

)

上面程序的輸出結(jié)果是.

a)12b)15c)20d)16

5.有以下程序

ttinclude<stdio.h>

#definef(x)x*x*x

main()

{inta=3,s,t;

s=f(a+1);t=f((a+1));

printf("%d,%d\n”,s,t);

}程序運(yùn)行后的輸出結(jié)果是.

A)10,64B)10,10C)64,10D)64,64

九、指針

一、選擇題

1.變量的指針,其含義是指該變量的.a)值b)地址c)

名d)一個(gè)標(biāo)志

2.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項(xiàng)是—

a)a,point,*&ab)&*a,&a,*point

c)*&point,*point,&ad)&a,&*point,point

3.若有說明;int*p,m=5,n;以下正確的程序段的是.

a)p=&n;b)p=&n;c)scanf&n);

d)p=&n;

scanf("%d",&p);scanf("%d",*p);*p=n;

*p=m;

4.下面程序段的運(yùn)行結(jié)果是.

char*s=〃abcde”;s+=2;printfs);

a)cdeb)字符'c'c)字符'c'的地址d)無確定的輸出結(jié)果

5.設(shè)pl和p2是指向同一個(gè)字符串的指針變量,c為字符變量,則以下不

能正確執(zhí)行的賦值語句是.

a)c=*pl+*p2;b)p2=cc)pl=p2d)c=*pl*(*p2);

6.以下正確的程序段是.

a)charstr[20];b)char*p;c)charstr[20];

d)charstr[20],*p=str;

scanf("%s”,&str);scanfp);scanf&str[2]);

scanfp[2]);

7.若有說明語句chara[]=,,Itismine";char*p="Itismine";則

以下不正確的敘述是

a)a+l表示的是字符t的地址b)p指向另外的字符串時(shí),

字符串的長度不受限制

c)p變量中存放的地址值可以改變d)a中只能存放10個(gè)字符

8.下面程序的運(yùn)行結(jié)果是.

#include<stdio.h>

#include<string.h>

main()

(

char*sl="AbDeG”;

char*s2="AbdEg”;

sl+=2;s2+=2;

printf(繪d\n”,strcmp(sl,s2));

}a)正數(shù)b)負(fù)數(shù)c)零d)不確定的值

9.下面程序的運(yùn)行結(jié)果是.

ttinclude<stdio.h>

#include<string.h>

fun(char*w,intn)

{chart,*sl,*s2;

sl=w;s2=w+n-l;

while(sl<s2){t=*sl++;*sl=*s2一;*s2=t;}

}

main()

{char*p;

p=〃1234567〃;

fun(p,strlen(p));

puts(p);

a)7654321b)1714171c)1711717d)7177171

10.若有以下定義,則對(duì)a數(shù)組元素的正確引用是.

inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)

d)*(a+2)

11.若有定義:inta[2][3],則對(duì)a數(shù)組的第i行j列元素地址的正確引用

為.

a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j

12.若有以下定義,則p+5表示.

inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)

元素a[6]的地址d)元素a[6]的值

二、填空題

1.以下程序的功能是:通過指針操作,找出三個(gè)整數(shù)中的最小值并輸出。

請(qǐng)?zhí)羁铡?/p>

#include"stdio.h"

main()

{int*a,*b,*c,num,x,y,z;

a=&x;b=&y;c=&z;

printf("輸入3個(gè)整數(shù):");

scanfa,b,c);

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

num=*a;

if(*a〉*b)___num=*b;

if(num>*c)num=*c;

printf(“輸出最小整數(shù):%d\n”,num);

2.下面程序段的運(yùn)行結(jié)果是hELLO—.

chars[80],*sp="HELL0!”;

sp=strcpy(s,sp);

s[0]-h';

puts(sp);

3.下面程序段的運(yùn)行結(jié)果是ef.

charstr[]="abc\0def\0ghi",*p=str;

printfp+5);

4.下面程序的功能是將兩個(gè)字符串si和s2連接起來。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{charsi[80],s2[80];

gets(sl);gets(s2);

conj(si,s2);

puts(si);

)

conj(char*pl,char*p2)

{char*p=pl;

while(*pl)pl++;

while(*p2){*p1=*p2;pl++;p2++;}

*pl='\0';

)

5.若有定義:inta[]={2,4,6,8,10,12},*p=a;則*(p+l)的值是,

*(a+5)的值是12.

6.若有以下定義:inta[2][3]={2,4,6,8,10,12};則a[l][0]的值是」—.

*

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論