2022-2023年安徽省淮南市全國計算機等級考試C語言程序設計_第1頁
2022-2023年安徽省淮南市全國計算機等級考試C語言程序設計_第2頁
2022-2023年安徽省淮南市全國計算機等級考試C語言程序設計_第3頁
2022-2023年安徽省淮南市全國計算機等級考試C語言程序設計_第4頁
2022-2023年安徽省淮南市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩107頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.若有定義“intx[10],*pt=x;”,則對x數組元素的引用正確的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

2.在C語言中,要求運算數必須是整型的運算符是()。

A./B.++C.!=D.%

3.有一個100×90的稀疏矩陣,非0元素有10,設每個整型數占2個字節,則用三元組表示該矩陣時,所需的字節數是()。

A.20B.66C.18000D.33

4.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運行后的輸出結果是A.2B.1C.3D.0

5.

6.一棵二叉樹中共有70個葉子結點與80個度為1的結點,則該二叉樹中的總結點數為A.219B.221C.229D.231

7.下列定義數組的語句中正確的是()。

A.#defmeN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

8.請閱讀以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是

A.34756B.23445C.35745D.12345

9.設fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數feof(fp)的返回值為()。

A.0B.‘\0’C.非零值D.NULL

10.以下說法錯誤的是()。

A.由3種基本結構組成的結構化程序不能解決過于復雜的問題

B.由3種基本結構組成的結構化程序能解決一些簡單的問題

C.由3種基本結構組成的結構化程序能解決遞歸問題

D.由3種基本結構組成的結構化程序能解決數學上有解析解的問題

11.在數據庫系統中,用戶所見數據模式為______。A.概念模式B.外模式C.內橫式D.物理模式

12.

13.“商品”與“顧客”兩個實體集之間的聯系一般是

A.一對一B.一對多C.多對一D.多對多

14.以下各選項中的代碼段執行后,變量y的值不為1的是()。A.intx=5,y=0;if(5)y=1;

B.intx=5,y=0;if(x)y=1;

C.intx=10,y=0;if(x=y)y=1;

D.intx=5,y=10;if(x=y)y=1;

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

A.在C語言中,預處理命令行都以“#”開頭

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

C.#include<stdi0.h>必須放在C程序的開頭

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

16.設單鏈表中結點的結構為已知指針p所指結點不是尾結點,若在*p之后插入結點*s,則應執行下列哪一個操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

17.下述關于數據庫系統的敘中正確的是______。

A.數據庫系統減少了數據冗余

B.數據庫系統避免了一切冗余

C.數據庫系統中數據的一致性是指數據類型的一致

D.數據庫系統比文件系統能管理更多的數據

18.指針可以用來表示數組元素,若已知語句:inta[3][7];則下列表示中正確的是()。

A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)

19.有以下程序:#include<stdio.h>intf(intx):main{intn=1,m;m=f(f(f(n)));printf("%d\n",m);}intf(intx){returnx*2;)程序運行后的輸出結果是()。A.1B.2C.4D.8

20.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之間的通信靠傳遞消息來實現

C.在外面看不到對象的內部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

二、2.填空題(20題)21.數據庫系統其內部分為三級模式,即概念模式、內模式和外模式。其中,______是用戶的數據視圖,也就是用戶所見到的數據模式。

22.下面程序的功能是輸出數組中最大的數,由a指針指向該元素。請填空。

main()

{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;

for(【】)

if(*a<*b)a=b;

printf("%d",*a);

}

23.在循環中,continue語句與break語句的區別是:______語句只是結束本次循環,然后進行循環的條件判定。

24.有如下圖所示的雙鏈表結構,請根據圖示完成結構體的定義:

structaa

{intdata;

【】}node;

25.下面程序的運行結果是【】。

#inelude<stdio.h>

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

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

main()

{inti=010,j=10;

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

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

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

main()

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

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

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

}

28.有以下語句段:

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值:

n1=10

n2=20

每個輸出行從第一列開始,請填空。

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

main()

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

for(i=O;i<10;i++)arr[i]=i;

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

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

}

30.以下程序的運行結果是______。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

31.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

32.性結構中,隊列的操作順序是先進先出,而棧的操作順序是______。

33.若x為int類型,請寫出與!x等價的C語言表達式______。

34.若由以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

35.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。

36.下列程序的運行結果是【】。

#include<stdio.h>

voidmain()

{ints=0,k;

for(k=7;k>4;k--)

{switch(k)

{case1:

case4:

case7:s++;break;

case2:

case3:

case6:break;

case0:

case5:s+=2;break;}}

printf("s=%d",s);}

37.以下程序的運行結果是【】。

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

38.下面程序的運行結果是【】。

voidswap(int*a,int*b)

{

int*tp;

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

}

main()

{

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

swap(p,q);

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

}

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

40.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

三、1.選擇題(20題)41.

執行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

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

A.在C程序中,main()函數必須位于程序的最前面

B.在C程序中,一條語句只能寫一行而不能寫多行

C.C程序是以行為基本單位的

D.C語言本身沒有輸入輸出語句

43.有以下程序:#include<stdio.h>main(){unsignedchara,b;a=413;b=4&3;printf("%d%d\n",a,b);}執行后的輸出結果是()。

A.70B.07C.11D.430

44.有下列程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;下列選項中表達式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->X

45.已知函數的調用形式:fread(buf,size,count,fp),參數buf的含義是

A.一個整型變量,代表要讀入的數據項總數

B.一個文件指針,指向要讀的文件

C.一個指針,指向要讀入數據的存放地址

D.一個存儲區,存放要讀的數據項

46.以下程序的輸出結果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不確定的值(因變量無定義)B.0C.-1D.1

47.有以下程序:mam(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結果是()。

A.ABCDBCDDB.ABCDC.BCDD.BCDCDD

48.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環

49.函數調用:strcat(strcpy(str1,str2,),str3)的功能是()

A.將串str1復制到串str2中后再連接到串str3之后

B.將串str1連接到串str2之后再復制到串str3之后

C.將串str2連接到串str1之后再將串str3連接到串str1之后

D.將串str2連接到串str1之后再將串str1連接到串str3之后

50.需求分析最終結果是產生

A.項目開發計劃B.需求規格說明書C.設計說明書D.可行性分析報告

51.若主函數中有以下定義和語句:main(){doublea[3][4];……fun(a);}則正確的fun函數的首部是()

A.voidfun(double*s)

B.fun(double*s[4])

C.fun(double(*s)[3])

D.voidfun(double(*s)[4])

52.以下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");}

53.以下程序輸出的結果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX");char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

54.以下敘述中正確的是

A.C程序中注釋部分可以出現在程序中任意合適的地方

B.花括號“{”和“}”只能作為函數體的定界符

C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

55.下面能正確進行字符串賦值操作的是()。

A.chars[5]={"ABCDE"};

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

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

D.char*s;scanf("%s",&s);

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

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

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

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

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

57.以下能正確定義一維數組的選項是______。

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

58.數據處理的最小單位是()。

A.數據B.數據元素C.數據項D.數據結構

59.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤當前目錄的所有文件

B.寬行顯示A盤所有目錄的所有文件

C.寬行顯示A盤的所有目錄

D.顯示A盤中的文件名,每滿一屏后停頓一下

60.以下描述中正確的是()。

A.由于do-while循環中循環體語句只能是一條可執行語句,所以循環體內不能使用復合語句

B.do-while循環由do開始,用while結束,在while(表達式.后面不能寫分號

C.在do-while循環體中,是先執行一次循環,再進行判斷

D.do-while循環中,根據情況可以省略while

四、選擇題(20題)61.下列敘述中正確的是()。

A.數據的邏輯結構與存儲結構是一一對應的

B.算法的時間復雜度與空間復雜度一定相關

C.算法的效率只與問題的規模有關,而與數據的存儲結構無關

D.算法的時間復雜度是指執行算法所需要的計算工作量

62.

63.開發大型軟件時,產生困難的根本原因是()

A.大系統的復雜性B.人員知識不足C.客觀世界千變萬化D.時間緊、任務重

64.已知大寫:字母A的ASCIl碼是65,小寫字母a的ASCIl碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

65.

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

67.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

68.

69.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則

D.軟件工程只是解決軟件開發中的技術問題

70.在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是()。

A.aut0和register

B.extem和register

C.auto和static

D.static和register

71.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

fun(&a[3]);

}

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

A.5B.6C.8D.9

72.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的運行結果是()。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

73.

74.

75.若在定義語句:

76.設有以下程序段:

要求輸入字符串給結構體變量rec的title成員,錯誤的輸入語句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

77.有以下程序:

#include<stdio.h>

#defineS(x)4*(x)*x+1

main()

{intk=5,j=2;

printf("%d\n",S(k+j));

}

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

A.197B.143C.33D.28

78.運行下列程序時,若輸入的數據為“1,2,3”,則輸出結果是()。main{floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b.b=t;)if(a<c){t=a;a=c;c=t;)it(b<c){t=b;b=C;c—=;)printf("%f\n%f\n%f\n",a,b,c);}A.1.002.003.00B.1.003.002.00C.132D.3.000002.000001.00000

79.

80.在16位編譯系統上,若有定義“inta[]={10,20,30},*p=&a;”,當執行“P++;”后,下列說法錯誤的是()。

A.P向高地址移了一個字節B.P向高地址移了一個存儲單元C.P向高地址移了兩個字節D.P與a+1等價

五、程序改錯題(1題)81.下列給定的程序中,函數proc的功能是:用選擇法對數組中的m個元素按從小到大的順序進行排序。例如,排序前的數據為:1132-5214則排序后的數據為:-52111432請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdio.h>#defineM20voidproc(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("排序前的數據:");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.編寫函數proc,它的功能是:計算和輸出下列級數的和。S=1/(12)+1/(23)+…+1/(n(n+1))例如,當n=20時,函數值為0.952381。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D選項A中,“pt+3”使指針變量Pt移動3個單元,指向第4個元素,不能正確引用。運算符“*”與“&”放在一起,其作用相互抵消,且下標10超出了數組下標范圍,所以B選項錯誤。“*(pt+i)”表示引用指針pt所指元素后的第i個元素,引用數組第11個元素,C選項錯誤。故本題答案為D選項。

2.D解析:/、++和!=的操作數既可能是整型,又可能是實型。而%的操作數只能是整型。

3.B

4.A解析:本題考查了函數的遞歸調用。在f函數中,當m=7時,程序執行“f(--n,&r1);”語句,遞歸調用f(6,&r1),程序執行“r1=n/3;”語句,即r1=\u30006/3=2,然后執行“*r=r1;”語句,所以輸出結果為2。

5.D

6.A本題考查數據結構中二叉樹的性質。二叉樹滿足如下一條性質,即:對任意一棵二叉樹,若終端結點(即葉子結點)數為n0,而其度數為2的結點數為n2,則n0=n2+l。根據這條性質可知,若二叉樹中有70個葉子結點,則其度為2的結點數為70-1,即69個。二叉樹的總結點數是度為2、度為1和葉子結點的總和,因此,題目中的二叉樹總結點數為69+80+70,即219。因此,本題的正確答案是選項A。

7.A數組定義的一般形式為:類型說明符數組名[常量表達式]。B選項中N是變量,不能用變量定義數組長度。C選項中數組長度是一串非法的數字。定義數組時必須為其指明長度,D選項中的數組長度為空,所以非法。故本題答案為A選項。

8.C解析:本題考查了通過數組首地址引用數組元素的方法。第一次執行fun(a)后,a[0]=3,a[1]=5。第二次執行fun(a)時,因為static變量j保存著上次執行時的值為2,所以a[2]=7,最后數組a={3,5,7,4,5},所以正確答案為C)。

9.Cfeof函數的用法是從輸入流讀取數據,如果到達文件末尾(遇到文件結束符)函數值為非零值,否則其值為0。故本題答案為C選項。

10.A順序結構、選擇結構、循環結構是3種基本結構,由3種基本結構構成的程序稱為結構化程序,由3種基本結構組成的算法可以解決任何復雜的問題,選項A錯誤。本題答案為A選項。

11.B解析:數據庫管理系統的三級模式結構由外模式、模式和內模式組成。夕模式,或子模式,或用戶模式,是指數據庫用戶所看到的數據結構,是用戶看到的數據視圖。模式,或邏輯模式,是數據庫中對全體數據的邏輯結構和特性的描述,是所有用戶所見到的數據視圖的總和。外模式是模式的—部分。內模式,或存儲模式,或物理模式,是指數據在數據庫系統內的存儲介質上的表示,即對數據的物理結構和存取力式的描述。

12.D

13.D解析:兩個實體間的聯系可以歸納為3種類型:一對一聯系:一對一的聯系表現為主表中的每一條記錄只與相關表中的一條記錄相關聯。一對多聯系,一對多的聯系表現為主表中的每一條記錄與相關表中的多條記錄相關聯。多對多聯系:多對多的聯系表現為二個表中的多個記錄在相關表中同樣有多個記錄其匹配。本題中一個顧客可以購買多種商品,同一種商品可以有多個顧客購買,所以商品和顧客之間是多對多的聯系。

14.C選項A的if條件表達式的值是5,結果為真,執行“y=1”,y的值為1;選項B的if條件表達式x的值為5,結果也是真,執行“y=1”,y的值為1;選項C的if條件表達式“x=y”是賦值語句,將y的值0賦給x,表達式的值為0,if語句不執行,y的值為0;選項D的if條件表達式“x=y”是賦值語句,將y的值10賦給x,表達式的值為10,執行“y=1”,y的值為1。故本題答案為C選項。

15.A預處理命令是以“#”號開頭的命令,它們不是C語言的可執行命令,這些命令應該在函數之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預處理能夠實現宏定義和條件編譯等功能,所以D錯誤。

16.B

17.A解析:由于數據的集成性使得數據可為多個應用所共享,特別是在網絡發達的今天,數據庫與網絡的結合擴大了數據關系的應用范圍。數據的共享自身又可極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。所謂數據的一致性是指在系統中同一數據的不同出現應保持相同的值,而數據的不一致性指的是同一個數據在系統的不同拷貝處有不同的值。

18.D

19.D本題考查函數返回值作參數,最初n=1,f(n)=f(1)=2,將f(n)的結果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

20.C解析:對象的封裝性是指從外面看只能看到對象的外部特性;而對象的內部,其處理能力的實行和內部狀態對外是不可見的,是隱蔽的。

21.外模式外模式解析:數據庫系統的三級模式分別是內模式、概念模式和外模式。其中,物理模式給出了數據庫的物理存儲結構和存取方法;概念模式是數據庫系統中全局數據邏輯結構的描述;外模式是用戶的數據視圖,也就是用戶所見到的數據模式。

22.a=sb=s+1;b-s<sizeof(s)/sizeof(s[0]);b++a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++解析:題目要求輸出數組中最大的數,所以要遍歷整個數組,而指針a用來指向最大數,所以循環變量只有使用指針b。for初始化時,應該先讓a指向第1個數,然后讓b指向第2個數,故循環初始化語句應該為a=s,b=s+1或其他等價表達式。因為要使b遍歷整個數組,故循環條件應該為b-s<sizeof(s)/sizeof(s[0])或其他等價表達式。最后每次循環應該讓b往后移動一位,故for的第3條語句應該是++b、b++或其他等價形勢。所以本題應填a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++或其他等價語句。

23.continuecontinue解析:continue語句只是結束本次循環,然后進行循環的條件判定。break語句是終止整個循環的執行,不再進行條件判定。

24.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結構體對鏈表的定義。

25.66解析:已知aa[3]={1,2,3},n=3,調用函數f,n>1成立,執行a[0]+f(&a[1],n-1);即1+f(&a[1],2),遞歸調用函數f,將a[1]的地址作為參數傳給數組a,使數組a的首地址變為&a[1],數組中的元素只有2,3;2傳給n,這時n=2,n>1仍然成立,繼續調用a[0]+f(&a[1],n-1);即執行1+2+f(&a[1],1),因為上次遞歸調用函數f后數組中的元素為2,3,所以此次的a[1]為3,調用后的a[0]為3。所以最后結果為1+2+3=6。

26.8108,10解析:以0開頭的是八進制數,輸出時將其轉換成十進制數。

27.77解析:在C語言中,宏定義是直接替換的,所以在劉表達式MAX(a+b,c+d)*10進行替換后,表達式變為(a+b)>(c+d)?(a+b):(c+d)*10。在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值作為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。

28.n1=%d\nn2=%dn1=%d\\nn2=%d解析:根據輸出結果,可以確定“格式控制”為n1=%d\\nn2=%d,其中,“n1=”和“n2=”是按原樣輸出的字符,“%d”是按十進制整數輸出,“\\n”是轉義字符,用于輸出回車換行。

29.1212解析:本題的第一個for循環用于給數組arr賦初值,第二個for循環用于求和運算。由于第二個for循環初始值為1,而循環條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結果為12。

30.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數fread和fwrite的用法。fwrite函數將數組a的前5個元素輸出到文件fp中兩次,共10個字節,再調用fread函數從文件fp中讀取這10個字節的數據到數組a中,此時數組a的內容就變為{1,2,3,0,0,1,2,3,0,0},最后的輸出結果為“1,2,3,0,0,1,2,3,0,0”。

31.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

32.先進后出先進后出解析:隊列和棧都是線性結構,但是不同之處在于隊列的操作順序是先進先出,而棧的操作順序是先進后出。

33.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。

34.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點是通過指針引用數組元素。98是數組w的第5個元素(最開始的為第0個),而通過*p=w已經將p指向了數組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。

35.線性結構線性結構解析:數據的邏輯結構是指數據元素之間的邏輯關系,分為線性結構和非線性結構。常見的線性結構有線性表、棧和隊列等,常見的非線性結構有樹、二叉樹等。

36.s=3s=3解析:當k=7時,執行case7,s++,s的值為1。當k=6時,直接break出switch結構;當k=5時,執行case5,s+=2,s的值為3;當k=4時由于不滿足for循環的條件,所以結束循環,所以輸出的s的值為3。注意:循環語句和條件的嵌套使用。

37.a=2b=1a=2,b=1解析:本題考查了switch結構的內容。C語言中,程序執行完一個case標號的內容后,如果沒有break語句,控制結構會轉移到下一個case繼續執行,因為case常量表達式只是起語句標號作用,并不是在該處進行條件判斷。本題程序在執行完內部switch結構后,繼續執行了外部switch結構的case2:分支,最后a和b的值分別為2和1。

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

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

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

41.C解析:本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。

42.D解析:本題涉及C語言最基本的4個知識點:①C語言程序是由函數構成的,C程序的基本單位是函數;②每個C程序有且只有一個主函數main(),且程序必須從main()函數開始執行,但是main()函數可以放在程序中的任意位置;③C語言的書寫格式是自由的,一行可以寫多條語句,一條語句也可以寫在不同的行上;④C語言本身不提供輸入輸出語句,可以通過函數來實現輸入和輸出操作。

43.A解析:&是按位“與”運算符,其運算規則是:參加運算的兩個運算量,如果兩個相應的位都為1,則該位的結果值為1,否則為0。|是按位“或”運算符,其運算規則是:兩個相應位中只要有一個為1,該位的結果為1。4轉換為二進制數為0100,3轉換為二進制數為0011,則4|3=0111,即7,4&3=0000,即0。

44.C解析:由題目的已知條件可知,Pt指向結構體數組c[2]的第一元素c[O],所以pt->x=10,執行自加運算后為11。

45.C本題主要考查成塊讀函數fread。在C語言中,提供了一種成塊的讀寫方式來操作文件,使其數組或結構體等類型可以進行一次性讀寫。成塊讀文件函數的調用形式為:

intfread(void*buf,intsize,intcount,FILE*stream)

fread()函數的意思是從stream指向的流文件讀取count(字段數)個字段,每個字段為size(字段長度)個字符長,并把它們放到buf(緩沖區)指向的字符數組中,然后進行讀取操作。fread()函數返回實際已讀取的字段數。

從上面的分析我們可以知道,參數buf是一個無返回類型的指針,指向要讀入數據的存放地址,它其實是一個緩沖區。因此本題正確的答案選C。

46.B解析:在C語言中NULL的ASCII碼值為0,而輸出函數要求以整形格式輸出,故最后的輸出數0。所以,選項B正確。

47.D解析:本題中首先定義一個字符數組s,井將字符串“ABCD”存到數組s中,定義了一個字符指針變量p,在接下來for循環中,循環體共執行了三次,第一次p指向s[1],所以此時輸出的p所指的字符串的值為BCD,第二次循壞p指向s[2],所以此時輸出的p所指的字符串的值為CD,第三次循環p指向s[3],因此此時輸出的p所指的字符串的值為D。所以,4個選項中選項D符合題意。

48.B解析:對于do…while循環,程序先執行一次循環體,再判斷循環是否繼續。本題先輸出一次i的值“0,”,再接著判斷表達式i++的值,其值為0,所以循環結束。此時變量i的值經過自加已經變為1,程序再次輸出i的值“1”。

49.C

50.B解析:本題考核軟件工程中的需求分析環節。需求分析應交付的主要文檔就是需求規格說明書。

51.D

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

53.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當執行p=alpha后,p指向指針數組alpha的首地址。for循環中輸出了4個字符串。

54.A解析:“/*”與“*/”之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確;在C語言中,函數體是從花括號“{”開始,到花括號“}”結束.但沒有規定花括號“{”和“}”只能作為函數體定界符,故選項B錯誤;選項C中前半句是正確的,在C程序中由有一個或多個函數所組成,但不是所有的函數都由用戶自己命名,有些函數比如庫函數,主函數main()就不能由用戶來命名,故選C不正確;在C語言中明確規定每條語句以分號“;”結束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。

55.C解析:如果一個字符數組用來存儲字符串,那么在定義該字符數組時,數組的大小應該比它將要實際存放的字符串長度大1,所以選項A)和B)錯;選項D)中s本身就是一個字符指針,不需再取地址。

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

57.B解析:C語言一維數組的定義有兩種方式:一是指定數組長度,如選項A“inta[5]={0,1,2,3,4,5};”,但此定義的賦初值個數為6,多于數組長度,是錯誤的。因為給數組賦初值,初值個數只能小于或等于數組長度。二是不指定數組長度,由賦初值的初值個數決定數組的長度,如選項B的“chara[]={0,1,2,3,4,5};”,初值個數為6,因此數組長度為6。所以能正確定義一維數組。選項C的定義中a是一個字符變量,不能正確定義一維數組。選項D“inta[5]=“0123”;”給int型數組賦字符串初值,顯然是錯誤的。

58.C解析:數據處理的最小單位是數據項;由若干數據項組成數據元素;而數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。故正確答案為選項C)。

59.A

60.C解析:do-while語句的一般形式為:do循環體語句while(表達式);,其中循環體語句可以是復合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結束,在do-while循環中,不可以省略while。

61.D根據時間復雜度和空間復雜度的定義可知,算法的時間復雜度與空間復雜度并不相關。數據的邏輯結構就是數據元素之間的邏輯關系,它是從邏輯上描述數據元素之間關系的,是獨立于計算機的;數據的存儲結構是研究數據元素和數據元素之間的關系如何在計算機中表示的,它們并非一一對應。算法的執行效率不僅與問題的規模有關,還與數據的存儲結構有關。

62.C

63.A開發大型軟件時,產生困難的原因有很多,如需求難以捕捉、員工水平有限、工作安排不太合理、進度控制難以把握、系統開發時間有限等元素,但這些都不是根本的原因,根本的原因是大系統的復雜性。

64.A大寫字母轉換為對應小寫字母,即加上32,A)選項不是累加32,所以選擇A)

65.C

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

67.A解析:作為一個算法,一般應該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達到一個滿意的結果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內做完;(4)擁有足夠的情報。

68.D

69.C\r\n軟件工程是試圖用工程、科學和數學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調在軟件開發工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發成本和進度無法控制、軟件質量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發生產率的提高趕不上硬件的發展和應用需求的增長。軟件項目的管理、軟件產品的生產率、軟件開發中的技術都是軟件工程需要解決的部分問題。因此選項C正確。

70.A本題的考查點是變量的存儲類型。extern、register、static、auto分別是定義自動變量、寄存器變量、靜態變量、外部變量,其中,自動變量和寄存器變量屬于動態存儲,調用時臨時分配單元;而靜態變量和外部變量屬于靜態存儲,在整個程序運行時間都存在。

71.B\n由題可知,fun(&a[3])是將&a[3]作為參數,而fun(int*p)后執行的語句為p[5],由數組a可知輸出的為6。

\n

72.Cf函數的功能是對形參a的各個成員用結構體變量b的各個成員進行賦值后,然后返回變量a。

73.A

74.B

75.Ascanf中參數列表,需為地址,A)符合題意。所以選擇A)。

76.A符號“_>”是指針特用的,符號“.”用于指定元素的成員。ptr是指針,只能用符號“一>”,因此選項A錯誤。+P是指定元素(Fee)可以使用“.”運算,因此選項D正確。選項B,Fee.title代表數組title,同理選項C正確。答案為A選項。

77.B\n此程序考查帶參數的宏定義,S(k+j)展開后即4*(k+j)*k+j+1,所以結果為l43,答案為B。

\n

78.D本題考查if語句。第1個if語句,如果a<b,則a與b交換;第2個if語句,如果a<c,則a與c交換;第3個if語句,如果b<2t,則b與c交換。3個if語句結合起來實現的功能就是將a、b、C按從大到小排序。

79.D

80.A因為P是整型的指針變量,因此其移動一個位置即兩個字節,故選擇A選項。

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

82.

【解析】首先定義一個變量來表示其和s,通過n次循環求出n項的和,最后將所得到各項的和值返回給主函數。

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

一、單選題(20題)1.若有定義“intx[10],*pt=x;”,則對x數組元素的引用正確的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

2.在C語言中,要求運算數必須是整型的運算符是()。

A./B.++C.!=D.%

3.有一個100×90的稀疏矩陣,非0元素有10,設每個整型數占2個字節,則用三元組表示該矩陣時,所需的字節數是()。

A.20B.66C.18000D.33

4.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運行后的輸出結果是A.2B.1C.3D.0

5.

6.一棵二叉樹中共有70個葉子結點與80個度為1的結點,則該二叉樹中的總結點數為A.219B.221C.229D.231

7.下列定義數組的語句中正確的是()。

A.#defmeN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

8.請閱讀以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是

A.34756B.23445C.35745D.12345

9.設fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數feof(fp)的返回值為()。

A.0B.‘\0’C.非零值D.NULL

10.以下說法錯誤的是()。

A.由3種基本結構組成的結構化程序不能解決過于復雜的問題

B.由3種基本結構組成的結構化程序能解決一些簡單的問題

C.由3種基本結構組成的結構化程序能解決遞歸問題

D.由3種基本結構組成的結構化程序能解決數學上有解析解的問題

11.在數據庫系統中,用戶所見數據模式為______。A.概念模式B.外模式C.內橫式D.物理模式

12.

13.“商品”與“顧客”兩個實體集之間的聯系一般是

A.一對一B.一對多C.多對一D.多對多

14.以下各選項中的代碼段執行后,變量y的值不為1的是()。A.intx=5,y=0;if(5)y=1;

B.intx=5,y=0;if(x)y=1;

C.intx=10,y=0;if(x=y)y=1;

D.intx=5,y=10;if(x=y)y=1;

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

A.在C語言中,預處理命令行都以“#”開頭

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

C.#include<stdi0.h>必須放在C程序的開頭

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

16.設單鏈表中結點的結構為已知指針p所指結點不是尾結點,若在*p之后插入結點*s,則應執行下列哪一個操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

17.下述關于數據庫系統的敘中正確的是______。

A.數據庫系統減少了數據冗余

B.數據庫系統避免了一切冗余

C.數據庫系統中數據的一致性是指數據類型的一致

D.數據庫系統比文件系統能管理更多的數據

18.指針可以用來表示數組元素,若已知語句:inta[3][7];則下列表示中正確的是()。

A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)

19.有以下程序:#include<stdio.h>intf(intx):main{intn=1,m;m=f(f(f(n)));printf("%d\n",m);}intf(intx){returnx*2;)程序運行后的輸出結果是()。A.1B.2C.4D.8

20.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之間的通信靠傳遞消息來實現

C.在外面看不到對象的內部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

二、2.填空題(20題)21.數據庫系統其內部分為三級模式,即概念模式、內模式和外模式。其中,______是用戶的數據視圖,也就是用戶所見到的數據模式。

22.下面程序的功能是輸出數組中最大的數,由a指針指向該元素。請填空。

main()

{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;

for(【】)

if(*a<*b)a=b;

printf("%d",*a);

}

23.在循環中,continue語句與break語句的區別是:______語句只是結束本次循環,然后進行循環的條件判定。

24.有如下圖所示的雙鏈表結構,請根據圖示完成結構體的定義:

structaa

{intdata;

【】}node;

25.下面程序的運行結果是【】。

#inelude<stdio.h>

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

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

main()

{inti=010,j=10;

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

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

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

main()

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

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

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

}

28.有以下語句段:

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值:

n1=10

n2=20

每個輸出行從第一列開始,請填空。

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

main()

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

for(i=O;i<10;i++)arr[i]=i;

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

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

}

30.以下程序的運行結果是______。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

31.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

32.性結構中,隊列的操作順序是先進先出,而棧的操作順序是______。

33.若x為int類型,請寫出與!x等價的C語言表達式______。

34.若由以下定義,則不移動指針p,且通過指針p引用值為98的數組元素的表達式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

35.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。

36.下列程序的運行結果是【】。

#include<stdio.h>

voidmain()

{ints=0,k;

for(k=7;k>4;k--)

{switch(k)

{case1:

case4:

case7:s++;break;

case2:

case3:

case6:break;

case0:

case5:s+=2;break;}}

printf("s=%d",s);}

37.以下程序的運行結果是【】。

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

38.下面程序的運行結果是【】。

voidswap(int*a,int*b)

{

int*tp;

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

}

main()

{

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

swap(p,q);

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

}

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

40.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

三、1.選擇題(20題)41.

執行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

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

A.在C程序中,main()函數必須位于程序的最前面

B.在C程序中,一條語句只能寫一行而不能寫多行

C.C程序是以行為基本單位的

D.C語言本身沒有輸入輸出語句

43.有以下程序:#include<stdio.h>main(){unsignedchara,b;a=413;b=4&3;printf("%d%d\n",a,b);}執行后的輸出結果是()。

A.70B.07C.11D.430

44.有下列程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;下列選項中表達式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->X

45.已知函數的調用形式:fread(buf,size,count,fp),參數buf的含義是

A.一個整型變量,代表要讀入的數據項總數

B.一個文件指針,指向要讀的文件

C.一個指針,指向要讀入數據的存放地址

D.一個存儲區,存放要讀的數據項

46.以下程序的輸出結果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不確定的值(因變量無定義)B.0C.-1D.1

47.有以下程序:mam(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結果是()。

A.ABCDBCDDB.ABCDC.BCDD.BCDCDD

48.若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結果是()。

A.0,0B.0,1C.1,1D.程序進入無限循環

49.函數調用:strcat(strcpy(str1,str2,),str3)的功能是()

A.將串str1復制到串str2中后再連接到串str3之后

B.將串str1連接到串str2之后再復制到串str3之后

C.將串str2連接到串str1之后再將串str3連接到串str1之后

D.將串str2連接到串str1之后再將串str1連接到串str3之后

50.需求分析最終結果是產生

A.項目開發計劃B.需求規格說明書C.設計說明書D.可行性分析報告

51.若主函數中有以下定義和語句:main(){doublea[3][4];……fun(a);}則正確的fun函數的首部是()

A.voidfun(double*s)

B.fun(double*s[4])

C.fun(double(*s)[3])

D.voidfun(double(*s)[4])

52.以下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");}

53.以下程序輸出的結果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX");char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

54.以下敘述中正確的是

A.C程序中注釋部分可以出現在程序中任意合適的地方

B.花括號“{”和“}”只能作為函數體的定界符

C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

55.下面能正確進行字符串賦值操作的是()。

A.chars[5]={"ABCDE"};

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

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

D.char*s;scanf("%s",&s);

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

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

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

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

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

57.以下能正確定義一維數組的選項是______。

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

58.數據處理的最小單位是()。

A.數據B.數據元素C.數據項D.數據結構

59.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤當前目錄的所有文件

B.寬行顯示A盤所有目錄的所有文件

C.寬行顯示A盤的所有目錄

D.顯示A盤中的文件名,每滿一屏后停頓一下

60.以下描述中正確的是()。

A.由于do-while循環中循環體語句只能是一條可執行語句,所以循環體內不能使用復合語句

B.do-while循環由do開始,用while結束,在while(表達式.后面不能寫分號

C.在do-while循環體中,是先執行一次循環,再進行判斷

D.do-while循環中,根據情況可以省略while

四、選擇題(20題)61.下列敘述中正確的是()。

A.數據的邏輯結構與存儲結構是一一對應的

B.算法的時間復雜度與空間復雜度一定相關

C.算法的效率只與問題的規模有關,而與數據的存儲結構無關

D.算法的時間復雜度是指執行算法所需要的計算工作量

62.

63.開發大型軟件時,產生困難的根本原因是()

A.大系統的復雜性B.人員知識不足C.客觀世界千變萬化D.時間緊、任務重

64.已知大寫:字母A的ASCIl碼是65,小寫字母a的ASCIl碼是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

65.

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

67.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

68.

69.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則

D.軟件工程只是解決軟件開發中的技術問題

70.在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是()。

A.aut0和register

B.extem和register

C.auto和static

D.static和register

71.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

fun(&a[3]);

}

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

A.5B.6C.8D.9

72.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,

溫馨提示

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

評論

0/150

提交評論