正文 第52章 習題(1 / 3)

一、選擇題(每小題1分,共計10分)

1.以下敘述正確的是()。

A.在編譯時可以發現注釋中的拚寫錯誤

B.C語言程序的每一行隻能寫一條語句

C.main(){}必須位於程序的開始

D.C語言程序可以由一個或者多個函數組成

2.以下選項中不能用作變量名的是()。

A.floatB.switchC.sumD.123

3.若定義“intm=7,n=12;”,則能得到值為3的表達式是()

A.n%=(m%=5)B.n%=(m-m%5)

C.n%=m-m%5D.(n%=m)-(m%=5)

4.已知sizeof(int)的值為2,為將10!的值存儲到變量f中(10!=3628800),變量f的類型應聲明為()。

A.longintB.intC.shortintD.unsignedint

5.若有聲明“doublex=3,c,*a=&x,*b=&c;”,則下列語句中錯誤的是()。

A.a=b=0;B.a=&c;b=a;C.&a=&b;D.*b=*a;

6.數學式a〖〗2b在C語言程序中正確的表示形式為()。

A.sqrt(a)/2*bB.sqrt(a)/2/b

C.sqrt(a)/2bD.sqrt(a)/(2*b)

7.為了避免嵌套的if-else語句的二義性,C語言規定else總是與()組成配對關係。

A.縮排位置相同的if

B.在其之前未配對的if

C.在其之前最近的未配對的if

D.同一行上的if

8.關於下麵的程序,以下選項中正確的是()。

main()

{intx=3,y=0,z=0;

if(x=y+z)printf("****");

elseprintf("####");}

A.有語法錯誤不能通過編譯

B.輸出****

C.可以通過編譯,但是不能通過連接,因而不能運行

D.輸出####

9.設x和y均為int型變量,則執行下麵的循環後,y值為()

for(y=1,x=1;y

=10)break;

if(x%2==1){x+=5;continue;}

x-=3;}

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

10.已知有程序段“charstr[][10]={"Aoyun","Beijing"},*p=&str[0][0];printf("%s\n",p+10);”,則執行printf語句後輸出為()。

A.BeijingB.AoyunC.ingD.ng

二、填空題(每空2分,共計50分)

1.已知有函數定義“intfun(){return(45);}”,則調用fun後的函數返回值是。

2.設有聲明“inta=3,b=4;floatx=45,y=35;”,則表達式(float)(a+b)/2+(int)x%(int)y的值是。

3.若有定義“enumTP{A,B,C};”,則執行語句“printf("%d\n",A+1);”後輸出結果是。

4.C語言中,函數實參與形參之間隻能進行值傳遞。

5.設有說明語句“inta[3][4]={{1,2},{3,4,5},{6,7,8}};”,則a[0][2]的初始化值為。

6.以下程序運行時輸出結果為。

#include

voidmain()

{inti,sum=0;

for(i=0;i

#include

voidsf(char*s1,char*s2)

{if(*s1=*s2)

sf(s1+1,s2+1);

voidmain()

{chara[20]="ABC",b[20]="xyz";

sf(a+strlen(a),b);

puts(a);

9.以下程序運行後輸出結果的第一行是,第二行是。

#include

voidmain()

{inti,j,a[3][3];

for(i=0;i

main()

intn,s,sum=0;

scanf("%d",&n);

for(inti=1;i

#defineN10

invert(s,i,j)

int*s,i,j;

{intt;if(i

#defineN5

voidfun(intxr[][N],intn)

inti,j,t,arr,col;

for(i=0;i=arr)

arr=x[i][j];

;

t=x[i][i];

;

x[i][col]=t;

for(i=0;inext==NULL)。

#include

structlist{intdata;structlist*next;};

creatlist()

{structlist*p,*q,*ph;inta;

ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber,enter-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

p->data=a;

q->next=p;

=p;

scanf("%d",&a);}

p->next=\0;

return(ph);

main()

{structlist*head;head=creatlist();}

三、改錯題(每錯5分,共計20分)

【程序功能】

對整型數組中的各個元素(各不相同)按其所存數據的大小進行編號(從小到大連續編號),要求不改變數組中各元素的順序。

例如:數組num值為“3,14,4,25,13,17,20”,輸出“1,4,2,7,3,5,6”。

【含有錯誤的源程序】

#include

#defineN7

main()

{intnum[N],s[n],i,j,k;

staticintar[]=[3,14,4,25,13,17,20];

for(i=0;i”,為使語句“zx=fopen("c:\\a.txt","r");”能正常執行,在該語句之前必須聲明。

6.如果輸入值6、10,則以下程序的運行結果是。

main()

{floata,b;

intc;

scanf("%f,%f",&a,&b);

c=max(a,b);

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

max(floatx,floaty)

{floatz;

z=x>y?x:y;

return(z);

7.如果a、b的值分別為5、9,則以下程序的運行結果是。

swap(p1,p2)

int*p1,*p2;

{intp;

p=*p1;

*p1=*p2;

*p2=p;

main()

{inta,b;

scanf("%d,%d",&a,&b);

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

printf("swapped:\n");

swap(&a,&b);

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

8.使用命令行方式執行下列程序時,輸出結果是。

命令:testChinaNanjingForestUniversity

main(intargc,char*argv[])/*test.c*/

{while(argc>1)

{++argv;

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

--argc;

9.以下程序運行時輸出結果是。

voidPrintStr(char*s)

if(*s)

PrintStr(s+1);

putchar(*s)

voidmain()

PrintStr("China");

10.以下程序運行時輸出結果是。

#include

voidf(longx)

{if(x

main()

{inti,j,a[3][3]={0};

for(i=0;i

voidsub(n,uu)

intn,uu[];

{intt;

t=uu[n--];t+=3*uu[n];