2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計_第1頁
2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計_第2頁
2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計_第3頁
2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計_第4頁
2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf(“%d”,--y);}程序的運行結果是()。

A.852B.963C.741D.875421

2.以下程序的輸出結果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}

A.650B.1470C.5430D.輸出值不定

3.以下敘述中正確的是

A.用C程序實現(xiàn)的算法必須要有輸入和輸出操作

B.用C程序實現(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序實現(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序實現(xiàn)的算法可以既沒有輸入也沒有輸出

4.有以下程序段當執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

5.定義int*swap()指的是______。

A.一個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函數(shù)swap()

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

D.以上說法均錯

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

A.程序設計的任務就是編寫程序代碼并上機調試

B.程序設計的任務就是確定所用數(shù)據(jù)結構

C.程序設計的任務就是確定所用算法

D.以上三種說法都不完整

7.按照“先進后出”原則組織數(shù)據(jù)的結構是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

8.計算機系統(tǒng)的組成是______。

A.主機、外設B.運算器、控制器C.硬件系統(tǒng)和軟件系統(tǒng)D.CPU、內存儲器

9.有下列程序:程序執(zhí)行后的輸出結果是()。

A.654321

B.65432

C.65453452

D.654534521

10.直接選擇排序的時間復雜度為()。(n為元素個數(shù))

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

11.一個有n個頂點的連通無向圖至少有()條邊。

A.n-1B.nC.n+1D.n+2

12.設有定義“inta;floatb;”,執(zhí)行“scanf(“%2d%f”,&a,&b);”語句時,若從鍵盤輸入876543.0并按<Enter>鍵,則a和b的值分別是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

13.有以下程序:#include<stdio.h>main(){FILE*f;f=fopen(“fllea.txt”,“w”);fprintf(f,“abc”);fclose(f);}若文本文件filea.txt中原有內容為hello,則運行以上程序后,文件filea.txt中的內容為()。

A.abcloB.abcC.helloabcD.abchello

14.以下不能將s所指字符串正確復制到所指存儲空間的是()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++];);

15.有以下程序:#include<stdio.h>#include<strin9.h>main(){printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}程序運行后的輸出結果是()。A.3B.8C.4D.9

16.

17.以下程序的運行結果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

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

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

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

19.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執(zhí)行后的輸出結果是A.A.45B.20C.25D.36

20.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

二、2.填空題(20題)21.關系表達式x<y<z,用C語言的表達式為【】。

22.若有定義:intx=1,y=2;floata=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達式的值為()。

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

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

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

s[j]='\0';

}

24.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

25.數(shù)據(jù)庫三級模式體系結構的劃分,有利于保持數(shù)據(jù)庫的【】。

26.C語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個注釋以【】分別作為開始和結束。

27.算法的復雜度主要包括空間復雜度和______復雜度。

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

29.若有語句:

inti=-19,j=i%4;

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

則輸出結果是【】。

30.若a=10,b=20,則表達式!(a<b)的值是【】。

31.表示條件:10<x<100或x<0的C語言表達式【】。

32.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

運行后,i,j,m,n的值分別是_______。

33.下列程序的輸出結果是______。

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

34.媒體在計算機領域中的含義,是指存儲信息的實體和【】。

35.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

36.下面程序的運行結果是______。

voidswap(int*a,int*B)

{

int*t;

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

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

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

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

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

}

38.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為【】。

39.數(shù)據(jù)結構包括數(shù)據(jù)的邏輯結構、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。

40.以下定義的結構體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結構體的指針,請將定義比沖完整

structnode

{intinfo;

______link;};

三、1.選擇題(20題)41.下面程序中有錯誤的行是(每行程序前面的數(shù)字表示行號)

1main()

2{

3inta[3]={1};

4inti;

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

6for(i-1;i<3;i++)a[0]=a[0]+a[i];

7printf("a[0]=%d\n,"a[0]);

8}

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

42.在一棵二叉樹上第8層的結點數(shù)最多是_______。

A.8B.16C.128D.256

43.設有如下定義,則以下敘述中正確的是______。int(*ptr)();

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

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

44.有如下程序#include<stdio.h>main(){FILE*fpl;fpl=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內容為:good,則運行以上程序后文件f1.txt中的內容為

A.goodabcB.abcdC.abcD.abcgood

45.下列程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

46.有以下程序:#include<stdio.h>main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q.a,b);程序運行后的輸出結果是()。

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

47.下列敘述中,錯誤的是()。

A.在同一C程序文件中,不同函數(shù)中可以使用名字相同的變量

B.在main()函數(shù)體內定義的變量是全局變量

C.形參是局部變量,函數(shù)調用完成即失去意義

D.若同一文件中全局和局部變量同名,則全局變量在局部變量作用范圍內不起作用

48.若有下列定義(設int類型變量占2個字節(jié)):inti=8;則下列語句:printf("i=%08d",i);輸出的結果是()。

A.i=8,B.i=00000008,C.i=08,D.8

49.設血型占2個字節(jié),則unsignedint所能表示的數(shù)據(jù)范圍是______。

A.0~65535B.-32769~32767C.1~65536D.0~32767

50.當調用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每個元素的地址D.數(shù)組每個元素中的值

51.有以下程序main(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運行后的輸出結果是______。

A.10B.13C.21D.程序進入死循環(huán)

52.有如下函數(shù)調用語句func(rec1,rec2+rec3,(rec4,rec5));該函數(shù)調用語句中,含有的實參個數(shù)是______。

A.3B.4C.5D.有語法錯誤

53.若有下列語句:chara[]="xyz";charb[]=}'x','y','z'};則下列敘述正確的是______。

A.數(shù)組a和數(shù)組b不等價

B.數(shù)組a和數(shù)組b的長度相同

C.數(shù)組a占用空間大小等于數(shù)組b占用空間大小

D.數(shù)組a占用空間大小大于數(shù)組b占用空間大小

54.當把以下4個表達式用作if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是

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

55.函數(shù)rewind的作用是

A.使文件位置指針重新返回文件的開始位置

B.將文件位置指針指向文件中所要求的特定位置

C.使文件位置指針指向文件的末尾

D.使文件位置指針自動移至下一個字符位置

56.下面各語句行中,能正確進行賦值字符串操作的語句是()

A.charst[4][5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'}

C.char*s;s="ABCDE";

D.char*s;scanf(”%s”,s);

57.以下敘述不正確的是______。

A.分號是C語言的必要組成部分

B.C程序的注釋可以寫在句的后面

C.函數(shù)是C程序的基本單位

D.主函數(shù)的名字不一定用main表示

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

A.在面向對象的程序設計中,各個對象之間具有密切的關系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述3種說法都不對

59.以下程序的輸出結果是______。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n"++*x,++*y,*(z++));}inta=10,b=40,c=20main(){prt(&a,&b&C);prt(&a,&b,&C)

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

60.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

四、選擇題(20題)61.若變量c為char類型,能正確判斷出c為小寫字母的表達式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

62.有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%d\n",*p+*q);}

A.16B.10C.8D.6

63.有以下程序:

voidmain()

{

inti=10,j=1;

printf("%d,%d\n",2*i--,++j*2);

}

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

A)20,4B)10,2

C)20,1D)10,4

64.在一個C程序中

A.main函數(shù)必須出現(xiàn)在所有的函數(shù)之前B.main函數(shù)可以在任何地方出現(xiàn)

C.main函數(shù)必須出現(xiàn)在所有的函數(shù)之后D.main函數(shù)必須出現(xiàn)在固定位置

65.

66.下列數(shù)據(jù)結構中,能用二分法進行查找的是()。

A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性鏈表

67.以下程序擬實現(xiàn)計算sum=1+1/2+1/3+…+1/50。

程序運行后,不能得到正確結果,出現(xiàn)問題的語句是()。

A.sum+=1/i;B.while(i<50);C.sum.=1.0;D.i++;

68.

69.以下不能正確定義二維數(shù)組的選項是()。

A.

B.

C.

D.

70.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致,

B.數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

71.

72.

73.源程序的文檔不包括()。

A.符合號名的命名要有實際意義B.正確的文檔形式C.良好的視覺組織D.正確的程序注釋

74.以下敘述中正確的是()。A.在c語言中,預處理命令行都以‘‘#”開頭

B.預處理命令必須位于c源程序的起始位置

C.#include必須放在c程序的開頭

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

75.C語言中,合法的字符型常數(shù)是_________。

A.‘A’B.“A”C.65D.A

76.有以下程序:

程序執(zhí)行后變量w中的值是()。

A.5.21B.5C.5.0D.0.0

77.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

78.

79.

80.簡單的交換排序方法是()。

A.快速排序B.選擇排序C.堆排序D.冒泡排序

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

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

if(a[[i]<a[p])

p=i;

t=a[p];

a[p]=aEj3;

//****found****

a[p]=t;

}

}

voidmain

{

intarr[M]={11,32,-5,2,14},i,m=5;

printf("排序前的數(shù)據(jù):");

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

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

printf("\n");

proc(arr,m);

printf("排序后的順序:");

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

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

printf("\n");

}

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個數(shù),形參e給出了字符串中最后*號的個數(shù)。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A第1次for循環(huán),y的值為9,“y%3”的值為0,滿足if條件輸出“--y”,即先自減后輸出,所以輸出8;第2次for循環(huán),y的值為7,“y%3”的值為1,不滿足if條件,不執(zhí)行printf語句;第3次for循環(huán),y的值為6,“y%3”的值為0,滿足if條件輸出“--y”,即先自減后輸出,所以輸出5;第4次for循環(huán),y的值為4,不滿足if條件,不執(zhí)行printf語句;第5次for循環(huán),y的值為3,滿足if條件,輸出2;第6次for循環(huán),y的值為1,不滿足if條件,不執(zhí)行printf語句。故本題答案為A選項。

2.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認初始化為零。

3.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序實現(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

4.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域寬。在百分號(%)與格式碼之間的整數(shù)用于限制從對應域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

5.B解析:一個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是一個返回整型指針的函數(shù)。

6.D\n程序設計是指設計、編制、調試程序的方法和過程。內容涉及有關的基本概念、工具、方法以及方法學等。程序設計通常分為問題建摸、算法設計、編寫代碼和編譯調試4個階段。

\n

7.B棧是線性表的一種,其插入和刪除運算都只在表的一端進行。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素是最后被插入的元素,不是最后被刪除的元素,是按先進后出的原則組織數(shù)據(jù)的。

8.C

9.C程序首先定義整型變量a和b,a的初值為123456。接著通過while循環(huán),判斷a的值是否為0,若不為0,則執(zhí)行循環(huán)體。每次循環(huán)將a當前值的個位數(shù)字(a%10)賦給b,a自身除以10。再通過switch語句判斷b的值執(zhí)行對應分支語句。所以對應a的每個個位數(shù),b的取值為6,5,4,3,2,1。當b取值為6時,執(zhí)行default,輸出6,接著繼續(xù)執(zhí)行case1,通過break退出switch。執(zhí)行下一次循環(huán),當b取值為5時,執(zhí)行case5輸出5。執(zhí)行下一次循環(huán),當b取值為4時,執(zhí)行case4輸出4,繼續(xù)執(zhí)行case5輸出5。接著執(zhí)行下一次循環(huán),當b取值為3時,執(zhí)行case3輸出3,執(zhí)行case4輸出4,執(zhí)行case5輸出5;當b取值為2時,執(zhí)行case2輸出2,通過break退出switch;當b取值為1時,執(zhí)行break,此時a的取值為0,循環(huán)終止。綜上,程序輸出結果為:65453452。本題答案為C選項。

10.D

11.A

12.Ascanf函數(shù)中,在格式字符前加入一個整數(shù)可以指定輸入數(shù)據(jù)所占的寬度,所以賦值時會將87賦給變量a,把6.0賦給float型變量b。故本題答案為A選項。

13.B執(zhí)行“fprintf(f,“abc”);”后,f文件原有內容被“abc”覆蓋。故本題答案為B選項。

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

15.B本題考查strlen函數(shù)和轉移字符,strlen函數(shù)的功能是求字符串的長度,在本題中有“\”,C語言中“\”是轉義字符,在計算長度時會將轉義符以及后面的第一個字符作為1個長度進行計算,所以答

16.D

17.C解析:宏替換不像函數(shù)調用要進行參數(shù)值的計算、傳遞等,而只是簡單按照原格式進行字符串的替換。注意:宏定義的命令格式。

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

19.C解析:統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針,C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。程序運行的結果是1+2+3+4+5+6+7+8+9=25。

20.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。

21.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達“并且”用邏輯與運算符“&&”。

22.22解析:本題考查表達式的運算。因為x=1,y=2,所以表達式(x+y)%2=3%2=1,(int)a/(int)b=(int)}(3/2)=1,因此整個表達式的結果為(x+y)%2+(int)a/(int)b=1+1=2。

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

24.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。

25.數(shù)據(jù)獨立性數(shù)據(jù)獨立性解析:數(shù)據(jù)庫的三級模式體系結構把數(shù)據(jù)的組織管理工作進行了劃分,把數(shù)據(jù)的具體組織留給DBMS管理,使用戶能邏輯地、抽象地處理數(shù)據(jù),而不必關心數(shù)據(jù)在計算機中的具體表示方式與存儲方式,保證了數(shù)據(jù)的獨立性。

26./**//**/解析:C語言程序的注釋可以出現(xiàn)在程序基本單詞之間的任何地方,C語言程序的注釋以“/*”作為開始標記,并以“*/”作為結束標記。

27.時間時間解析:算法的復雜度主要指時間復雜度和空間復雜度。

28.n+1n+1解析:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為0的結點多一個。

29.-3-3解析:%運算符是求兩個數(shù)相除的余數(shù),其結果與被除數(shù)的符號一致,本題中“-19%4”的值為“-3”。

30.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。

31.(X>10&&x<100)||x<0或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)或0>x||(10<x&&x<100)或(括號有無都可以)(X>10&&x<100)||x<0\r\n\u3000\u3000或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)\r\n\u3000\u3000或0>x||(10<x&&x<100)或(括號有無都可以)

32.611610。6,11,6,10。解析:本題考查自加的前置和后置的區(qū)別。

33.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結束。在這個程序中a、b、c的值沒做任何改變。

34.載體載體

35.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進行比較,如果當前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應填:str[i],第二空應填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應填:'%s',str。

36.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調用返回后x和y依舊是原來的值。

37.77解析:在C語言中,宏定義是直接替換的,所以在對表達式MAX(a+b,c+d)*10進行替換后,表達式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。

在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。

38.nn解析:在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為n。

39.存儲結構數(shù)據(jù)結構包括3個方面,即數(shù)據(jù)的邏輯結構、數(shù)據(jù)的存儲結構及對數(shù)據(jù)的操作運算。

40.解析:本題中的結構類型名為structnode,所以空白處應填:structnode*,即定義一個指向自身的結構體指針。

41.D解析:主要考查了一維數(shù)組的定義、初始化及元素的引用方法。第5行代碼中scanf輸入數(shù)據(jù)時,要求輸入項為地址,而數(shù)組名即為數(shù)組的首地址,所以不應該再在前面加取地址符號&。

42.C解析:根據(jù)二叉樹的性質1:二叉樹第k(k>1)層上,最多有2k-1個結點。于是第8層的結點數(shù)最多是27=128。

43.C解析:“int(*ptr)();”說明ptr是一個指向函數(shù)的指針,返回值是整型。*ptr兩邊的括號非常關鍵,表示*和ptr組合成一個指針變量,然后再和后邊的圃括號結合,表示該指針變量*ptr是一個指向函數(shù)的指針變量。如果沒有*ptr兩邊的括號,“int*ptr();”表示ptr是個函數(shù),該函數(shù)返回指向整型數(shù)據(jù)的指針。

44.C解析:主函數(shù)中定義了一個文件指針fp1,然后通過fopen()函數(shù),以寫的方式打開文件“fl.txt”,并讓指針fp1指向它,接著調用fpfintf()函數(shù)將“abc”寫到文件fp1所指的文件里,由于開始fp1指向文件的“fl.txt”的開始位置,因此“abc”將把文件“fl.txt”里原來的內容“good”覆蓋掉,故文件“fl.txt”里最后的內容為“abc”。

45.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

46.C解析:程序中P和q是指針變量,它們分別存放了變量a和L的地址,執(zhí)行P=&a;q=&b;語句后,*p和*q的值就分別為7和8,執(zhí)行r=P;P=q;q=r;實際上是進行指針變量p和q的交換,即將其存放的a和b的地址進行了交換,也就是P指向了b,q指向了a,此時a,b的值并沒有改變,所以輸出的*P,*q的值為8,7,而a,b的值仍為7,8。

47.B解析:本題考查函數(shù)調用時變量的作用域。形參是局部變量,函數(shù)調用完就失去意義了,所以在同一個C程序文件中,不同的函數(shù)體中可以使用名字相同的局部變量。注意:在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量,全局變量可以為本文件中其他函數(shù)所共用。它的有效范圍為:從定義變量的位置開始到本源文件結束.

48.B解析:本題考查printf函數(shù)的格式?!?08”格式符中的“0”表示在指定數(shù)據(jù)輸出寬度的同時,在數(shù)據(jù)前面的多余空格處加“0”;“8”表示指定數(shù)據(jù)的輸出寬度為8位。

49.A解析:本題int型占2個字節(jié),即16位,unsignedint所能表示的數(shù)據(jù)范圍是0-(216-1),即0-65535。

50.B解析:在函數(shù)中,可以通過指針變量來引用調用函數(shù)中對應的數(shù)組元素。此操作是通過傳遞數(shù)組的地址來實現(xiàn)的。

51.D解析:本題程序中的for循環(huán)省略了for語句的3個表達式,如果循環(huán)體中沒有break語句的話則為死循環(huán)。循環(huán)中每次i被增1,當i到6時才能執(zhí)行到break語句跳出循環(huán),但是當i自增到3的時候會執(zhí)行continue語句重新循環(huán),此時后面的“i++;”語句執(zhí)行不到,i的值為3一直沒有改變,所以continue語句始終要執(zhí)行,因此for循環(huán)將一直循環(huán)下去,所以,4個選項中選項D符合題意。

52.A解析:(rec4,rec5)是逗號表達式,它的值是rec5的值。所以該函數(shù)調用語句含有的實參個數(shù)是3。

53.D解析:數(shù)組a的存儲空間占4個字節(jié)(結束符'\\0'占一字節(jié)),數(shù)組a的存儲空間占3個字節(jié)。

54.D解析:非常明顯,選項A)與選項C)含義相同,表示k除以2的余數(shù)非零,但要注意的是,任何整數(shù)除以2的余數(shù)只有兩個結果,0和1。選項A)與選項C)的含義表示k除以2的余數(shù)為1,也與選項B)的含義相同,所以答案為選項D)。

55.A解析:函數(shù)rewind的功能是將文件指針重新指向一個流的開頭。用法如下:

intrewind(FILE*stream);并且無返值。

56.C

57.D解析:C語言的程序是由主函數(shù)main()開始運行,由主函數(shù)來調用其他函數(shù),所以D是錯誤的。

58.C本題考查對面向對象的理解。面向對象的程序設計是對象模擬問題領域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現(xiàn)對象之間的相互聯(lián)系。

59.B解析:由于實參傳送的是變量的地址,所以對形參指針所指向的單元內容的改變,即對實參內容的改變。

60.C解析:本題的宏定義是合法的,宏定義展開為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

61.D

62.B解析:本題定義了一維數(shù)組a和兩個指針變量。指針變量p的初值為第4個數(shù)組元素的地址,指針變量q的初值為,第6個數(shù)組元素的地址。*p+*q=4+6=10。

63.A有以下程序:\r\nvoidmain()\r\n{\r\ninti=10,j=1;\r\nprintf('%d,%d\\n',2*i--,++j*2);\r\n}\r\n執(zhí)行后輸出的結果是(([question]))。([answer])\r\nA)20,4

B)10,2\r\nC)20,1

D)10,4

64.B在C語言中,函數(shù)是C程序的基本組成部分,用來完成子程序的功能。一個完整的C程序至少應該包括一個main()函數(shù),其他函數(shù)可以沒有,可以有一個,也可以有多個。C程序的執(zhí)行過程是:從main()函數(shù)開始執(zhí)行,然后在main()函數(shù)中調用其他函數(shù),當main()函數(shù)執(zhí)行完畢時,整個程序就結束了。main()函數(shù)出現(xiàn)的位置不一定是程序的最前面,也不一定是程序的最后面,它沒有一個固定的位置,換句話說,就是main()函數(shù)可以出現(xiàn)在任何位置。

65.B

66.A\r\n二分法又叫折半(對分)查找法,只適合于順序存儲的有序表(是指線性表中的元素按值非遞減排列)。二分法的基本思想是:設有序線性表的長度為n,被查元素為X,則二分查找的方法如下:

將X與線性表的中間項進行比較:若中間項的值等于x,則說明找到,查找結束;若x小于中間項的值,則在線性表的前半部分(即中間項以前的部分)以相同的方法進行查找;若X大于中間項的值,則在線性表的后半部分(即中間項以后的部分)以相同的方法進行查找、這個過程-直進行到查找成功或于表長度為0,(說明線性表中沒有這個元素為止)順序存儲的線性袁在計算機中-般用一個-維數(shù)組來表示,在數(shù)組中我們可以通過數(shù)組名和下標來對數(shù)組中的任意一個元素進行訪問,而在鏈表(不管是有序還是無序)中,要對元素進行訪問必須從表頭結點開始,順著鏈條一個一個結點進行搜索,因此選項A正確

67.A選項A中,8111111+=1/i;i為整型,因此l/i是整型類型,當1/i有小數(shù)時,小數(shù)部分會被截斷。因此l/i結果始終為0,導致結果出錯,應改為8111m+=1.0/i。因此答案為A選項。

68.B

69.D本題的考查點是二維數(shù)組的定義和初始化。

選項A)定義的數(shù)組中各元素實際上是這樣的:

1,0

2.O

選項B)定義的數(shù)組中各元素實際上是這樣的:

1,2

3.4

選項c)定義的數(shù)組中各元素實際上是這樣的:

1,0

2.3

選項D)錯在省略了第2維的長度。C中在對數(shù)組進行初始化時,如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。

70.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結構,是數(shù)據(jù)間關系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結構,又叫物理結構,是邏輯結構在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機內的、大量的、有結構的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。

數(shù)據(jù)庫設計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應用的要求,設計一個結構合理、使用方便、效率較高的數(shù)據(jù)庫及其應用系統(tǒng)。數(shù)據(jù)庫設計包含兩方面的內容:一是結構設計,也就是設計數(shù)據(jù)庫框架或數(shù)據(jù)庫結構;二是行為設計,即設計基于數(shù)據(jù)庫的各類應用程序、事務等。因此,選項C的說法是錯誤的。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。

71.A

72.D\r\n

73.B本題主要考查源程序的定義:①符號名應具有一定實際的含義;②正確的程序注釋;③良好的視覺組織。

74.A預處理命令是以“#”號開頭的命令,它們不是c語言的可執(zhí)行命令,這些命令應該在函數(shù)之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,因此B)、c)選項錯

75.A

76.C題中變量W的定義為double型,函數(shù)fun2,的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運算,整型數(shù)據(jù)被轉換為實型數(shù)據(jù)。

77.C解析:帶參數(shù)宏的格式為:#define標識符(形參表)形參表達式。其功能是:在預處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達式。

78.D

79.B

80.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。

81.(1)錯誤:for(j=0;j<n-1;j++);

\n正確:for(j=0;j<n-1j++)

\n(2)錯誤:a[p]=t;

\n正確:a[j]=t;

\n【解析】for循環(huán)結束的標志是for后的一個語句,如果for后面直接跟一個分號,說明是一個空循環(huán)不執(zhí)行任何功能,因此“for(j=0;j<n-1;j++);”后面的分號應該去掉;當a[i]<a[p]時兩元素互換,因此“a[p]=t;”應改為“a[j]=t”。

\n

82.

【解析】題目要求不能用C語言提供的字符串函數(shù),可以利用移動字符串指針來實現(xiàn),首先移動字符串指針到第一個不是*的位置,通過指針的移動,來實現(xiàn)把第一個不是星號的字符與最后一個不是星號的字符放到a數(shù)組中,最后用ˊ\0ˊ來作為字符串結束的標志。

2022-2023年湖南省郴州市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf(“%d”,--y);}程序的運行結果是()。

A.852B.963C.741D.875421

2.以下程序的輸出結果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}

A.650B.1470C.5430D.輸出值不定

3.以下敘述中正確的是

A.用C程序實現(xiàn)的算法必須要有輸入和輸出操作

B.用C程序實現(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序實現(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序實現(xiàn)的算法可以既沒有輸入也沒有輸出

4.有以下程序段當執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

5.定義int*swap()指的是______。

A.一個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函數(shù)swap()

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

D.以上說法均錯

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

A.程序設計的任務就是編寫程序代碼并上機調試

B.程序設計的任務就是確定所用數(shù)據(jù)結構

C.程序設計的任務就是確定所用算法

D.以上三種說法都不完整

7.按照“先進后出”原則組織數(shù)據(jù)的結構是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

8.計算機系統(tǒng)的組成是______。

A.主機、外設B.運算器、控制器C.硬件系統(tǒng)和軟件系統(tǒng)D.CPU、內存儲器

9.有下列程序:程序執(zhí)行后的輸出結果是()。

A.654321

B.65432

C.65453452

D.654534521

10.直接選擇排序的時間復雜度為()。(n為元素個數(shù))

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

11.一個有n個頂點的連通無向圖至少有()條邊。

A.n-1B.nC.n+1D.n+2

12.設有定義“inta;floatb;”,執(zhí)行“scanf(“%2d%f”,&a,&b);”語句時,若從鍵盤輸入876543.0并按<Enter>鍵,則a和b的值分別是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

13.有以下程序:#include<stdio.h>main(){FILE*f;f=fopen(“fllea.txt”,“w”);fprintf(f,“abc”);fclose(f);}若文本文件filea.txt中原有內容為hello,則運行以上程序后,文件filea.txt中的內容為()。

A.abcloB.abcC.helloabcD.abchello

14.以下不能將s所指字符串正確復制到所指存儲空間的是()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++];);

15.有以下程序:#include<stdio.h>#include<strin9.h>main(){printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}程序運行后的輸出結果是()。A.3B.8C.4D.9

16.

17.以下程序的運行結果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

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

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

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

19.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執(zhí)行后的輸出結果是A.A.45B.20C.25D.36

20.棧和隊列的共同點是()。

A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點

二、2.填空題(20題)21.關系表達式x<y<z,用C語言的表達式為【】。

22.若有定義:intx=1,y=2;floata=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達式的值為()。

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

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

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

s[j]='\0';

}

24.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

25.數(shù)據(jù)庫三級模式體系結構的劃分,有利于保持數(shù)據(jù)庫的【】。

26.C語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個注釋以【】分別作為開始和結束。

27.算法的復雜度主要包括空間復雜度和______復雜度。

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

29.若有語句:

inti=-19,j=i%4;

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

則輸出結果是【】。

30.若a=10,b=20,則表達式!(a<b)的值是【】。

31.表示條件:10<x<100或x<0的C語言表達式【】。

32.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

運行后,i,j,m,n的值分別是_______。

33.下列程序的輸出結果是______。

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

34.媒體在計算機領域中的含義,是指存儲信息的實體和【】。

35.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

36.下面程序的運行結果是______。

voidswap(int*a,int*B)

{

int*t;

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

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

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

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

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

}

38.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為【】。

39.數(shù)據(jù)結構包括數(shù)據(jù)的邏輯結構、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。

40.以下定義的結構體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結構體的指針,請將定義比沖完整

structnode

{intinfo;

______link;};

三、1.選擇題(20題)41.下面程序中有錯誤的行是(每行程序前面的數(shù)字表示行號)

1main()

2{

3inta[3]={1};

4inti;

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

6for(i-1;i<3;i++)a[0]=a[0]+a[i];

7printf("a[0]=%d\n,"a[0]);

8}

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

42.在一棵二叉樹上第8層的結點數(shù)最多是_______。

A.8B.16C.128D.256

43.設有如下定義,則以下敘述中正確的是______。int(*ptr)();

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

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

44.有如下程序#include<stdio.h>main(){FILE*fpl;fpl=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內容為:good,則運行以上程序后文件f1.txt中的內容為

A.goodabcB.abcdC.abcD.abcgood

45.下列程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

46.有以下程序:#include<stdio.h>main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q.a,b);程序運行后的輸出結果是()。

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

47.下列敘述中,錯誤的是()。

A.在同一C程序文件中,不同函數(shù)中可以使用名字相同的變量

B.在main()函數(shù)體內定義的變量是全局變量

C.形參是局部變量,函數(shù)調用完成即失去意義

D.若同一文件中全局和局部變量同名,則全局變量在局部變量作用范圍內不起作用

48.若有下列定義(設int類型變量占2個字節(jié)):inti=8;則下列語句:printf("i=%08d",i);輸出的結果是()。

A.i=8,B.i=00000008,C.i=08,D.8

49.設血型占2個字節(jié),則unsignedint所能表示的數(shù)據(jù)范圍是______。

A.0~65535B.-32769~32767C.1~65536D.0~32767

50.當調用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每個元素的地址D.數(shù)組每個元素中的值

51.有以下程序main(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運行后的輸出結果是______。

A.10B.13C.21D.程序進入死循環(huán)

52.有如下函數(shù)調用語句func(rec1,rec2+rec3,(rec4,rec5));該函數(shù)調用語句中,含有的實參個數(shù)是______。

A.3B.4C.5D.有語法錯誤

53.若有下列語句:chara[]="xyz";charb[]=}'x','y','z'};則下列敘述正確的是______。

A.數(shù)組a和數(shù)組b不等價

B.數(shù)組a和數(shù)組b的長度相同

C.數(shù)組a占用空間大小等于數(shù)組b占用空間大小

D.數(shù)組a占用空間大小大于數(shù)組b占用空間大小

54.當把以下4個表達式用作if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是

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

55.函數(shù)rewind的作用是

A.使文件位置指針重新返回文件的開始位置

B.將文件位置指針指向文件中所要求的特定位置

C.使文件位置指針指向文件的末尾

D.使文件位置指針自動移至下一個字符位置

56.下面各語句行中,能正確進行賦值字符串操作的語句是()

A.charst[4][5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'}

C.char*s;s="ABCDE";

D.char*s;scanf(”%s”,s);

57.以下敘述不正確的是______。

A.分號是C語言的必要組成部分

B.C程序的注釋可以寫在句的后面

C.函數(shù)是C程序的基本單位

D.主函數(shù)的名字不一定用main表示

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

A.在面向對象的程序設計中,各個對象之間具有密切的關系

B.在面向對象的程序設計中,各個對象都是公用的

C.在面向對象的程序設計中,各個對象之間相對獨立,相互依賴性小

D.上述3種說法都不對

59.以下程序的輸出結果是______。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n"++*x,++*y,*(z++));}inta=10,b=40,c=20main(){prt(&a,&b&C);prt(&a,&b,&C)

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

60.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

四、選擇題(20題)61.若變量c為char類型,能正確判斷出c為小寫字母的表達式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

62.有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%d\n",*p+*q);}

A.16B.10C.8D.6

63.有以下程序:

voidmain()

{

inti=10,j=1;

printf("%d,%d\n",2*i--,++j*2);

}

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

A)20,4B)10,2

C)20,1D)10,4

64.在一個C程序中

A.main函數(shù)必須出現(xiàn)在所有的函數(shù)之前B.main函數(shù)可以在任何地方出現(xiàn)

C.main函數(shù)必須出現(xiàn)在所有的函數(shù)之后D.main函數(shù)必須出現(xiàn)在固定位置

65.

66.下列數(shù)據(jù)結構中,能用二分法進行查找的是()。

A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性鏈表

67.以下程序擬實現(xiàn)計算sum=1+1/2+1/3+…+1/50。

程序運行后,不能得到正確結果,出現(xiàn)問題的語句是()。

A.sum+=1/i;B.while(i<50);C.sum.=1.0;D.i++;

68.

69.以下不能正確定義二維數(shù)組的選項是()。

A.

B.

C.

D.

70.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致,

B.數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

71.

72.

73.源程序的文檔不包括()。

A.符合號名的命名要有實際意義B.正確的文檔形式C.良好的視覺組織D.正確的程序注釋

74.以下敘述中正確的是()。A.在c語言中,預處理命令行都以‘‘#”開頭

B.預處理命令必須位于c源程序的起始位置

C.#include必須放在c程序的開頭

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

75.C語言中,合法的字符型常數(shù)是_________。

A.‘A’B.“A”C.65D.A

76.有以下程序:

程序執(zhí)行后變量w中的值是()。

A.5.21B.5C.5.0D.0.0

77.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

78.

79.

80.簡單的交換排序方法是()。

A.快速排序B.選擇排序C.堆排序D.冒泡排序

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<stdio.h>

#defineM20

voidproc(inta[],intn)

{

inti,j,t,P;

//****found****

for(j=0;j<n-1;j++);

{

p=j;

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

if(a[[i]<a[p])

p=i;

t=a[p];

a[p]=aEj3;

//****found****

a[p]=t;

}

}

voidmain

{

intarr[M]={11,32,-5,2,14},i,m=5;

printf("排序前的數(shù)據(jù):");

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

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

printf("\n");

proc(arr,m);

printf("排序后的順序:");

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

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

printf("\n");

}

六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個數(shù),形參e給出了字符串中最后*號的個數(shù)。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A第1次for循環(huán),y的值為9,“y%3”的值為0,滿足if條件輸出“--y”,即先自減后輸出,所以輸出8;第2次for循環(huán),y的值為7,“y%3”的值為1,不滿足if條件,不執(zhí)行printf語句;第3次for循環(huán),y的值為6,“y%3”的值為0,滿足if條件輸出“--y”,即先自減后輸出,所以輸出5;第4次for循環(huán),y的值為4,不滿足if條件,不執(zhí)行printf語句;第5次for循環(huán),y的值為3,滿足if條件,輸出2;第6次for循環(huán),y的值為1,不滿足if條件,不執(zhí)行printf語句。故本題答案為A選項。

2.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認初始化為零。

3.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序實現(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

4.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域寬。在百分號(%)與格式碼之間的整數(shù)用于限制從對應域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

5.B解析:一個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是一個返回整型指針的函數(shù)。

6.D\n程序設計是指設計、編制、調試程序的方法和過程。內容涉及有關的基本概念、工具、方法以及方法學等。程序設計通常分為問題建摸、算法設計、編寫代碼和編譯調試4個階段。

\n

7.B棧是線性表的一種,其插入和刪除運算都只在表的一端進行。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素是最后被插入的元素,不是最后被刪除的元素,是按先進后出的原則組織數(shù)據(jù)的。

8.C

9.C程序首先定義整型變量a和b,a的初值為12

溫馨提示

  • 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

提交評論