2021年福建省龍巖市全國計算機等級考試C語言程序設計_第1頁
2021年福建省龍巖市全國計算機等級考試C語言程序設計_第2頁
2021年福建省龍巖市全國計算機等級考試C語言程序設計_第3頁
2021年福建省龍巖市全國計算機等級考試C語言程序設計_第4頁
2021年福建省龍巖市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年福建省龍巖市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.寫出a*(b-c*d)+e-f/g*(h+i*j-k)的逆波蘭表達式()。

A.a(b-c*d)*+e-(f/g(h+i*j-k)*)

B.a(b-(cd*))*+e-(fg/(h+ij*-k)*)

C.a(bcd*-)*+e-(fg/hij*+k-*)

D.abcd*-*e+fg/hij*+k-*-

2.

3.

4.設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

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

5.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運算是()。

A.head(tail(tail(L)))

B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))

D.head(tail(head(tail(tail(L)))))

6.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當二分查找值為126的元素時,檢索成功需進行的比較次數(shù)為()。

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

7.在一個具有n個結點的有序單鏈表中插入一個新結點并仍然保持有序的時間復雜度是()。

A.O(1)B.O(n)C.O(n2)D.O(nlog2n)

8.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

9.

10.下列不屬于軟件調試技術的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法

11.有1000個無序的整數(shù),希望使用最快的方式找出前50個最大的,最佳的選擇是()

A.冒泡排序B.基數(shù)排序C.堆排序D.快速排序

12.以下關于結構化程序設計的敘述中正確的是()。

A.一個結構化程序必須同時由順序、分支、循環(huán)三種結構組成

B.結構化程序使用goto語句會很便捷

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

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

13.下列程序執(zhí)行輸出的結果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

14.若有定義“inta;longb;doublex,y;”,則以下選項中正確的表達式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

15.

16.下列程序的輸出結果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

17.下列關于宏的敘述中正確的是()。

A.宏替換沒有數(shù)據(jù)類型限制

B.宏定義必須位于源程序中所有語句之前

C.宏名必須用大寫字母表示

D.宏調用比函數(shù)調用耗費時間

18.

19.數(shù)據(jù)結構通常研究數(shù)據(jù)的()及運算。

A.物理結構和邏輯結構B.存儲和抽象C.理想和抽象D.理想與邏輯

20.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b='b';

C.noata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

二、2.填空題(20題)21.派生類對基類繼承控制訪問有三種。派生類可以定義其基類中不具備的【】。

22.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do{k*=n%10*r;n/=10;r++;}while(n);

23.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]\'\0';

}

24.以下程序的輸出結果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

25.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

pfintf("i=%d,j=%d\n",i,j);

}

要求給i賦10,給j賦20,則應該從鍵盤輸入【】。

26.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

27.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

28.下述函數(shù)統(tǒng)計一個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

29.以下程序運行后的輸出結果是【】。

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

for(k=0;k<=7;k++)

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

30.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=a[i];

}

}

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

}

31.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

32.數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

33.以下程序運行后的輸出結果是()。

#include

char*ss(char*s)

{char*p,t;

P=s+1;t=*s;

while(*p){*(P-1)=*P;P++;}

*(P-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

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

}

34.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結果。

35.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:

abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

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

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

36.以上程序運行后的輸出結果是【】。

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

37.若有以下程序

main()

{chara;

a='H'-'A'+'0';

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

}

執(zhí)行后輸出結果是【】。

38.以下程序的輸出結果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

39.以下程序的功能是將字符串s中所有小寫字母'a'刪去,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

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

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

40.用以下程序把從鍵盤輸入的字符存放到一個文件中,用字符#作為結束符,請按題意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

while((ch=getchar())!='#')

fputc(【】);

fclose(fp);

}

三、1.選擇題(20題)41.有以下程序:voidswap1(int*a,int*b){int*c=a;a=b,b=c;}voidswap2(int*a,int*b){intc=*a;*a=*b,*b=c;}main(){inta=10,b=15;swap1(&a,&b);printf("%d,%d,",a,b);a=10,b=15;swap2(&a,&b);printf("%d,%d",a,b);}其輸出結果為______。

A.15,10,10,15B.15,10,15,10C.10,15,10,15D.10,15,15,10

42.有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);ptintf("%s%s\n",p,q);}若從鍵盤輸入abcdef<回車>,則輸出的結果是()。

A.defdefB.abcdefC.abcdD.dd

43.main()

{inta=4,b=5,c;

ifa<B)

{c=a*b;printf("%d,%d,%d\n",b,a,c);}

else

{c=b/a;printf("%d,%d,%d\n",b,a,c);}

}

A.4,5,12B.20C.5,4,20D.12

44.下述函數(shù)功能是_______。intfun(char*x){char*y=x;while(*y++);returny-s-1;}

A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接到字符串y后面

45.若有程序fun(inta,intb){staticintc=0;c+=a+b;returmc;}main(){intx=5,y=3,z=7,r;r=fun((y,x+y),z);r=fun(x,y);printf("%d\n",r);}

A.23B.15C.19D.18

46.若有定義intx,y;并已正確給變量賦值,則下列選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

47.若變量已正確說明為int類型,要通過語句scanf("%d%d%d",&a,&b,&c);給a賦值3,b賦值5,c賦值8,不正確的輸入形式是

A.3<回車>5<回車>8<回車>

B.3,5,8<回車>

C.3<回車>58<回車>

D.35<回車>8<回車>

48.下列字符串不屬于標識符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

49.若有如下語句:structa{charx[10]inty;}s,*t;t=&s;則對結構體變量s中的成員y的正確引用是()

A.a.y;B.t->y;C.t.y,D.*t->y;

50.以下4個程序中,完全正確的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

51.下面說明不正確的是

A.chara[10]="china";

B.chara[10],*p=a;p="china"

C.char*a;a="china";

D.chara[10],*P;P=a="china"

52.數(shù)據(jù)庫設計包括兩個方面的設計內容,它們是()

A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計

53.若有以下程序:#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序的輸出結果是()。

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

54.執(zhí)行以下的程序段后,m的值是______。inta[2][3]={1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.3不確定

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

A.main函數(shù)必須放在C程序的最后面

B.main函數(shù)必須放在C程序的最前面

C.main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從程序開頭執(zhí)行的

D.main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從main函數(shù)開始的

56.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結果是()。

A.12B.13C.14D.15

57.若有說明語句:charc=′\72′;則變量c

A.包含1個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定

58.下面程序的輸出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

59.______是構成C語言程序的基本單位。

A.函數(shù)B.過程C.子程序D.子例程

60.在下面語句中,其含義為“p為指向含n個元素的一維數(shù)組的指針變量”的定義語句是()

A.intp[n]B.int*p();C.int*p(n);D.int(*p)[n]

四、選擇題(20題)61.

62.有如下程序段

#include"stdio.h"

voidfun(int*a,int*b,int*c,int*d,int*e)

{inti,j,k,m;

for(i=0;i<*a;i++)

for(j=0;j<*b;j++)

for(k=0;k<*c;k++)

for(m=0;m<*d;m++)

++*e;

}

main()

{inta=10,b=10,c=10,d=10,e=0;

fun(&a,&b,&c,&d,&e);

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

則程序段的輸出結果是

A.10000B.1000

C.100D.0

63.

64.有以下函數(shù)該函數(shù)的功能是()。

A.計算s所指字符串占用內存字節(jié)的個數(shù)

B.比較兩個字符串的大小

C.計算s所指字符串的長度

D.將s所指字符串復制到字符串t中

65.若有定義:doublea=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

66.已知字符'A'的ASCⅡ代碼值是65,字符變量c1的直是'A',c2的值是'D'。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結果是()。

A.A.A,BB.A,68C.65,66D.65,68

67.表達式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

68.

69.在滿足實體完整性約束的條件下()。

A.一個關系中應該有一個或多個候選關鍵字

B.一個關系中只能有一個候選關鍵字

C.一個關系中必須有多個候選關鍵字

D.一個關系中可以沒有候選關鍵字

70.

71.有以下程序:

程序運行后的輸出結果是()。

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

72.有以下程序:

#definef(x)(x*x)main

{

inti1,i2;

i1=f(8)/(4);i2=f(4+4)/f(2+2);

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

}

程序運行后的輸出結果是()。

A.64,28B.4,4C.4,3D.64,64

73.設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

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

74.

75.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

執(zhí)行后的輸出結果是()。

A.1B.2C.4D.死循環(huán)

76.

77.

78.以下四個程序中,完全正確的是()。

79.

80.有以下程序

五、程序改錯題(1題)81.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入前三個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<strin9.h>#include<stdi0.h>#defineM80voidproc(char*arr){inti,j,n;charch;n=strlen(arr):for(i=1;i<n;i++)//****found****{c=arr[i];j=i-1;while((j>=o)&&(ch<arr[j])){arr[j+1]=arr[j];j--;}arr[j+1]=ch;}}voidmain{chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";printf("Theoriginalstring:%s\n",a);proc(a);printf("Thestringaftersortin9:%s\n\n",a);}

六、程序設計題(1題)82.編寫函數(shù)fun,其功能是:將s所指字符串中除了下標為奇數(shù),同時ASCH碼值也為奇數(shù)自q字符之外。其余所有字符全部刪除,串中剩余字符所形成的一個新串放在所指的數(shù)組中。例如,若s所指字符串的內容為“ABCDEFGl2345”,其中字符A的ASCIl碼值為奇數(shù),但所在元素的下標為偶數(shù),因此需要刪除;而字符l的ASCIl碼值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應當刪除,其他依此類推。最后t所指數(shù)組中的內容應為“135”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.D

2.A

3.C

4.B解析:條件表達式的形式為:“表達式1?表達式2:表達式3”。其含義為:當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++:i++;”。

5.D

6.C

7.B

8.B題目中的選項都以轉義字符“\\”開頭,“\\ddd”表示3位八進制數(shù)代表的一個ASCII字符,“\\xhh”表示2位十六進制數(shù)代表的一個ASCII字符。選項A中“089”是不合法的八進制數(shù),錯誤;選項C、D中“\\0X”或“\\0x”不合法,錯誤;選項B表示八進制數(shù)012代表的ASCII字符,正確。本題答案為B選項。

9.C

10.B解析:我們嚴格區(qū)分調試與測試,調試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。所以答案是選項B。A、C、D都是具體的程序調試方法,而B是宏觀的程序測試方法。測試有單元測試、集成測試、確認測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。

11.D

12.C解析:結構化程序設計是指將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,與具體的語句結構無關。Goto語句的濫用會導致程序的可讀性降低。三種基本結構構成的程序依然可以解決大規(guī)模的問題,只是不利于復用。

13.B解析:本題考查函數(shù)調用時的參數(shù)傳遞。在函數(shù)調用時,static變量在函數(shù)調用結束后所做的所有變化均保持(即上次調用結束時的值)。

在主函數(shù)中,第一次循環(huán),i=0,調用k-f(a++)=f(2),調用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環(huán),i=1,調用k=f(a++)=f(3),調用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

14.BC語言中沒有“<>”運算符,所以A選項錯誤。運算符“%”的左右兩個操作數(shù)必須為整型數(shù)據(jù),所以B選項正確。表達式“a*y”的結果為double型,所以C選項錯誤。不能將值賦給像“x+y”這樣的表達式,所以D選項錯誤。故本題答案為B選項。

15.C

16.C本題考查do-while循環(huán),在fun函數(shù)中,首先定義了靜態(tài)變量i=0,do-while循環(huán)要實現(xiàn)的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規(guī)則重新給b數(shù)組賦值。在主函數(shù)中,通過調用fun函數(shù),按上面的規(guī)則對數(shù)組a重新賦值,最后輸出數(shù)組a。

17.A宏定義寫在函數(shù)的花括號外,作用域為其后的程序,通常在文件的最開頭,所以B選項錯|誤。宏名一般用大寫字母,但不是必須用大寫字母,所以C選項錯誤。宏展開不占運行時間,只占編譯時間,函數(shù)調用占運行時間(分配內存、保留現(xiàn)場、值傳遞、返回值),所以D選項錯誤。故本題答案為A選項。

18.D

19.A

20.B解析:本題考查變量的定義方法。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和D)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數(shù)據(jù),不能指向指針變量b,故選項C)錯誤。

21.數(shù)據(jù)和操作數(shù)據(jù)和操作

22.00解析:本題考查的是do厀hile循環(huán)。第一次執(zhí)行循環(huán)體,因為k=1,r=1,n=20,所以k=1*20%10*1=0,n=20/10=2,r=2;第二次執(zhí)行循環(huán)體,k=0*2%10*2=0,n=10/10=1,r=3;第三次執(zhí)行循環(huán)體,k=0*1%10*3=0,n=1/10=0,r=4,所以k的值為0。

23.length++i<lengthlength++\r\ni<length解析:第一個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是第i個到第i+n或最后一個間的所有字符。刪除前,應判斷i<=length。由于已經(jīng)進行了-i運算,故實際應填入i<length。

24.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*MCRA(j)+MCRA(i),再用j和i替換MCRA(m)中的參數(shù)m,變成2*2*j+2*i=2*2*3+2*2=16。

25.i=0j=20i=0,j=20解析:scanf()函數(shù)的使用,該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應要輸入的變量,所以說本題中應該原樣輸入i=,j=,后面分別給變量0和20,所以說空格處應該填入i=0,j=20。

26.1919解析:根據(jù)二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數(shù)為18,故葉子結點數(shù)為18+1=19個。

27.調試調試

28.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數(shù)的算法中,本題的flag是為了記錄一個單詞是否結束。第13空應填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第14空應填flag=0或*(s-1)='';最后一個空格需填寫的是返回的單詞的個數(shù),即num。

29.gaegae解析:本題定義了兩個字符串數(shù)組a[],b[],字符型指針變量p1和p2,且分別指向字符串數(shù)組a和b,抽打for循環(huán),當if(*(p1+k)==*(p2+k))條件為真,執(zhí)行輸出*(p1+k)對應的字符。即當k=0時,*(p1+k)對應的字符串數(shù)組a中的字符L,*(p2+k)對應的字符串數(shù)組b中字符P,因此if(*(p1+k)==*(p2+k))條件為假,不執(zhí)行printf語句,依此類推,將字符串數(shù)組a和b中對應位置上的字符——比較,如果對應位置上的字符相同,則輸出該字符。

30.&a[i]&a[i]解析:主要考查函數(shù)scanf的用法.應填數(shù)組a的元素的地址。

31.從定義到本源文件結束從定義到本源文件結束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結束。

32.概念設計階段(數(shù)據(jù)庫概念設計階段)概念設計階段(數(shù)據(jù)庫概念設計階段)

33.bcdefgha

34.驅動模塊驅動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調用或驅動,同時被測試模塊還要去調用其他模塊,前者稱為驅動模塊,后者稱為承接模塊。其中驅動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結果;承接模塊的作用是代替被測模塊,調用其他模塊。

35.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符數(shù)組的初始化,字符串的輸入和輸出的應用。C語言沒有字符串變量,字符串不是存放在一個變量中而是存放在一個字符型數(shù)組中,因此為了存放字符串,常常在程序中定義字符型數(shù)組;字符串存放在字符數(shù)組中,但字符數(shù)組與字符串可以不等長,C語言規(guī)定以“\\0”字符作為字符串結束標志。

本題中,chars[80],d[80];定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是c語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內存中以相應的ASCII碼存放,所以只需比較相應的ASCII碼值是否在48('0'的ASCII代碼)與57('9'的ASCII代碼)之間,或者直接與'0','9'進行比較,如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進行下一字符的比較,直至s結束(即'0'的出現(xiàn))。將“'\\0'”字符作為字符串d結束標志,最后調用puts函數(shù)輸出d。所以在空格處應填入比較語句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

36.5252解析:do...while語句的形式為:

do

{

語句;

}while(條件表達式)

當條件表達式為非零時,繼續(xù)執(zhí)行循環(huán)體,直到條件表達式為零時退出循環(huán)。

37.77解析:字符型數(shù)據(jù)可作為整型參加算術運算,其值為其對應的ASCII碼。'H'-'A',的結果是7,加'0'后是'7'的ASCII碼,所以輸出的是字符'7'。

38.指針P指向數(shù)組a的首地址,執(zhí)行語句p++;后p指向數(shù)組a的第2個元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

39.s[i]!='a's[i]!='a'解析:本題是要將字符串s中所有小寫字母'a'刪去,所以if語句的判斷條件應該是字符串s中的字符和字符'a'不相同的時候,就把它仍然存在原來的數(shù)組中,若是和字符'a'相同,就不再保存它。

40.fname"#"exit(0)chfp

41.D解析:C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,只由實參傳給形參,而不能由形參傳回來給實參。在內函數(shù)調用結束后,形參單元被釋放,實參單元仍保留并維持原值。本題中swapl()函數(shù)中,雖然改變了形參指針的值,但實參指針的值并沒有改變,所以執(zhí)行第一個printf后應輸出10,15,swap2()函數(shù)實現(xiàn)了交換兩個變量a和b的值,因此執(zhí)行第三個printf后輸出交換后的值15,10,所以本題答案為D。

42.A解析:本題首先定義兩個字符型指針變量p和q,通過malloc()函數(shù)申請20個字符的存儲空間,并把它的首地址賦給p,再把p的值賦給小p和q指向同一個存儲區(qū)。在scanf()語句中讀取字符串到p和q指向的字符串,先把abc讀取到p指向的存儲區(qū)中,第一個空格是結束標記,第二個空格是分隔符,再把def存放到q指向的存儲區(qū),把原先的內容覆蓋。所以p和q指向的存儲區(qū)內容是def,故最后輸出的def,def。4個選項中A正確。

43.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b成立,執(zhí)行下列的復合語句,得c=a*b=20,b、a的值不變。

44.A解析:在函數(shù)體內定義一字符型指針并指向形參,然后遍歷其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的長度。

45.A解析:static聲明的外部變量只限于被本文引用,而不能被其他文件引用。用static來聲明一個變量的作用有:①對局部變量用static聲明,則為該變量分配的空間在整個程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。調用第一個fun,其兩個實參的值為(3,5+3)與7即8與7,在函數(shù)fun執(zhí)行結束返回15。第二次調用fun時,由于static為靜態(tài)類型,其值保留,執(zhí)行fun(5,3)后,其返回值為23,故選A。

46.C

47.B解析:本題中,“%d%d%d”表示按整型數(shù)形式輸入數(shù)據(jù),輸入數(shù)據(jù)時,在兩個數(shù)據(jù)之間以一個或多個空格間隔,也可以用回車鍵或Tab鍵。選項B)中不應該使用逗號。

48.D

49.B解析:本題中的a是結構體名,s是結構體a的變量,t是結構體a的指針。通過變量直接訪問結構體成員應該使用“.”運算符,而通過指針間接訪問結構體成員應該使用“->”運算符。故本題的正確答案為B。

50.B解析:選項A在定義main()函數(shù)時,函數(shù)頭后面多了一個分號,故選項A不正確;C語言中的注釋是不能嵌套的,故選項C不正確:選項D在使用預編譯指令#include時漏掉了#號,所以也是錯誤的。故應該選擇B。

51.D解析:C語言中操作一個字符串常量的方法有:①將字符串常量存放在一個字符數(shù)組之中;②用字符指針指向字符串,然后通過字符指針來訪問字符串存儲區(qū)域。當字符串常量在表達式中出現(xiàn)時,根據(jù)數(shù)組的類型轉換規(guī)則,將其轉換成字符指針。

本題D)項中錯誤的關鍵是對數(shù)組初始化時,可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。

52.A解析:模式設計和內模式設計是概念設計的兩種方法。物理設計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結構和存取方法進行設計,從而實現(xiàn)從邏輯結構到物理結構的轉換。從系統(tǒng)開發(fā)的角度來看,結構特性設計和行為特性-設計是數(shù)據(jù)庫應用系統(tǒng)所具有的兩個特性。結構特性的設計,設計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。

53.D解析:在C語言中,數(shù)組元素下標是從0開始的;指針變量p指向數(shù)組的首地址。for循環(huán)語句中,指針變量p始終指向數(shù)組的首地址,因而執(zhí)行循環(huán)賦值語句后數(shù)組各元素的值均變?yōu)?。

54.B解析:程序中定義了一個指向整型變量的指針變量,并對其賦值為二維整型數(shù)組a的首元素的地址。p[4]等價于*(p+4),即二維數(shù)組a中第四個元素的值,而a是一個2*3的二維數(shù)組,其第四個元素為a[1][1],即5。

55.D解析:每個C程序有且只有一個主函數(shù)(main),且程序必須從main()函數(shù)開始執(zhí)行。別外main()函數(shù)可以放在程序中的任意位置。

56.D解析:在表達式r=func(func(x,y),z)中,func(x,y)是第一次調用函數(shù),它的返回值7作為func函數(shù)第二次調用的實參,結果為15。

57.A解析:C語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個'\\'開頭的字符。其中,'\\ddd'表示用ASCII碼(八進制數(shù))表示一個字符,本題中的charc=\'\\72\'即表示占一個字符的變量c的ASCII碼值。

58.D解析:在C語言格式字符的輸出中,“%d”是以帶符號的十進制形式輸出整數(shù);“%60”是以8進制無符號形式輸出整數(shù)(不輸出前導符o);“%x”是以16進制無符號形式輸出整數(shù)(不輸出前導符Ox)。

59.A解析:C程序是由函數(shù)構成的?!獋€C源程序至少包含—個main函數(shù),也可以包含—個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是C程序的基本單位。

60.D

61.A

62.A在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有五個整型的指針形參變量,然后通過一個四層循環(huán)來操作++*e;語句,由于*與++運算符的優(yōu)先級一樣,它們都是自右至左結合的操作,因此,++*e等價于++(*e),這個操作可描述為:先用地址取值,然后對其進行自加,由于是通過傳址傳值法的,因此,還需要將相加后的結果傳遞到實參中。

在主函數(shù)中,定義五個整型變量并分別賦初值,然后調用fun函數(shù),傳遞的參數(shù)是剛定義的五個整型變量的地址,采用的是傳址傳值法,能為實參帶回一個結果值。從fun函數(shù)中我們不難看出,當變量a,b,c,d分別為10時,循環(huán)總共執(zhí)行10000次,即自加進行了10000次,而且每次自加后都改變了實參的結果。因此,循環(huán)結束后,變量e的值為10000。本題的正確答案是A。

63.B

64.C首先char*s接受一個字符型數(shù)組的首地址并將這個首地址賦給另一個字符型指針char*t,while(*t++)不斷循環(huán),直到*t為‘\\o’,再將t一1,這時字符指針t指向字符串的最后一個字符,又因為s指向字符數(shù)組的首地址即字符串的首地址,所以return(t--s)便是返回字符數(shù)組中字符串的長度。故本題答案為C)。

65.B取模運算符“%”,二元運算符,具有左結合性,參與運算的量均為整型。選項B中的a變量是doable實型,所以8不符合規(guī)定。

66.C在C語言中,用整型格式輸出字符時,輸出的是其ASCII碼值。

67.A本題主要考查按位求反運算:十六進制整型常量的形式是以數(shù)字Ox開頭的十六進制字符串;位求反運算的規(guī)則是:將二進制表示的運算對象按位取反,即將1變0,將0變1。

68.A

69.A【答案】:A

【知識點】:實體完整性與候選關鍵字

【解析】:在滿足數(shù)據(jù)完整性約束的條件下,一個關系可以有一個或多個候選關鍵字,但至少有一個候選關鍵字,故選A。

70.B

71.D本題考查位運算符,題目中將a向左移兩位,左移兩位表示乘以4,所以答案為8,選項D正確。

72.C本題考套的是宏定義。對帶參數(shù)的宏的

展開只是將語句中宏名后面括號內的實參字符串代替#define命令行中的形參。本題中“i1=f(8)/f(4)”用"#definef(x)(x*x)"代替得i1=(8*8)/(4*4),結果為4;

"i2=f(4+4)/f(2+2)"用“#definef(x)(x*x)”代替得i2=(4+4+4+4)/(2+2+2+2),求得結果為3。故本題輸出的值為4,3

73.B解析:條件表達式的形式為:“表達式1?表達式2:表達式3”。其含義為:當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++:i++;”。

74.D

75.A解析:因為在while循環(huán)的循環(huán)條件中,一運算符是前綴形式,所以表達式—k的值是k自減之后的值。程序開始時,將k的值初始化為5,然后進入while循環(huán),因為—k的值為4(非零),所以執(zhí)行循環(huán)體輸出k-=3的值1,此時k的值也變?yōu)?。第2次執(zhí)行循環(huán)條件,—k的值為0,所以循環(huán)結束。因此最后輸出的結果是1,故應該選擇A。

76.B\r\n

77.B

78.BA)選項中,“main()”函數(shù)后面不能加分號。c語言中注釋語句的注釋方法是:/*宰注釋內容*/或,/注釋一行,且“/*”和“*/”不能嵌套使用,因此c)錯誤。D)選項中預編譯命令include<stdi0.h>前丟掉了“#”號。因此選擇B)。

79.D

80.A第一次循環(huán)返回5+5為l0,第二次循環(huán)返回l4+14為28,所以選擇A)。

81.錯誤:c=arr[i];正確:ch=arr[i];【解析】由函數(shù)定義可知,函故proc只定義了變量ch,沒有定義變量C。因此,“c=arr[i]:”應改為“ch=arr[i];”。

82.

用循環(huán)遍歷字符串,通過if語句將下標和ASCIl碼都為奇數(shù)的字符保存到數(shù)組中,在字符串末尾加上結束標識符。2021年福建省龍巖市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.寫出a*(b-c*d)+e-f/g*(h+i*j-k)的逆波蘭表達式()。

A.a(b-c*d)*+e-(f/g(h+i*j-k)*)

B.a(b-(cd*))*+e-(fg/(h+ij*-k)*)

C.a(bcd*-)*+e-(fg/hij*+k-*)

D.abcd*-*e+fg/hij*+k-*-

2.

3.

4.設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

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

5.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運算是()。

A.head(tail(tail(L)))

B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))

D.head(tail(head(tail(tail(L)))))

6.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當二分查找值為126的元素時,檢索成功需進行的比較次數(shù)為()。

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

7.在一個具有n個結點的有序單鏈表中插入一個新結點并仍然保持有序的時間復雜度是()。

A.O(1)B.O(n)C.O(n2)D.O(nlog2n)

8.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

9.

10.下列不屬于軟件調試技術的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法

11.有1000個無序的整數(shù),希望使用最快的方式找出前50個最大的,最佳的選擇是()

A.冒泡排序B.基數(shù)排序C.堆排序D.快速排序

12.以下關于結構化程序設計的敘述中正確的是()。

A.一個結構化程序必須同時由順序、分支、循環(huán)三種結構組成

B.結構化程序使用goto語句會很便捷

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

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

13.下列程序執(zhí)行輸出的結果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

14.若有定義“inta;longb;doublex,y;”,則以下選項中正確的表達式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

15.

16.下列程序的輸出結果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

17.下列關于宏的敘述中正確的是()。

A.宏替換沒有數(shù)據(jù)類型限制

B.宏定義必須位于源程序中所有語句之前

C.宏名必須用大寫字母表示

D.宏調用比函數(shù)調用耗費時間

18.

19.數(shù)據(jù)結構通常研究數(shù)據(jù)的()及運算。

A.物理結構和邏輯結構B.存儲和抽象C.理想和抽象D.理想與邏輯

20.以下定義語句中正確的是

A.inta=b=0;

B.charA=65+1,b='b';

C.noata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

二、2.填空題(20題)21.派生類對基類繼承控制訪問有三種。派生類可以定義其基類中不具備的【】。

22.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do{k*=n%10*r;n/=10;r++;}while(n);

23.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]\'\0';

}

24.以下程序的輸出結果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

25.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

pfintf("i=%d,j=%d\n",i,j);

}

要求給i賦10,給j賦20,則應該從鍵盤輸入【】。

26.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

27.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

28.下述函數(shù)統(tǒng)計一個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

29.以下程序運行后的輸出結果是【】。

main()

{

chara[]="Language",b[]="Programe";

char,p1,*p2;

intk;

p1=a,p2=b;

for(k=0;k<=7;k++)

if*(p1+k)==*(p2+k))printf("%c",*(p1+k));

}

30.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=a[i];

}

}

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

}

31.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

32.數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

33.以下程序運行后的輸出結果是()。

#include

char*ss(char*s)

{char*p,t;

P=s+1;t=*s;

while(*p){*(P-1)=*P;P++;}

*(P-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

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

}

34.在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結果。

35.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:

abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

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

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

36.以上程序運行后的輸出結果是【】。

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

37.若有以下程序

main()

{chara;

a='H'-'A'+'0';

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

}

執(zhí)行后輸出結果是【】。

38.以下程序的輸出結果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

39.以下程序的功能是將字符串s中所有小寫字母'a'刪去,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

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

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

40.用以下程序把從鍵盤輸入的字符存放到一個文件中,用字符#作為結束符,請按題意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

while((ch=getchar())!='#')

fputc(【】);

fclose(fp);

}

三、1.選擇題(20題)41.有以下程序:voidswap1(int*a,int*b){int*c=a;a=b,b=c;}voidswap2(int*a,int*b){intc=*a;*a=*b,*b=c;}main(){inta=10,b=15;swap1(&a,&b);printf("%d,%d,",a,b);a=10,b=15;swap2(&a,&b);printf("%d,%d",a,b);}其輸出結果為______。

A.15,10,10,15B.15,10,15,10C.10,15,10,15D.10,15,15,10

42.有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);ptintf("%s%s\n",p,q);}若從鍵盤輸入abcdef<回車>,則輸出的結果是()。

A.defdefB.abcdefC.abcdD.dd

43.main()

{inta=4,b=5,c;

ifa<B)

{c=a*b;printf("%d,%d,%d\n",b,a,c);}

else

{c=b/a;printf("%d,%d,%d\n",b,a,c);}

}

A.4,5,12B.20C.5,4,20D.12

44.下述函數(shù)功能是_______。intfun(char*x){char*y=x;while(*y++);returny-s-1;}

A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接到字符串y后面

45.若有程序fun(inta,intb){staticintc=0;c+=a+b;returmc;}main(){intx=5,y=3,z=7,r;r=fun((y,x+y),z);r=fun(x,y);printf("%d\n",r);}

A.23B.15C.19D.18

46.若有定義intx,y;并已正確給變量賦值,則下列選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

47.若變量已正確說明為int類型,要通過語句scanf("%d%d%d",&a,&b,&c);給a賦值3,b賦值5,c賦值8,不正確的輸入形式是

A.3<回車>5<回車>8<回車>

B.3,5,8<回車>

C.3<回車>58<回車>

D.35<回車>8<回車>

48.下列字符串不屬于標識符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

49.若有如下語句:structa{charx[10]inty;}s,*t;t=&s;則對結構體變量s中的成員y的正確引用是()

A.a.y;B.t->y;C.t.y,D.*t->y;

50.以下4個程序中,完全正確的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

51.下面說明不正確的是

A.chara[10]="china";

B.chara[10],*p=a;p="china"

C.char*a;a="china";

D.chara[10],*P;P=a="china"

52.數(shù)據(jù)庫設計包括兩個方面的設計內容,它們是()

A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計

53.若有以下程序:#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序的輸出結果是()。

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

54.執(zhí)行以下的程序段后,m的值是______。inta[2][3]={1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.3不確定

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

A.main函數(shù)必須放在C程序的最后面

B.main函數(shù)必須放在C程序的最前面

C.main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從程序開頭執(zhí)行的

D.main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從main函數(shù)開始的

56.有如下程序:#include<stdio.h>intfunc(inta,intb){return(a+b):}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結果是()。

A.12B.13C.14D.15

57.若有說明語句:charc=′\72′;則變量c

A.包含1個字符B.包含2個字符C.包含3個字符D.說明不合法,c的值不確定

58.下面程序的輸出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

59.______是構成C語言程序的基本單位。

A.函數(shù)B.過程C.子程序D.子例程

60.在下面語句中,其含義為“p為指向含n個元素的一維數(shù)組的指針變量”的定義語句是()

A.intp[n]B.int*p();C.int*p(n);D.int(*p)[n]

四、選擇題(20題)61.

62.有如下程序段

#include"stdio.h"

voidfun(int*a,int*b,int*c,int*d,int*e)

{inti,j,k,m;

for(i=0;i<*a;i++)

for(j=0;j<*b;j++)

for(k=0;k<*c;k++)

for(m=0;m<*d;m++)

++*e;

}

main()

{inta=10,b=10,c=10,d=10,e=0;

fun(&a,&b,&c,&d,&e);

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

則程序段的輸出結果是

A.10000B.1000

C.100D.0

63.

64.有以下函數(shù)該函數(shù)的功能是()。

A.計算s所指字符串占用內存字節(jié)的個數(shù)

B.比較兩個字符串的大小

C.計算s所指字符串的長度

D.將s所指字符串復制到字符串t中

65.若有定義:doublea=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

66.已知字符'A'的ASCⅡ代碼值是65,字符變量c1的直是'A',c2的值是'D'。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結果是()。

A.A.A,BB.A,68C.65,66D.65,68

67.表達式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

68.

69.在滿足實體完整性約束的條件下()。

A.一個關系中應該有一個或多個候選關鍵字

B.一個關系中只能有一個候選關鍵字

C.一個關系中必須有多個候選關鍵字

D.一個關系中可以沒有候選關鍵字

70.

71.有以下程序:

程序運行后的輸出結果是()。

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

72.有以下程序:

#definef(x)(x*x)main

{

inti1,i2;

i1=f(8)/(4);i2=f(4+4)/f(2+2);

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

}

程序運行后的輸出結果是()。

A.64,28B.4,4C.4,3D.64,64

73.設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

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

74.

75.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

執(zhí)行后的輸出結果是()。

A.1B.2C.4D.死循環(huán)

76.

77.

78.以下四個程序中,完全正確的是()。

79.

80.有以下程序

五、程序改錯題(1題)81.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入前三個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<strin9.h>#include<stdi0.h>#defineM80voidproc(char*arr){inti,j,n;charch;n=strlen(arr):for(i=1;i<n;i++)//****found****{c=arr[i];j=i-1;while((j>=o)&&(ch<arr[j])){arr[j+1]=arr[j];j--;}arr[j+1]=ch;}}voidmain{chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";printf("Theoriginalstring:%s\n",a);proc(a);printf("Thestringaftersortin9:%s\n\n",a);}

六、程序設計題(1題)82.編寫函數(shù)fun,其功能是:將s所指字符串中除了下標為奇數(shù),同時ASCH碼值也為奇數(shù)自q字符之外。其余所有字符全部刪除,串中剩余字符所形成的一個新串放在所指的數(shù)組中。例如,若s所指字符串的內容為“ABCDEFGl2345”,其中字符A的ASCIl碼值為奇數(shù),但所在元素的下標為偶數(shù),因此需要刪除;而字符l的ASCIl碼值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應當刪除,其他依

溫馨提示

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

評論

0/150

提交評論