2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。

A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

2.表達(dá)式“3.6-5/2+1.2+5%2”的值是()。

A.4.3B.4.8C.3.3D.3.8

3.數(shù)據(jù)庫是()的集合,它具有統(tǒng)一的結(jié)構(gòu)格式并存放于統(tǒng)一的存儲介質(zhì),可被各個應(yīng)用程序所共享

A.視圖B.消息C.數(shù)據(jù)D.關(guān)系

4.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

則執(zhí)行后輸出的結(jié)果為A.A.heB.andC.youD.tomeetme

5.用單鏈表方式存儲的線性表,存儲每個結(jié)點(diǎn)需要兩個域,一個數(shù)據(jù)域,另一個是()。

A.當(dāng)前結(jié)點(diǎn)的所在地址B.后繼結(jié)點(diǎn)的所在地址C.空指針域D.空閑域

6.若有定義“floata=25,b,*p=&b;”,則下列對賦值語句“*p=a;”和“p=&a;”的正確解釋為()。

A.兩個語句都是將變量a的值賦予變量P

B.*p=a是使P指向變量a,而p=&a是將變量的值賦予變量指針P

C.*p=a是將變量a的值賦予變量b,而&a是使P指向變量a

D.兩個語句都是使P指向變量a

7.設(shè)一組初始記錄關(guān)鍵字序列(5,2,6,3,8),以第一個記錄關(guān)鍵字5為基準(zhǔn)進(jìn)行一趟快速排序的結(jié)果為()。

A.2,3,5,8,6B.3,2,5,8,6C.3,2,5,6,8D.2,3,6,5,8

8.第

17

若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

9.若要用函數(shù)fopen打開一個新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

10.以下關(guān)于typedef的敘述錯誤的是A.用typedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

11.

12.

13.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點(diǎn)p的直接后繼,則應(yīng)執(zhí)行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

14.若有定義語句:“intkl一10,k2=20;”,執(zhí)行表達(dá)式(kl=kl>k2)(k2=k2>k1)后,kl和k2的值分別為()。

A.0和1B.0和20C.10和1D.10和20

15.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實(shí)現(xiàn)一種算法

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨(dú)作為一一個c程序文件存在

16.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節(jié)點(diǎn)E的線索化指向節(jié)點(diǎn)()

A.BCB.ACC.DFD.CF

17.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序的運(yùn)行結(jié)果是()。

A.6B.3C.8D.12

18.下列程序的運(yùn)行結(jié)果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

19.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

20.以下不能將s所指字符串正確復(fù)制到所指存儲空間的是()A.do{*t++=*s++;}while(*s);.

B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s){t++;s++}

D.for(i=0,j=0;t[i++]=s[j++];);

二、2.填空題(20題)21.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。

請?zhí)羁铡?/p>

main()

{floata,b,c;

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

if(【】)printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

22.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

23.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

24.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i,10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

25.若有如下程序:

main()

{ints[]={1,2,3,4,5,6,},*p=s;

printf{"%d,%d\n",*(p+3),*(p+5)}}

則程序運(yùn)行后的輸出結(jié)果是【】。

26.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

27.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實(shí)際上對應(yīng)一個處理模塊。

28.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

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

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

29.下列程序的輸出結(jié)果是【】。

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);

}

30.下面程序是指從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(*p++);}

31.以下函數(shù)的功能是計算s=1+1/2!+1/3!+……+1/n!,請?zhí)羁铡?/p>

doublefun(intn)

{

doubles=0.0,fac=1.0;inti;

for(i=1,i<=n;i++)

{

fac=fac______;

s=s+fac;

}

returns;

}

32.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

33.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

34.以下程序運(yùn)行后的輸出結(jié)果是______。

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

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

}

35.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

36.樹中度為零的結(jié)點(diǎn)稱為______。

37.有以下程序:

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

程序運(yùn)行后的輸出結(jié)果是【】。

38.在對文件進(jìn)行操作的過程中,若要求指針的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是【】。

39.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

40.下列程序的輸出結(jié)果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

三、1.選擇題(20題)41.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

42.閱讀下列程序,當(dāng)運(yùn)行函數(shù)時,輸入asdafaaz67,則輸出為

#include<stdio.h>

#include<ctype.h>

#include<string.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=′\0′;i++)

if(str[i]!=′′)str[j++]=str[i];

str[j]=′\0′;

}

main()

{

charstr[81];

intn;

printf("Inputastring:");

gets(str);

puts(str);

fun(str);

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

}

A.asdafaaz67B.asdafaaz67C.asdD.z67

43.在Windows中,啟動應(yīng)用程序的正確的方法是()

A.用鼠標(biāo)指向該應(yīng)用程序圖標(biāo)B.將該應(yīng)用程序窗口最小化成圖標(biāo)C.將該應(yīng)用程序窗口還原D.用鼠標(biāo)雙擊該應(yīng)用程序圖標(biāo)

44.下列說法不正確的是()。

A.調(diào)用函數(shù)時,實(shí)參可以是表達(dá)式

B.調(diào)用函數(shù)時,實(shí)參與形參可以共用內(nèi)存單元

C.調(diào)用函數(shù)時,將實(shí)參的值復(fù)制給形參,使實(shí)參變量和形參變量在數(shù)值上相等

D.調(diào)用函數(shù)時,實(shí)參與形參的類型必須一致

45.與十進(jìn)制數(shù)255相等和二進(jìn)制數(shù)是()

A.11101110B.11111110C.10000000D.11111111

46.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串sir1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

47.設(shè)有說明int(*ptr)[M];其中的標(biāo)識符ptr是______。

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

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

C.一個指向具有M個整型元素的一維數(shù)組的指針

D.具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型變量

48.結(jié)構(gòu)化程序設(shè)計方法在軟件開發(fā)中用于______。

A.需求分析B.詳細(xì)設(shè)計C.可行性分析D.程序設(shè)計

49.下列敘述中不正確的是()。

A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實(shí)質(zhì)上是一個函數(shù)內(nèi)部的局部變量

50.若有“doublea;”,則正確的輸入語句是()。

A.scanf("%1f",A);

B.scanf("%f",&A);

C.scanf("%1f",&A);

D.scanf("%1e",A);

51.下列合法的整型常量的表示是

A.98B.oXdeC.32767D.0xDG

52.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL));程序運(yùn)行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯

53.已知a=15,執(zhí)行fprintf(fp,"%d",a)后,寫入fp指向的文件的是______。

A.15B.1111C.63D.1111

54.有以下程序:main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序運(yùn)行后的輸出結(jié)果是()。

A.zB.0C.元素ch[5]地址D.字符y的地址

55.若有以下定義(設(shè)int類型變量占2個字節(jié))inti=8,j=9:則以下語句:printf("i=%%d,j=%%%d\n",i,j);輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%8C.i=%d,j=%dD.8,9

56.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達(dá)式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

57.有以下程序#include<string.h>structSTU{inthum;floatTotalScore;};voidf(structSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore-s[1].TotalScore;}main(){structSTUs[2]-{{20041,703},{20042,580}};f(s[0]);printf("%d%3.0f\n",s[0].num,s[0].TotalScore);}程序運(yùn)行后的輸出結(jié)果是

A.20045537B.20044550C.20042580D.20041703

58.對建立良好的程序設(shè)計風(fēng)格,下列描述正確的是()。

A.程序應(yīng)該簡單、清晰、可讀性好B.符號名的命名只需要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

59.以下程序的功能是進(jìn)行位運(yùn)算:main(){unsignedchara,b;a=7^3;b=~4&3;printf("%d%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是______。

A.43B.73C.70D.40

60.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/

printf("%u\n",x);

}

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

A.-1B.65535C.32767D.0xFFFF

四、選擇題(20題)61.

62.

下列程序的輸出結(jié)果是()。

voidfun(int*X,inty)

{printf("%d%d",*x,*y);*x=3;*y=1;}

main

{intx=1,y=2;

fun(&y,&x);

printf("%d%d",x,y);

}

A.2143B.1212C.1234D.2112

63.

在下列給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。

A.(!E==0)B.(E>0C.D.E<0)E.(E==0)F.(E!=0)

64.下列關(guān)于棧的敘述正確的是()。

A.棧按“先進(jìn)先出”組織數(shù)據(jù),B.棧按“先進(jìn)后出”組織數(shù)據(jù)C.只能在棧底插入數(shù)據(jù)D.不能刪除數(shù)據(jù)

65.

以下程序的輸出結(jié)果是()。

intf(intA)

{returna%2;}

main

{ints[8]={1,3,5,2,4,6},i,d=0;

for(i=0;f(s[8]);i++)d+=s[i];

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

}

A.9B.11C.19D.21

66.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

67.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。

A.

B.

C.

68.

69.(65)軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()

A.模塊間的關(guān)系

B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述

C.軟件層次結(jié)構(gòu)

D.軟件開發(fā)過程

70.在JavaScript語言中,要定義局部變量則可以()。

A.由關(guān)鍵字private在函數(shù)內(nèi)定義

B.由關(guān)鍵字private在函數(shù)外定義

C.由var在函數(shù)內(nèi)定義

D.由關(guān)鍵字var在函數(shù)外定義

71.數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)完整性、安全性定義的語言是()。

A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

72.

73.

74.以下敘述中錯誤的是()。

A.對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B.數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C.當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界”的出錯信息

D.可以通過賦初值的方式確定數(shù)組元素的個數(shù)

75.以下敘述中錯誤的是()。

A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

76.

77.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

78.數(shù)據(jù)流程圖(DFD)是()。

A.軟件概要設(shè)計的工具B.軟件詳細(xì)設(shè)計的工具C.結(jié)構(gòu)化方法的需求分析工具D.面向?qū)ο蠓椒ǖ男枨蠓治龉ぞ?/p>

79.

80.下列說法不正確的是

A.?dāng)?shù)據(jù)庫減少了數(shù)據(jù)冗余B.?dāng)?shù)據(jù)庫實(shí)現(xiàn)了數(shù)據(jù)的共享

C.?dāng)?shù)據(jù)庫避免了一切數(shù)據(jù)的重復(fù)D.?dāng)?shù)據(jù)庫具有較高的數(shù)據(jù)獨(dú)立性

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對6個字符串按由小到大的順序進(jìn)行排序。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數(shù)fun(),用來求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在k所指向的存儲單元中。例如,輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為6,980。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.B

2.D先計算“5/2”,結(jié)果取整數(shù)值2;然后計算“3.6-2”,結(jié)果與高精度數(shù)據(jù)保持一致,即1.6;再計算“1.6+1.2”,結(jié)果為2.8;接著計算“5%2”,結(jié)果為1;最后計算“2.8+1”,結(jié)果為3.8。故本題答案為D選項。

3.C解析:數(shù)據(jù)庫是數(shù)據(jù)的集合,其中的數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,它能構(gòu)造復(fù)雜的數(shù)據(jù)結(jié)構(gòu),以建立數(shù)據(jù)之間的內(nèi)在聯(lián)系與復(fù)雜的關(guān)系。

4.B在本題中,首先定義了兩個宏N和M,大小都為10,然后定義了一個返回指針的函數(shù)find,該函數(shù)帶有兩個形參,第一個為字符型的指針數(shù)組,第二個為整型變量,在函數(shù)體中,首先定義了一個指針變量q,并將形參中指針數(shù)組的第一個元素賦值給q,然后執(zhí)行for循環(huán),在循環(huán)體中,首先執(zhí)行條件判斷語句,其條件為strcmp(a[i],q)<0(strcmp函數(shù)的作用是比較兩字符串的大小,如果相等,則返回0值,如果參數(shù)中的第一個字符串大,則返回正值,否則返回負(fù)值),如果結(jié)果為真,說明指針數(shù)組當(dāng)前元素所指向的字符串比q所指向的字符串小,此時,程序執(zhí)行將當(dāng)前指針數(shù)組元素賦值給p,最后返回p,通過上面的分析我們可以看出,find函數(shù)的作用是找出指針數(shù)組中各元素所指向字符串的最小字符串。

在主函數(shù)中,定義了一個二維數(shù)組s,并賦了初值,然后定義一個指針變量p,用來存放函數(shù)find的返回值。調(diào)用函數(shù)find的參數(shù)分別為s和5,結(jié)合形參看find函數(shù),不難知道調(diào)用find函數(shù)就是找出二維數(shù)組s中各字符串中最小的字符串,那么應(yīng)該為and。此時,指針變量p指向字符串“and”的首地址,然后執(zhí)行puts(p),完成該字符串的輸出。因此,本題正確的答案是B。

5.B

6.C“P”是指針變量,指向一個地址:“*P”為P指針?biāo)赶虻刂返膬?nèi)容“&”是取變量地址。

7.C

8.B解析:條件運(yùn)算符要求有3個操作對象,稱三目(元)運(yùn)算符,它是C語言中惟一的一個三目運(yùn)算符。條件表達(dá)式的一般形式為:表達(dá)式17表達(dá)式2:表達(dá)式3其求解順序是:先求解表達(dá)式1,若為非O(真)則求解表達(dá)式2,此時表達(dá)式2的值就作為整個條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。并且注意++、--的用法。

9.B解析:本題考查文件使用方式標(biāo)識符。方式“wb”為輸出打開一個二進(jìn)制文件;方式“wb+”為讀寫建立一個新的二進(jìn)制文件;方式“rb+”為讀寫打開一個二進(jìn)制文件:方式“rb”為輸入打開一個二進(jìn)制文件。

10.A解析:本題考查的重點(diǎn)是typedef的理解運(yùn)用。C語言允許通過typedef為數(shù)據(jù)類型定義新名字,但是,它并非是生成新的數(shù)據(jù)類型,因此選項A是錯誤的。

11.A

12.D

13.A

14.B

15.B[解析]在一個C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

16.D

17.A本題中,fun函數(shù)第1次調(diào)用為fun(8,fun(5,6))。因為fun(5,6)的返回值為5,所以第2次調(diào)用為fun(8,5),即返回值為6。故本題答案為A選項。

18.D本題考查"drhile循環(huán)。第一次循環(huán),y=y-1,y=2,循環(huán)條件成立,x=1,X++后值為1,x自加變成2,進(jìn)入循環(huán),a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),x=2,y-1=1,循環(huán)條件成立,進(jìn)入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<X成立,執(zhí)行break語句,退出循環(huán)。結(jié)果為D。

19.C解析:轉(zhuǎn)義字符有1個\\\\、2個\\'、1個\\b,普通字符有3個a、3個c、3個d,共13個字符。

20.Ado{*t++=*s++;}while(*s);不能因為當(dāng)*s=‘\\0'時,while(*s)跳出循環(huán),這樣字符串結(jié)束標(biāo)志’0\\沒有復(fù)制給*t,造成*t不完整。注意,*t++=*s++是先執(zhí)行t=*s,然后才進(jìn)行t=t+1,s=s+1。B),C),D)三項都能將“\\0’復(fù)制過去。

21.a+b>c&&a+c>b&&b+c>aa+b>c&&a+c>b&&b+c>a解析:在邏輯表達(dá)式中,如果要同時滿足幾個條件可以使用邏輯與運(yùn)算符“&&”,故本題的答案應(yīng)該為:a+b>c&&a+c>b&&b+c>a或其他等價形式。

22.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機(jī)制和區(qū)別。

23.可重用性可重用性解析:繼承的優(yōu)點(diǎn):相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。

24.1212解析:本題首先通過第一個for語句把0~9(包含0和9)間的整數(shù)依次賦值給數(shù)組arr,第二個for語句用于實(shí)現(xiàn)將滿足條件的數(shù)組元素與對應(yīng)的下標(biāo)值求和并累加,并用變量k保存。

25.464,6解析:指針p指向數(shù)組s的首地址。*(p+3)是取p后3位地址單元中的值即4,*(p+5)是取p后5位地址單元中的值即6。這里p+3或p+5并未改變p的值,p始終指向數(shù)組s的首地址。

26.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

27.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。

28.>=1或>0i>=1或>0\r\ni解析:程序的外層for循環(huán)控制輸出數(shù)據(jù)的行數(shù),故第一處填“>=1”或“>0”;內(nèi)層循環(huán)控制每行輸出的個數(shù)。在內(nèi)層for循環(huán)中,語句x=(j-1)*4+______;用于控制輸出方陣中的具體數(shù)據(jù),由于這些數(shù)據(jù)與其所在的行、列(j,i)具有x=(j-1)*4+i的關(guān)系,故第二處填i。

29.66解析:條件運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4;當(dāng)y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。

30.\0's\\0'\r\ns解析:本題選通過for循環(huán)從鍵盤讀入20個字符,然后在最后賦一定值'\\0'后為結(jié)束標(biāo)志,再使指針p指向字符串的首地址。最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

31./i或*1.0/i或*1/i或*(1.0/i)或/(double)i/i或*1.0/i或*1/i或*(1.0/i)或/(double)i解析:主函數(shù)中首先定義了兩個double型的變量s和fac,并給它們賦初值為0.0和1.0,在函數(shù)中s和fac的作用是存放和以及要加到的那一項的值。通過分析可知,第i項的值可以由第i-1項的值得到,即第i項是第i-1項的值除以i。可見橫線處應(yīng)添“/i”或與它等價的表達(dá)式。

32.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時,仍然光遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。

33.3535解析:考查swap()函數(shù)。函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

34.32233,2,2,3解析:主函數(shù)中首先定義了整型變量x和y,并分別給它們賦初值為2和3,接著調(diào)用fun()函數(shù),fun()函數(shù)把實(shí)參x和y的值傳給形式參數(shù)x和y,實(shí)參和形參不再有聯(lián)系.在fun()函數(shù)中通過運(yùn)算使x和y的值交換過來,所以fun()函數(shù)中的輸出結(jié)果是“3,2”。fun()函數(shù)調(diào)用返回輸出x和y依舊是原來的x和y,為“2,3”原因是變量作為形參傳值的,對形參的修改并不影響對應(yīng)的實(shí)參。所以最后輸出為3,2,2,3。

35.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達(dá)式中,也只有賦值表達(dá)式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。

36.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)解析:樹中度為零的結(jié)點(diǎn),也就是沒有后件的結(jié)點(diǎn),稱為葉子結(jié)點(diǎn)。

37.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f(2)=f(1)+1=1+1=2:j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運(yùn)行后的輸出結(jié)果是3。

38.rewindrewind解析:庫函數(shù)rewind()的作用是使文件位置指針重新返回文件的開頭,所以本題應(yīng)該填rewind。

39.軟件開發(fā)

40.1234theend1,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1次循環(huán),i=1時,調(diào)用PRINT(1),P(1)輸出1;第2次循環(huán),i=2時,調(diào)用PRINT(2),P(2)輸出2;第3次循環(huán),i=3時,調(diào)用PRINT(3),P(3)輸出3;第4次循環(huán),i=4時,調(diào)用PRINT(4),P(4)輸出4,theend。

41.AB選項中運(yùn)算符“%”的運(yùn)算對象為整數(shù)。C選項中不能將變量賦給表達(dá)式“x+n”。D選項中不能將表達(dá)式“4+1”賦給常量5。故本題答案為A選項。

42.A解析:本題題意要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用'留下'字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,每走到一個字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個空格),則將其保存str[j]中。注意j的下標(biāo)變化、初值及最后加串結(jié)束符\'\\0\'。

43.D

44.B

\n本題考查函數(shù)調(diào)用的基本概念。調(diào)用函數(shù)時,實(shí)參的形式可以是具體的數(shù)值,也可以是表達(dá)式。實(shí)參將數(shù)值或表達(dá)式的值傳遞給形參,因而兩者的類型必須保持一致;形參在運(yùn)算過程中會發(fā)生改變,但不一定會影響到實(shí)參值,所以可知兩者不共用內(nèi)存單元。

\n

45.D

46.C解析:strcat(s1,s2)是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復(fù)制給s1字符串,要保證s1能容納下連接或復(fù)制后的字符串。

47.C解析:(*pd)[M]中,由于一對圓括號的存在,所以*首先與prt結(jié)合,說明ptr是一個指針變量,然后與[M]結(jié)合,說明prt的基類型是一個包含M個int型元素的數(shù)組。

48.B

49.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

50.C

51.C解析:整型常量可以用+進(jìn)制、八進(jìn)制和+六進(jìn)制形式來表示。+進(jìn)制基本常量用一串連續(xù)的數(shù)字來表示,八進(jìn)制數(shù)用數(shù)字0開頭,+六進(jìn)制數(shù)用數(shù)字0和字母x或X開頭,各個進(jìn)制都需用各自合法的字符數(shù)字表示。選項A)中9是不合法的。選項B)+六進(jìn)制數(shù)字應(yīng)該用數(shù)字零和字母X(或x)開頭,選項D)中G不合法。

52.A解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)為0。所以,4個選項中選項A符合題意。

53.C解析:使用fprintf()函數(shù)時,函數(shù)向文件輸出的是ASCⅡ碼,特別在輸出數(shù)值時,輸出的是該數(shù)值的ASCⅡ碼,而不是數(shù)值本身。

54.A解析:字符指針pc指向字符串?dāng)?shù)組ch的首地址,*(pc+5)就是pc[5]的值。

55.B

56.C解析:主函數(shù)中定義了一個整型變量a,一個整型指針變量b和一個二級指針變量c,并讓c指向指針變量b,讓指針b指向整形變量a,所以**c為變量a的值,所以,4個選項中選項C符合題意。

57.D解析:把結(jié)構(gòu)體變量作為一個參數(shù)傳遞給函數(shù)時,傳遞的是實(shí)參結(jié)構(gòu)體變量的值,系統(tǒng)將為結(jié)構(gòu)體類型的形參開辟相應(yīng)的存儲單元,并將實(shí)參中各成員的值賦給對應(yīng)的形參成員。因此,改變形參變量的內(nèi)容不會影響實(shí)參,即傳值調(diào)用。所以本題的函數(shù)f()沒有對傳遞的結(jié)構(gòu)體s[0]作任何改動,結(jié)果還是20041703。應(yīng)該選擇D。

58.A解析:“清晰第一,效率第二”,在考慮到程序的執(zhí)行效率的同時,一定要保證程序清晰、可讀;對符號名的命名,除了要符合語法要求外,還要具有一定的含義;程序的注釋可以幫助程序員理解程序,不是可有可無的。

59.A解析:a=7^3=00000111^00000011=00000100=4;b=~4&3=~00000100&00000011=11111011&00000011=00000011=3

60.B解析:整型常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制3種表示:十進(jìn)制整數(shù)以正號(+)或負(fù)號(-)開頭,由首位非0的一串十進(jìn)制數(shù)字組成,正負(fù)號也可省略,表示正整數(shù);八進(jìn)制整數(shù)以數(shù)字0開頭,后面接著干個八進(jìn)制數(shù)字(0~7):十六進(jìn)制整數(shù)以數(shù)字。和字母x(大、小寫均可)開頭,后面接若干個十六進(jìn)制數(shù)字(數(shù)字0~9和字母A~F,大、小寫均可)。故本題是以無符號整數(shù)形式輸出一個十六進(jìn)制整數(shù)FFFF,將其轉(zhuǎn)換為十進(jìn)制就是65535,故本題應(yīng)該選擇B。

61.D

62.C

\n當(dāng)執(zhí)行fun函數(shù)時,因為參數(shù)傳遞時是地址傳遞,因此形參值的改變會影響實(shí)參中的數(shù),在執(zhí)行fun函數(shù)時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數(shù)中,輸出的值為34。

\n

63.B

\n在while(E)中,表達(dá)式E可以是C語言中任意合法的條件表達(dá)式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項8中表達(dá)式E>0||E<0是一個邏輯表達(dá)式。

\n

64.B棧是按“先進(jìn)后出”的原則組織數(shù)據(jù)的,數(shù)據(jù)的插入和刪除都在棧頂進(jìn)行操作。

65.A

\n在程序中當(dāng)i=0時,s[o]=1,f(s[0])為1,執(zhí)行d+=s[0],d的值為1,i++也變?yōu)?。當(dāng)i=1時,s[1]=3,f(s[1])為1,也為非0,繼續(xù)執(zhí)行后面的表達(dá)式,此時d的值為1+3=4,繼續(xù)著i++變?yōu)?,接著執(zhí)行for循環(huán),可知for循環(huán)的目的是把S數(shù)組中的奇數(shù)相加,因此最后d的值為1+3+5為9,故選擇A選項。

\n

66.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進(jìn)制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

67.A函數(shù)strcmp(s2,s1)的作用是比較字符串的大小,函數(shù)strcpy(s1,s2)的作用是進(jìn)行字符串復(fù)制,所以選擇A)選項。B)和D)都是比較的字符串s1與s2的地址是否一致而不是比較字符串內(nèi)容是否一致。

68.B

69.B

70.C

71.D數(shù)據(jù)定義語言負(fù)責(zé)數(shù)據(jù)的模式定義和數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言負(fù)責(zé)數(shù)據(jù)的操縱;數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查,以及并發(fā)控制、故障恢復(fù)等功能。無“數(shù)據(jù)管理語言”的說法。

72.B

73.A

74.C解析:在C語言中,除字符數(shù)組外,一個數(shù)組不能通過數(shù)組名對數(shù)姐進(jìn)行整體引用,因此選項A是對的。數(shù)組名中存放的是一個地址常量,它代表整個數(shù)組的首地址,因此選項B是對的。C語言程序在運(yùn)行過程中,系統(tǒng)不自動檢驗數(shù)組元素的下標(biāo)是否越界,因此選項C是錯誤的。C語官規(guī)定可以通過賦初值來定義數(shù)組的大小,這時數(shù)組說明符的一對方括號中可以不指定數(shù)組的大小,因此選項D也是正確的。所以,4個選項中選項C符合題意。

75.A解析:typedef用來聲明新的類型名來代替已有的類型名,typedef只是對已經(jīng)存在的類型增加了一個類型名,原有類型名仍有效。typedef不能用來定義變量。

76.D

77.A函數(shù)fgete()從文件讀入一個字符到指定變量。函數(shù)fputc()將指定字符寫入審文件中,函數(shù)fprinff(),fwrite()均是寫入文件操作函數(shù)。因此選項B,c。D錯誤。答案為A選項。

78.CC。【解析】數(shù)據(jù)流程圖是一種結(jié)構(gòu)化分析描述模型,用來對系統(tǒng)的功能需求進(jìn)行建模。

79.D

80.C數(shù)據(jù)庫是存儲在一起的相關(guān)數(shù)據(jù)的集合,具有以下特點(diǎn)。

(1)實(shí)現(xiàn)數(shù)據(jù)共享。數(shù)據(jù)共享包含所有的用戶可同時存取數(shù)據(jù)庫中的數(shù)據(jù),也包括用戶可以用各種方式通過接口使用數(shù)據(jù)庫,并提供數(shù)據(jù)共享。

(2)減少數(shù)據(jù)的冗余度。同文件系統(tǒng)相比,由于數(shù)據(jù)庫實(shí)現(xiàn)了數(shù)據(jù)共享,從而避免了用戶各自建立應(yīng)用文件,減少了大量重復(fù)的數(shù)據(jù)和數(shù)據(jù)冗余,維護(hù)了數(shù)據(jù)的一致性。

(3)數(shù)據(jù)的獨(dú)立性。數(shù)據(jù)的獨(dú)立性包括數(shù)據(jù)庫的邏輯結(jié)構(gòu)和應(yīng)用程序相互獨(dú)立,也包括數(shù)據(jù)物理結(jié)構(gòu)的變化不影響數(shù)據(jù)的邏輯結(jié)構(gòu)。

(4)數(shù)據(jù)實(shí)現(xiàn)集中控制。在文件管理方式中,數(shù)據(jù)處于一種分散的狀態(tài),不同的用戶或同一用戶在不同的處理中,其文件之間毫無關(guān)系。利用數(shù)據(jù)庫可對數(shù)據(jù)進(jìn)行集中控制和管理,并通過數(shù)據(jù)模型表示各種數(shù)據(jù)的組織以及數(shù)據(jù)間的聯(lián)系。

(5)數(shù)據(jù)一致性和可維護(hù)性,以確保數(shù)據(jù)的安全性和可靠性。主要包括:①安全性控制。以防止數(shù)據(jù)丟失、錯誤更新和越權(quán)使用。②完整性控制。保證數(shù)據(jù)的正確性、有效性和相容性。③并發(fā)控制。使在同一時間周期內(nèi),允許對數(shù)據(jù)實(shí)現(xiàn)多路存取,又能防止用戶之間的不正常交互作用。④故障的發(fā)現(xiàn)和恢復(fù)。由數(shù)據(jù)庫管理系統(tǒng)提供一套方法,可及時發(fā)現(xiàn)故障和修復(fù)故障,從而防止數(shù)據(jù)被破壞。

(6)故障恢復(fù)。由數(shù)據(jù)庫管理系統(tǒng)提供一套方法,可及時發(fā)現(xiàn)故障和修復(fù)故障,從而防止數(shù)據(jù)被破壞。數(shù)據(jù)庫系統(tǒng)能盡快恢復(fù)數(shù)據(jù)庫系統(tǒng)運(yùn)行時出現(xiàn)的故障,可能是物理上或是邏輯上的錯誤。比如對系統(tǒng)的誤操作造成的數(shù)據(jù)錯誤等。

數(shù)據(jù)庫是不可能避免一切數(shù)據(jù)都沒有重復(fù)的,并且有些情況下需要有重復(fù)的數(shù)據(jù),比如數(shù)據(jù)庫恢復(fù)技術(shù)需要一定的數(shù)據(jù)冗余度。

81.(1)錯誤:if(strcmp((pstr+i),(pstr+j))>o)

正確:if(strcmp(*(pstr+i),*(pstr+j))>0)

(2)錯誤:*(pstr+j)=*P

正確:*(pstr+j)=p

【解析】變量pstr表示的是字符串?dāng)?shù)組的首地址,pstr+i表示的是字符串首地址偏移量為i處的地址。程序中要比較的是字符,因此,“if(strcmp((pstr+i),(pstr+j))>0)”應(yīng)改為“if(strcmp(*(pstr+i),*(pstr+j))>0)”;根據(jù)程序可知,要交換的是字符串的首地址而不是字符串的內(nèi)容,因此,“*(pstr+j)=*p”應(yīng)改為“*(pstr+j)=P”。

82.1intfun(int*s,intt,int*k)2{3Inti;4*k=0;/*k所指的數(shù)是數(shù)組的下5標(biāo)*/6for(i=0;i<t;i++)hif(s[*k]<s[i])*k=i;/*找到數(shù)組中值最大的元素,把該元素的下標(biāo)賦給k所指的數(shù)*/7returns[*k];/*返回數(shù)組的最大元素*/8}<t;i++)<>本題中使用指針變量k作為值最大的元素的下標(biāo)。使用時要注意對k進(jìn)行指針運(yùn)算。程序一開始讓k指向數(shù)組中的第1個元素,即*k=0。通過for循環(huán)與數(shù)組各個元素比較,找到最大值。<></t;i++)2022-2023年四川省自貢市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。

A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

2.表達(dá)式“3.6-5/2+1.2+5%2”的值是()。

A.4.3B.4.8C.3.3D.3.8

3.數(shù)據(jù)庫是()的集合,它具有統(tǒng)一的結(jié)構(gòu)格式并存放于統(tǒng)一的存儲介質(zhì),可被各個應(yīng)用程序所共享

A.視圖B.消息C.數(shù)據(jù)D.關(guān)系

4.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

則執(zhí)行后輸出的結(jié)果為A.A.heB.andC.youD.tomeetme

5.用單鏈表方式存儲的線性表,存儲每個結(jié)點(diǎn)需要兩個域,一個數(shù)據(jù)域,另一個是()。

A.當(dāng)前結(jié)點(diǎn)的所在地址B.后繼結(jié)點(diǎn)的所在地址C.空指針域D.空閑域

6.若有定義“floata=25,b,*p=&b;”,則下列對賦值語句“*p=a;”和“p=&a;”的正確解釋為()。

A.兩個語句都是將變量a的值賦予變量P

B.*p=a是使P指向變量a,而p=&a是將變量的值賦予變量指針P

C.*p=a是將變量a的值賦予變量b,而&a是使P指向變量a

D.兩個語句都是使P指向變量a

7.設(shè)一組初始記錄關(guān)鍵字序列(5,2,6,3,8),以第一個記錄關(guān)鍵字5為基準(zhǔn)進(jìn)行一趟快速排序的結(jié)果為()。

A.2,3,5,8,6B.3,2,5,8,6C.3,2,5,6,8D.2,3,6,5,8

8.第

17

若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

9.若要用函數(shù)fopen打開一個新的二進(jìn)制文件,該文件要既能讀也能寫,則應(yīng)以哪種方式打開文件()。

A.wbB.wb+C.rb+D.rb

10.以下關(guān)于typedef的敘述錯誤的是A.用typedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代表

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

11.

12.

13.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點(diǎn)p的直接后繼,則應(yīng)執(zhí)行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

14.若有定義語句:“intkl一10,k2=20;”,執(zhí)行表達(dá)式(kl=kl>k2)(k2=k2>k1)后,kl和k2的值分別為()。

A.0和1B.0和20C.10和1D.10和20

15.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實(shí)現(xiàn)一種算法

C.程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨(dú)作為一一個c程序文件存在

16.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節(jié)點(diǎn)E的線索化指向節(jié)點(diǎn)()

A.BCB.ACC.DFD.CF

17.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序的運(yùn)行結(jié)果是()。

A.6B.3C.8D.12

18.下列程序的運(yùn)行結(jié)果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

19.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

20.以下不能將s所指字符串正確復(fù)制到所指存儲空間的是()A.do{*t++=*s++;}while(*s);.

B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s){t++;s++}

D.for(i=0,j=0;t[i++]=s[j++];);

二、2.填空題(20題)21.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。

請?zhí)羁铡?/p>

main()

{floata,b,c;

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

if(【】)printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/

}

22.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

23.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

24.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

for(i=0;i,10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

25.若有如下程序:

main()

{ints[]={1,2,3,4,5,6,},*p=s;

printf{"%d,%d\n",*(p+3),*(p+5)}}

則程序運(yùn)行后的輸出結(jié)果是【】。

26.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

27.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實(shí)際上對應(yīng)一個處理模塊。

28.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

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

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

29.下列程序的輸出結(jié)果是【】。

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);

}

30.下面程序是指從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(*p++);}

31.以下函數(shù)的功能是計算s=1+1/2!+1/3!+……+1/n!,請?zhí)羁铡?/p>

doublefun(intn)

{

doubles=0.0,fac=1.0;inti;

for(i=1,i<=n;i++)

{

fac=fac______;

s=s+fac;

}

returns;

}

32.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

33.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

34.以下程序運(yùn)行后的輸出結(jié)果是______。

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

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

}

35.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

36.樹中度為零的結(jié)點(diǎn)稱為______。

37.有以下程序:

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

程序運(yùn)行后的輸出結(jié)果是【】。

38.在對文件進(jìn)行操作的過程中,若要求指針的位置回到文件的開頭,應(yīng)當(dāng)調(diào)用的函數(shù)是【】。

39.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

40.下列程序的輸出結(jié)果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

三、1.選擇題(20題)41.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

42.閱讀下列程序,當(dāng)運(yùn)行函數(shù)時,輸入asdafaaz67,則輸出為

#include<stdio.h>

#include<ctype.h>

#include<string.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=′\0′;i++)

if(str[i]!=′′)str[j++]=str[i];

str[j]=′\0′;

}

main()

{

charstr[81];

intn;

printf("Inputastring:");

gets(str);

puts(str);

fun(str);

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

}

A.asdafaaz67B.asdafaaz67C.asdD.z67

43.在Windows中,啟動應(yīng)用程序的正確的方法是()

A.用鼠標(biāo)指向該應(yīng)用程序圖標(biāo)B.將該應(yīng)用程序窗口最小化成圖標(biāo)C.將該應(yīng)用程序窗口還原D.用鼠標(biāo)雙擊該應(yīng)用程序圖標(biāo)

44.下列說法不正確的是()。

A.調(diào)用函數(shù)時,實(shí)參可以是表達(dá)式

B.調(diào)用函數(shù)時,實(shí)參與形參可以共用內(nèi)存單元

C.調(diào)用函數(shù)時,將實(shí)參的值復(fù)制給形參,使實(shí)參變量和形參變量在數(shù)值上相等

D.調(diào)用函數(shù)時,實(shí)參與形參的類型必須一致

45.與十進(jìn)制數(shù)255相等和二進(jìn)制數(shù)是()

A.11101110B.11111110C.10000000D.11111111

46.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串sir1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

47.設(shè)有說明int(*ptr)[M];其中的標(biāo)識符ptr是______。

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

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

C.一個指向具有M個整型元素的一維數(shù)組的指針

D.具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型變量

48.結(jié)構(gòu)化程序設(shè)計方法在軟件開發(fā)中用于______。

A.需求分析B.詳細(xì)設(shè)計C.可行性分析D.程序設(shè)計

49.下列敘述中不正確的是()。

A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實(shí)質(zhì)上是一個函數(shù)內(nèi)部的局部變量

50.若有“doublea;”,則正確的輸入語句是()。

A.scanf("%1f",A);

B.scanf("%f",&A);

C.scanf("%1f",&A);

D.scanf("%1e",A);

51.下列合法的整型常量的表示是

A.98B.oXdeC.32767D.0xDG

52.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL));程序運(yùn)行后的輸出結(jié)果是()。

A.0B.1C.-1D.NULL沒定義,出錯

53.已知a=15,執(zhí)行fprintf(fp,"%d",a)后,寫入fp指向的文件的是______。

A.15B.1111C.63D.1111

54.有以下程序:main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序運(yùn)行后的輸出結(jié)果是()。

A.zB.0C.元素ch[5]地址D.字符y的地址

55.若有以下定義(設(shè)int類型變量占2個字節(jié))inti=8,j=9:則以下語句:printf("i=%%d,j=%%%d\n",i,j);輸出的結(jié)果是()。

A.i=8,j=9B.i=%d,j=%8C.i=%d,j=%dD.8,9

56.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;……}程序在執(zhí)行了“c=&b;b=&a;”語句后,表達(dá)式“**c”的值是()。

A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址

57.有以下程序#include<string.h>structSTU{inthum;floatTotalScore;};voidf(structSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore-s[1].TotalScore;}main(){structSTUs[2]-{{20041,703},{20042,580}};f(s[0]);printf("%d%3.0f\n",s[0].num,s[0].TotalScore);}程序運(yùn)行后的輸出結(jié)果是

A.20045537B.20044550C.20042580D.20041703

58.對建立良好的程序設(shè)計風(fēng)格,下列描述正確的是()。

A.程序應(yīng)該簡單、清晰、可讀性好B.符號名的命名只需要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無

59.以下程序的功能是進(jìn)行位運(yùn)算:main(){unsignedchara,b;a=7^3;b=~4&3;printf("%d%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是______。

A.43B.73C.70D.40

60.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/

printf("%u\n",x);

}

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

A.-1B.65535C.32767D.0xFFFF

四、選擇題(20題)61.

62.

下列程序的輸出結(jié)果是()。

voidfun(int*X,inty)

{printf("%d%d",*x,*y);*x=3;*y=1;}

main

{intx=1,y=2;

fun(&y,&x);

printf("%d%d",x,y);

}

A.2143B.1212C.1234D.2112

63.

在下列給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。

A.(!E==0)B.(E>0C.D.E<0)E.(E==0)F.(E!=0)

64.下列關(guān)于棧的敘述正確的是()。

A.棧按“先進(jìn)先出”組織數(shù)據(jù),B.棧按“先進(jìn)后出”組織數(shù)據(jù)C.只能在棧底插入數(shù)據(jù)D.不能刪除數(shù)據(jù)

65.

以下程序的輸出結(jié)果是()。

intf(intA)

{returna%2;}

main

{ints[8]={1,3,5,2,4,6},i,d=0;

for(i=0;f(s[8]);i++)d+=s[i];

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

}

A.9B.11C.19D.21

66.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

67.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。

A.

B.

C.

68.

69.(65)軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()

A.模塊間的關(guān)系

B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述

C.軟件層次結(jié)構(gòu)

D.軟件開發(fā)過程

70.在JavaScript語言中,要定義局部變量則可以()。

A.由關(guān)鍵字private在函數(shù)內(nèi)定義

B.由關(guān)鍵字private在函數(shù)外定義

C.由var在函數(shù)內(nèi)定義

D.由關(guān)鍵字var在函數(shù)外定義

71.數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)完整性、安全性定義的語言是()。

A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

72.

73.

74.以下敘述中錯誤的是()。

A.對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B.數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C.當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界”的出錯信息

D.可以通過賦初值的方式確定數(shù)組元素的個數(shù)

75.以下敘述中錯誤的是()。

A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedef可以為各種類型起別名,但不能為變量起別名

76.

77.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

78.數(shù)據(jù)流程圖(DFD)是()。

A.軟件概要設(shè)計的工具B.軟件詳細(xì)設(shè)計的工具C.結(jié)構(gòu)化方法的需求分析工具D.面向?qū)ο蠓椒ǖ男枨蠓治龉ぞ?/p>

79.

80.下列說法不正確的是

A.?dāng)?shù)據(jù)庫減少了數(shù)據(jù)冗余B.?dāng)?shù)據(jù)庫實(shí)現(xiàn)了數(shù)據(jù)的共享

C.?dāng)?shù)據(jù)庫避免了一切數(shù)據(jù)的重復(fù)D.?dāng)?shù)據(jù)庫具有較高的數(shù)據(jù)獨(dú)立性

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對6個字符串按由小到大的順序進(jìn)行排序。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數(shù)fun(),用來求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在k所指向的存儲單元中。例如,輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為6,980。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.B

2.D先計算“5/2”,結(jié)果取整數(shù)值2;然后計算“3.6-2”,結(jié)果與高精度數(shù)據(jù)保持一致,即1.6;再計算“1.6+1.2”,結(jié)果為2.8;接著計算“5%2”,結(jié)果為1;最后計算“2.8

溫馨提示

  • 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

提交評論