吉林大學(xué)C語言習(xí)題集_第1頁
吉林大學(xué)C語言習(xí)題集_第2頁
吉林大學(xué)C語言習(xí)題集_第3頁
吉林大學(xué)C語言習(xí)題集_第4頁
吉林大學(xué)C語言習(xí)題集_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

c語言程序被計

習(xí)題

李玲張海蓉黃玉蘭孫大洋趙曉京溫泉厲茜

吉林大學(xué)通信工程學(xué)院

第6章

練習(xí)6-1答案

一、選擇題

1.函數(shù)abc的定義為:

voidabc()

那么函數(shù)定義中void的含義是(A)。

A.執(zhí)行函數(shù)abc后,函數(shù)沒有返回值B.執(zhí)行函數(shù)abc后,函數(shù)不再返回

C.執(zhí)行函數(shù)abc后,可以返回任意類型D.以上三個答案全是錯誤的

2.:intp();,p是(C)。

A.int型委量

B.函數(shù)p的調(diào)用

C.一個函數(shù)聲明,該函數(shù)的返回值是int型的值

D.強制類型轉(zhuǎn)換表達式中的變量

3.以下正確的函數(shù)形式是(D)。

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

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

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

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

4.以下說法正確的選項是(C)。”

A.定義函數(shù)時,形參的類型說明可以放在函數(shù)體內(nèi)

B.return后邊的值不能為表達式

C.如果函數(shù)值的類型與返回值表達式的類型不一致,以函數(shù)值類型為準

D.如果形參與實參的類型不一致,以實參類型為準

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

A.float型B.ini型C.long型D.double型

6.下面函數(shù)調(diào)用語句含有實參的個數(shù)為(B)。

func((expl,exp2),(exp3,exp4,exp5));

A.1B.2C.4D.5

7.以下程序的功能是計算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,請選擇填空。

#include<stdio.h>

#include<math.h>

floatf(float,float);

main()

{floatx,y,z,sum;

scanf(H%f%f%f,&x,&y,&z);

sum=f(①B)+f(②C);(注:或者選擇sum=f(①C)+f(②B))

printf(,,sum=%f\nH,sum);

)

floatf(floata,floatb)

{floatvalue;

value=a/b;

return(value);

)

①A.x-y,x+yB.x+y,x-yC.z-y,z-yD.z-y,z+y

②A.x-y,x+yB.x+y,x-yC.z+y,z-yD.z-y,z+y

二、填空題

8.以下程序的功能是根據(jù)輸入的”y”(”Y“)與”n”("N”),在屏幕上分別顯示出叮hisis

YES.“與“ThisisNO.%請?zhí)羁?,①?break;)、②是(getchar()或getch()或

getche())o

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case*y':

case'Y*:printf(n\nThisisYESAn");①;

case'n':

caseN:printf("\nThisisNO.\nn);

)

)

main()

{charch;

printf("\nEnterachar'y;¥or'n'JNT');

ch=②;

printf("ch:%c”,ch);

YesNo(ch);

)

9.下面函數(shù)pi的功能是:根據(jù)以下公式,返回滿足精度(0.0005)要求的乃的值,請

填空,①是(t=n=l,s=O)、②是(s*2)。

乃/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+….

#include<conio.h>

#include<math.h>

#include<stdio.h>

doublepi(doubleeps)

{doubles,t;intn;

for(①;t>eps;n++)

{s+=t;

t=n*t/(2*n+l);

)

return(②);

main()

{doublex;

printf("\nPleaseenteraprecision:'1);

scanf(n%lf\&x);

printf(M\neps=%1f,冗=%1f,x,pi(x));

)

三、讀程序,寫結(jié)果

10.以下程序的運行結(jié)果是(5)。

#include<stdio.h>

fun(intp)

{inta=10;

p=a;

++p;

)

main()

{inta=5;

fun(a);

printf("%d\nK,a);

)

11.以下程序的運行結(jié)果是(8)。

#include<stdio.h>

intabc(intu,intv);

main()

{inta=24,b=16,c;

c=abc(a,b);

printf(n%d\nH,c);

)

intabc(intu,intv)

{intw;

while(v)

{w=u%v;

u=v;

v=w;

}

returnu;

12.以下程序的運行結(jié)果是:

(beforeswapa=5,b=10

inswapx=10,y=5

afterswapa=5,b=10)。

#include<stdio.h>

main()

inta,b;

a=5;b=10;

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

swap(a,b);

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

)

swap(intx,inty)

{inttemp;

temp=x;x=y;y=temp;

printf(*'inswapx=%d,y=%d\n';x,y);

}

13.以下程序的運行結(jié)果是:

(i=5

i=2

i=2

i=0

i=2)o

inti=0;

main()

{inti=5;

reset(i/2);printf(Hi=%d\n,\i);

reset(i=i/2);printf(,,i=%d\nM,i);

reset(i/2);printf(',i=%d\n,\i);

workover(i);printf(ni=%d\nM,i);

}

workover(inti)

{i=(i%i)*((i*i)/(2*i)+4);

printf(ni=%d\nu,i);

return(i);

)

reset(inti)

{i=i<=2?5:0;

retum(i);

)

練習(xí)6?2答案

一、選擇題

1.將一個函數(shù)說明為static后,該函數(shù)將(A)。

A.既能被同一源文件中的函數(shù)調(diào)用,也能被其他源文件中的函數(shù)調(diào)用

B.只能被同一源文件中的函數(shù)調(diào)用,不能被其他源文件中的函數(shù)調(diào)用

C.只能被其他源文件中的函數(shù)調(diào)用,不能被同一源文件中的函數(shù)調(diào)用

D.既不能被同一源文件中的函數(shù)調(diào)用,也不能被其他源文件中的函數(shù)調(diào)用

2.如果在一個函數(shù)中的復(fù)合語句中定義了一個變量,那么該變量(A)。

A.只在該復(fù)合語句中有效B.在該函數(shù)中有效

C.在本程序范圍內(nèi)均有效D.為非法變量

3.以下不正確的說法是(D)。

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

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

C.在函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

D.在函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效

4.以下程序的正確運行結(jié)果是(D)。

#defineMAX10

inta[MAX],i;

main()

{printf(n\n");sub1();sub3();sub2();sub3();

)

sub2()

{inta[MAX],i,max;

max=5;

for(i=0;i<max;i++)a[i]=i;

)

sub1()

{for(i=0;i<MAX;i++)a[i]=i+i;

}

sub3()

{inti;

for(i=0;i<MAX;i++)printf(',%d';a[ij);

printf(',\nM);

1

A.024681012141618B.01234

01234024681012141618

C.0123456789D.024681012141618

01234024681012141618

5.但凡函數(shù)中未指定存儲類別的局部變量,其隱含的存儲類別為(A)。

A.自動(auto)B.靜態(tài)(static)C.外部(extern)D.存放器(register)

6.以下程序的正確運行結(jié)果是(D)。

main()

{inta=2,i;

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

1

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

A.777B.71013C.7911D.789

二、讀程序,寫結(jié)果

7.寫出下面程序的運行結(jié)果,①是(8)、②是(17)。

#include<stdio.h>

main()

{intk=4,m=l,p;

p=fun(k,m);printf("%d”,p);/*①*/

p=fun(k,m);printf(u%d",p);/*②*/

)

fun(inta,intb)

{staticintm=0,i=2;

i+=m+l;

m=i+a+b;

return(m);

)

8.下面程序的運行結(jié)果是(84)。

#include<stdio.h>

intd=l;

fun(intp)

{intd=5;

d+=p++;

printf("%d';d);

)

main()

{inta=3;

fun(a);

d+=a++;

printf("%d”,d);

)

第7章

練習(xí)7-1答案

選擇題

1.:int*p,a;,那么語句“p=&a;〃中的運算符“&〃的含義是(D)。

A.位與運算B.邏輯與運算C.取指針內(nèi)容D.取變量地址

2.:inta,x;,那么正確的賦值語句是(C)。

A.a=(a[l]+a[2])/2;B.a*=*a+l;C.a=(x=l,x++,x+2);D.a=Hgood";

3.:inta,*p=&a;,那么以下函數(shù)調(diào)用中錯誤的選項是(D)。

A.scanf("%d",&a);B.scanf(H%du,p);C.printf(,'%dH,a);D.scanf("%d",*p);

4.:char*p,*q;,選擇正確的語句(C)。

A.p*=3;B.p/=q;C.p+=3;D.p+=q;

5.:intx;,那么下面的說明指針變量pb的語句(C)是正確的。

A.intpb=&x;B.int*pb=x;C.int*pb=&x;D.*pb二*x;

練習(xí)7?2答案

一、選擇題

1.設(shè)有說明其中的標識符ptr是(C)。

A.M個指向整型變量的指針

B.指向M個整型變量的函數(shù)指針

C.一個指向具有M列的二維數(shù)組的一行的指針

D.具有M個指針元素的一維數(shù)組的指針

2.:double它的含義是(C)。

A.p是相向double型變量的指針B.p是double型數(shù)組

C.p是指針數(shù)組D.p是數(shù)組指針

3.:chars[10],*p=s,那么在以下語句中,錯誤的語句是(B)。

A.p=s+5;B.s=p+s;C.s[2]=p[4];D.*p=s[0];

4.:chars[100];inti;,那么在以下引用數(shù)組元素的語句中,錯誤的表示形式是(D)。

A.s[i+10]B.*(s+i)C.*(i+s)D.*((s++)+i)

5.scharb[5],*p=b;,那么正確的賦值語句是(C5

A.b=nabcdn;B.*b="abcd";C.p=',abcd,';D.*p="abcd”;

6.以下對字符串的定義中,錯誤的選項是(A)。

A.charstr[7]=nFORTRANH;B.charstr[J="FORTRAN";

C.char*st尸"FORTRAN";D.charstr[]={'F,O,R,T,'R?A',N,0};

7.:chars[20]=nprogrammingM,*ps=s;,那么不能引用字母o的表達式是(A)。

A.ps+2B.s[2JC.ps[2]D.ps+=2,*ps

8.:char**s;,正確的語句是(B)。

A.s="compuier";B.*s="compuier";C.**s="compuier";D.*s='A';

9.:charc[8]=nbeijingn,*s=c;inti;,那么下面的輸出語句中,錯誤的選項是(B)。

A.printf(,'%s\nn,s);B.printf("%s\n",*s);

C.for(i=0;i<7;i++)D.for(i=0;i<7;i++)

printf(,'%cn,c[i]);printf(n%cn,s[i]);

10.:char*aa[2]={nabcdn,1ABCDn);,那么以下說法正確的選項是(D)。

A.aa數(shù)組元素的值分別是“abed”序列和“ABCD”序列

B.aa是指針變量,它指向含有兩個數(shù)組元素的字符型一維數(shù)組

C.aa數(shù)組的兩個元素分別存放的是含有4個字符的一維字符數(shù)組的首地址

D.aa數(shù)組的兩個元素中各自存放了字符宣和A的地址

11.:inta[3][4],*p=&a[0][0];p+=6;,那么*p和(D)的值一樣。

A.*(a+6)B.*(&a[0]+6)C.*a[l]+2D.a[l][2]

12.:inta[]={l,2,3,4,5,6,7,8,9,10,11,12),*p=a;,那么值為3的表達式是(A)。

A.p+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.*(&a[0][0]+6)

13.:int**p;,那么變量p是(B)。

A.指向int的指針B.指向指針的指針

C.int型變量D.以上三種說法均是錯誤的

14.:inta[]={1,2,3,4},y,*p=&a[l];>那么執(zhí)行語句y=(*--p)++;之后,變量y的值為

(A)。

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

15.:intb[]={l,2,3,4),y,*p=b;>那么執(zhí)行語句y=*p++;之后,變量y的值為(A)。

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

16.:intx[]={l,3,5,7,9,11),*ptr=x;,那么能夠正確引用數(shù)組元素的表達式是(B)。

A.xB.*(ptr-)C.x[61D.*(--ptr)

17.:intx[]={1,3,5,7,9,11},*ptr=x;,那么不能夠正確引用數(shù)組元素的表達式是(B)。

A.*(ptr-)B.*(-ptr)C.*(ptr++)D.*(++ptr)

18.假設(shè)有以下語句且0<二k<6,那么正確表示數(shù)組元素地址的表達式是(C)。

staticintx[]={1,3,5,7,9,11},*ptr=x,k;

A.x++B.&ptrC.&ptr[k]D.&(x+l)

19.:inti,x[3][4];,那么不能將的值賦給變量i的語句是(C)0

A.i=*(*(x+l)+l);B.i=x[l][l];C.i=*(*(x+l));D.i=*(x[l]+l);

20.:inta[2][3]={2,4,6,8,10,12);,正確表示數(shù)組元素的地址是(A)。

A.*(a+l)B.*(a[l]+2)C.a[l]+3D.a[0][0]

21.:使用如下語句動態(tài)申請一個int型的存儲單元,應(yīng)當使用(D)口

p=()malloc(sizeof(int));

A.intB.int*C.(*int)D.(int*)

二、填空題

22.閱讀程序,下面程序的輸出結(jié)果是(15)。

#include<stdio.h>

main()

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

intm,*pir;

ptr=&al0]l0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4));

printf(,'%d\nH,m);

)

23.下面程序的功能是:從鍵盤上輸入一行字符,存入一個字符數(shù)組中,然后輸出

該字符串.那么①是('\0域0)、②是(++)。

main()

{charstr[81],*sptr;

inti;

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

{str[i]=getchar();

if(str[i]=='\n,)break;

)

str[i]=①;

spti-str;

while(*sptr)putchar(*sptr②);

24.在下面的程序中假設(shè)第一個printf語句的輸出為ffe2,那么其余語句的輸出結(jié)果

分別為:①是(fff4)、②是(a)、③是(0)、④是(b)。

main()

{staticshorta[]={1,2,3,4,5,6,7,8,9,0},*p=a;

printf("%x\n",p);/*輸出結(jié)果為ffe2*/

printf(H%x\nn,p+9);/*輸出①*/

printf("%x\nn,*p+9);/*輸出②*/

printf(H%x\n",*(p+9));/*輸出③*/

printf("%x\n”,*++p+9);/*輸出④*/

25.下面程序的輸出結(jié)果,①是(m)、②是(a)、③是(w)、④是(z)、⑤是(mnopqr)。

#include<stdio.h>

nH,,Hnn,,,MHHn

char*pp[2][3]={abc,defgh,ijkl,mnopqr'!stuvw,xyz};

main()

出①*/

,/

{pnntf('%c\n,***(pp+l));/*建

出②*/

printf("%c\nu,**pp⑼);

出③

/**/

printf(H%c\nu,(*(*(pp+l)+1))[4]);/

/*出④*/

Hn/*/

printf(%c\n,*(pp[l][2]+2));出

⑤*/

printf("%s\n",**(pp+l));/

三、讀程序,寫結(jié)果

26.下面程序的運行結(jié)果是:

(□□□1口口口3口口口5口口口7

□□□9口口11口口13口口15

□□17口口19口口21口口23)。(71::□表不空格。)

#include<stdio.h>

main()

{inta[3][4]={l,3,5,7,9,11,13,15,17,19,21,23);

int*p,i;

for(p=a,i=0;p<&a[0][0]+12;p++,i++)

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

printf(,'%4dn,*p);

)

)

27.下面程序的運行結(jié)果是(3,3,3)。

#include<stdio.h>

main()

{inta=2,*p,**pp;

pp=&p;p=&a;

a++;

printf(n%d,%d,%d\n",a,*p,**pp);}

練習(xí)7?3答案

一、選擇題

1.main(argc,argv)中形式參數(shù)argv的正確說明形式應(yīng)當為(A).

A.char*argvf]B.charargv[]nC.charargvflD.char*argv

2.說明語句int(*p)();的含義是(C)。

A.p是一個指向一維數(shù)組的指針變量

B.p是指針變量,指向一個整型數(shù)據(jù)

C.p是一個指向函數(shù)的指針,該函數(shù)的返回值是一個整型

D.以上都不對

3.說明語句int*(*p)();的含義是(D)。

A.p是一個指向int型數(shù)據(jù)的指針

B.p是指針變量,它構(gòu)成了指針數(shù)組

C.p是一個指向函數(shù)的指針,該函數(shù)的返回值是一個整型

D.p是一個指向函數(shù)的指針,該函數(shù)的返回值是一個指向整型的指針

4.函數(shù)說明語句void那么它的含義是(A)。

A.函數(shù)f的返回值是一個通用型指針

B.函數(shù)f的返回值可以是任意的數(shù)據(jù)類型

C.函數(shù)f無返回值

D.指針f指向一個函數(shù),該函數(shù)無返回值

5.函數(shù)的功能是交換變量x和y中的值,并且通過正確調(diào)用返回交換的結(jié)果。能正

確執(zhí)行此功能的函數(shù)是(D)o

A.funa(int*x,int*y)B.funb(intx,inty)

{int*p;{intt;

*p=x;*x=*y;*y=*p;t=x;x=y;y=t;

C.func(int*x,int*y)D.fund(int*x,int*y)

{*x=*y;*y=*x;{?x=*x+*y;*y=*x-*y;*x=*x-*y;

)

6.閱讀程序,下面程序的輸出結(jié)果是(B)。

假設(shè)可執(zhí)行文件的文件名為:PROG.EXE

運行時鍵入的命令行為:PROG-386NET3<回車,

#include<stdio.h>

main(intargc,char*argv[])

{inti;

for(i=0;i<argc;i++)printf(n%s\n'\argv[i]);

A.-386B.PROG.EXEC.PROG.EXED.PROG

NET3-386--386

NET3386NET3

NET3

7.下面程序的運行結(jié)果是(A)。

#include<stdio.h>

f(intx,inty)

{return(y-x);

)

main()

{inta=5,b=6,c=2;

intf();

int(*g)()=f;

c=(*g)(a,b);

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

)

A.1B.2C.3D.前面三個答案均是錯誤的

8?假設(shè)用數(shù)組名作為函數(shù)調(diào)用的實參,傳遞給形參的是(A)。

A.數(shù)組的首地址B.數(shù)組第一個元素的值

C.數(shù)組中全部元素的值D.數(shù)組元素的個數(shù)

二、填空題

9.下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位

放在一維數(shù)組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,

那么①是(2)、②是(2)。

fun(intx,intb[])

{intk=O,r;

do

{r=x%①;

b[k++]=r;

x/=②;

}while(x);

)

10.函數(shù)expand(chars[],chart[])在將字符串s復(fù)制到字符串t時,將其中的換行符

和制表符轉(zhuǎn)換為可見的轉(zhuǎn)義字符,即用“\n”表示換行符,用\”表示制表符。那

么①是(j++)、②是(N)、③是(j++)、④是(N)、⑤是(j++)、⑥是('\0')。

expand(charsfl,chart[l)

{inti,j;

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

switch(s[i])

{case*\n':t[①]=②;break;

case*\t':t[③]=④;t[j++]=,t,;break;

default:t[⑤]=s[i];break;

)

tfjl=?;

三、讀程序,寫結(jié)果

11.以下程序的運行結(jié)果是(10753-7)。

main()

{inta[5]={5,10,-7,3,7),i,j,t;

sort(a);

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

)

sort(inta[])

{int

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

for(j=0;j<4-i;j++)

if(a[j]<a[j4-l]){t=a[j];a[j]=a[j4-l];a[j+l]=t;}

)

12.以下程序的運行結(jié)果是(?13689)。

main()

{inta[5]={9,6,8,t,p;

sort(a);

for(i=0;i<=4;i++)printf(H%d",a[i]);

)

sort(inta[])

{inti,j,t,p;

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

{P=j;

for(i=j;i<=4;i++)if(a[i]<a[pj)p=i;

t=a[p];a[p]=a[j];a[j]=t;

)

)

13.以下程序的運行結(jié)果是(sum=6)。

main()

{inta[3][3]={l,3,5,7,9,11,13,15,17};intsum;

sum二func(a);

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

)

func(inta[][3])

{inti,j,sum=0;

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

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

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

if(i==j)sum=sum+a[i][j];

return(sum);

14.下面程序的運行結(jié)果是:

(beforeswapa=5,b=10

inswapx=10,y=5

afterswapa=10,b=5)。

#include<stdio.h>

main()

{inta,b;

a=5;b=10;

printfC^beforesw叩a=%d,b=%d\n",a,b);

swap(&a,&b);

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

i

swap(int*px,int*py)

{inttemp;

temp=*px;

*px=*py;

*py=temp;

printf(ninswapx=%d,y=%d\n'\*px,*py);

)

15.下面程序的運行結(jié)果是(0123)。

#include<stdio.h>

func(intb[J)

{intj;

for(j=0;j<4;j++)b[jj=j;

)

main()

{inta[4],i;

func(a);

for(i=0;i<4;i++)printf("%d",a[i]);

)

16.運行下面程序,如果從鍵盤上輸入字符串"qwerty”和字符串”abed",那么程序的

運行結(jié)果是(10)。

#include<stdio.h>

strle(chara[],charb[])

{intnum=0,n=0;

while(a[num]!-\0')num++;

while(b[n])

{a[num]=b[n];num++;n++;}

return(num);

main()

{charstrl[81],st⑵81];

gets(strl);

gets(str2);

printf(,,%d\nn,strle(strl,str2));

)

17.下面程序的運行結(jié)果是(AGAAGAG)。

#include<stdio.h>

#include〈stringJ,.h>

voidfun(char*w,intm)

{chars,*pl,^p2;

pl=w;

p2=w+m-l;

while(pl<p2)

{s=*pl++;*pl=*p2—;*p2=s;}

)

main()

{staticchara[]="ABCDEFGH;

fun(a,strlen(a));

puts(a);

}

第8章

練習(xí)8答案

選擇題

1.在程序中要使用語句:primf("%s\n”,STRING);輸出一個長度為5個字符的提示信

息“OK!”,那么應(yīng)使用宏定義語句(D)。

A.#defineSTRINGnOK!"B.#defineSTRING

C.#defineSTRING\nOK!\nD.#defineSTRING”\"OK!\"”

2.以下正確的描述為(C)。

A.每個C語言程序必須在開頭用預(yù)處理命令#include<stdio.h>

B.預(yù)處理命令必須位于C源程序的首部

C.在C語言中預(yù)處理命令都以“科開頭

D.C語言的預(yù)處理命令只能實現(xiàn)宏定義和條件編譯的功能

3.C語言的編譯系統(tǒng)中宏命令是(D)。

A.在程序運行時進展代換處理的

B.在程序連接時進展處理的

C.和源程序中其他C語句同時進展編譯的

D.在對源程序中其他成分正式編譯之前進展處理的

4.從以下選項中選擇不會引起二義性的宏定義是(D)。

A.#definePOWER(x)x*xB.#definePOWER(x)(x)*(x)

C.#definePOWER(x)(x*x)D.#definePOWER(x)((x)*(x))

5.假設(shè)有宏定義如下:

#defineX5

#defineYX+1

#defineZY*X/2

那么執(zhí)行以下printf語句后,輸出結(jié)果是(D)。

inta;a=Y;

printf("%d;',Z);

printf("%d\nn,-a);

A.7,6B.12,6C.12,5D,7,5

6?假設(shè)a、b、c、d、t均為int型變量,那么執(zhí)行以下程序段后結(jié)果為(C)。

#defineMAX(A,B)(A)>(B)?(A):(B)

#definePRINT(Y)printf("Y=%d\n”,Y)

a=l;b=2;c=3;d=4;

t=MAX(a+b,c+d);

PRINT(t);

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

第9章

練習(xí)9-1答案

一、選擇題

1.typedefunsignedlongLONG的作用是(D)。

A.建設(shè)了一種新的數(shù)據(jù)類型B.定義了一個整形變量

C.定義了一個長整型變量D.定義了一個新的數(shù)據(jù)類型標識符

2.下面的4個運算符中,優(yōu)先級最低的是(D)。

A.()B..C.->D.++

3.:

struct

{inti;

charc;

floata;

}test;

那么sizeof(test)的值是(D)。

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

4.當聲明一個構(gòu)造變量時系統(tǒng)分配給它的內(nèi)存是(A)。

A.各成員所需內(nèi)存量的總和B.構(gòu)造中第一個成員所需內(nèi)存量

C.成員中占內(nèi)存量最大者所需的容量D.構(gòu)造中最后一個成員所需內(nèi)存量

5.以下對構(gòu)造類型變量的定義中錯誤的選項是(D)。

A.typedefstructstudentB.structstudent

{intnum;{intnum;

floatage;floatage;

}STUDENTstdl;}stdl;

C.structD.struct

{intnum;{intnum;

floatage;floatage;

}stdl;}student;

structstudentstdl;

6.根據(jù)下面的定義,能打印出字母M的語句是(D)。

structperson

{charname[9];

intage;

);

structpersonclass[10]={nJohnM,17,'Taul'^lQ,"Mary",18,"adamH,16};

A.printf("%c\n",class[3].name);B.pnntf(n%c\nH,class[3].name[1]);

C.printf("%c\n",class[2].name[1]);D.printf(n%c\nn,class[2].name[0]);

7.以下scanf函數(shù)調(diào)用語句中對構(gòu)造變量成員的錯誤引用是(D)。

structpupil

{charnam[20];

intage;

intsex

}pup[5],*p;

p=pup;

A.scanf("%sn,pup[l].name);B.scanf(n%d'\&pupLOJ.age);

C.scanf("%dM,&(p->sex));D.scanf(M%dn,p->age);

8.假設(shè)有以下程序段:

structdent

{intn;

int*m;

);

inta=l,b=2,c=3;

structdents[3]={{101,&a},{102,&b},{103,&c));

structdent*p=s;

那么以下表達式中值為2的是(D)o

A.(p++)->mB.*(p++)->mC.(*p).mD.*(++p)->m

二、填空題

9.:

struct

{intx,y;

}s[2]={{l,2},{3,4}},*P=s;

那么表達式++p->x的值(①2),表達式(++p)->x的值是(②3)o

10.下面的程序從終端上輸入n個人的年齡、性別和姓名,然后輸出。那么①是(p+n)、

②是(gets(p->name)或scanf(,'%s,',p->name))>③是(p+n)。

includeHstdio.hM

structman

{charname[20J;

unsignedage;

charsex[7J;

);

main()

{structmanperson[51;

data_in(person,5);

data_out(person,5);

)

data_in(structman*p,intn)

{structman*q=①;

for(;p<q;p++)

{printf(,'age:sex:nameH);

scanf(n%u%sn,&p->age.p->sex);

②;

)

)

data_out(structman*p,intn)

{structman*q=③;

for(;p<q;p++)

printf(u%s;%u%s\nu,p->name,p->age,p->sex);

}

三、讀程序,寫結(jié)果。

11.下面程序的運行結(jié)果是(Zhao)。

#include<stdio.h>

structstu

{intnum;

charnameflO];

intage

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論