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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。

A.學生成績管理系統B.C語言編譯程序C.UNIX操作系統D.數據庫管理系統

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

A.m=4

B.m=2

C.m=6

D.m=5

3.有以下程序:#include<stdio.h>main(){char*s=“01234”;while(*(++s)!=‘\0’){switch(*s-‘0’){case0:case1:putchar(*s+1);break;case2:putchar(*s+1);break;case3:putchar(*s+1);default:putchar(*s+1);break;}}}程序運行后的輸出結果是()。

A.22345B.2345C.12345D.23445

4.下列關于棧的敘述中,正確的是()。

A.棧底元素一定是最后入棧的元素B.棧操作遵循先進后出的原則C.棧頂元素一定是最先入棧的元素D.以上三種說法都不對

5.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關系B.數據流C.控制流D.調用關系

6.下列方法中,屬于白盒法設計測試用例的方法的是()。

A.錯誤推測B.因果圖C.基本路徑測試D.邊界值分析

7.以下有關宏替換的敘述不正確的是()。A.A.使用宏定義可以嵌套

B.宏定義語句不進行語法檢查

C.雙引號中出現的宏名不替換

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

8.

9.能在O(1)時間內訪問線性表的第i個元素的結構是()

A.順序表B.單鏈表C.單向循環鏈表D.雙向鏈表

10.若有定義“doublea;floatb;shortc;”,若想把1.2賦給變量a,3.4賦給變量b,5678賦給變量c,程序運行時鍵盤輸入:1.23.45678<回車>則以下正確的讀入語句是()。A.scanf("%If%If%d",&a,&b,&c);

B.scanf("%If%If%hd",&a,&b,&c);

C.scanf("%If%f%hd",&a,&b,&c);

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

11.以下是正確的C語言實型常量的是()。

A..8e+8.B.e+8C.+8e.8D.+8.8e+8

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

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

13.有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

該程序的輸出結果是A.A.2B.4C.6D.8

14.軟件詳細設計的主要任務是確定每個模塊的()。

A.算法和使用的數據結構B.外部接口C.功能D.編程

15.對于下述說明,不能使變量p->b的值增1的表達式是______。structexm{inta;intb;floatc}*p;

A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++

16.

17.若變量已正確定義,在語句“if(W)printf("%d\n",k);”中,以下不可替代w的是()。

A.ab+cB.ch=getcharC.a==b+CD.a++

18.

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

A.\101B.\65C.\xffD.\019

20.有以下程序

#include<stdio.h>

main()

{inta=1,b=0;

if(--a)b++;

elseif(a==0)b+=2;

elseb+=3:

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

}

程序運行后的輸出結果是A.A.0B.1C.2D.3

二、2.填空題(20題)21.下列程序的輸出結果是______。

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

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

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

22.以下程序中函數huiwen的功能是檢查一個寧符串是否是回文,當字符串是回文時,函數返回字符串:yes!,否則函數返回字符串:no!,并在主函數中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請填空______。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

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

}

23.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

若運行時輸入:1234<回車>,程序的輸出結果是【】。

24.設一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則后序遍歷結果為【】。

25.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

26.若輸入tc,則程序的運行結果為【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

28.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

執行后輸出結果是【】。

29.下列程序段是從鍵盤輸入的字符中統計小寫字母的個數,用換行符結束循環。請填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

30.下列語句使指針p指向一個double類型的動態存儲單元。

p=【】malloc(sizeof(double));

31.表示“整數x的絕對值大于5”時值為“真”的C語言表達式是【】。

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

33.下述函數用于統計一行字符中的單詞個數,單詞之間用空格分隔。

wordnum(str)

charstr[];

{inti,num=0,word=0;

for(i=0;str[i]!=【】;i++)

if(【】==)word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

34.要使以下程序段輸出10個整數,請填入一個整數;

for(i=0;i<=【】;printf("%d\n",i+=2));

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

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

}

36.C語言用于結構化程序設計的3種基本結構是______、選擇結構和循環結構。

37.()是指用戶的應用程序與數據庫的邏輯結構是相互獨立的,也就是說,數據的邏輯結構改變了,用戶程序也可以不變。

38.在ER圖中,矩形表示【】。

39.下面能正確進行字符串賦值操作的是

40.下列程序的輸出結果是【】。

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

}

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){chara:'a',b;printf("%c,",++a);printf("%c\n",b=a++);}程序運行后的輸出結果是()。

A.b,bB.b,cC.a,bD.a,c

42.若變量已正確定義并賦值,以下符合C++語言語法的表達式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

43.下列程序執行后的輸出結果是

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=1;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2];)

A.3B.6C.9D.隨機數

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

A.18B.19C.20D.21

45.下面函數的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}

A.交換*ptr1和*ptr2的值

B.無法改變*ptr1和*ptr2的值

C.可能造成系統故障,因為使用了空指針

D.交換*ptr1和*pb2的地址

46.下面函數的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}

A.求字符串的長度B.比較兩個字符串的大小C.將字符串x復制到字符串y中D.將字符串x連接到字符串y后面

47.下列4個關于C語言的結論中錯誤的是()。

A.可以用do…while語句實現的循環一定可以用while語句實現

B.可以用for語句實現的循環一定可以用while語句實現

C.可以用while語句實現的循環一定可以用for語句實現

D.do…while語句與while語句的區別僅是關鍵字“while”出現的位置不同

48.以下選項中的表達式調用庫函數依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

49.若有定義:"inta[2][3];"則對a數組的第i行第j列元素的正確引用為()。

A.*(*(a+i)j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

50.設x為int型變量,執行以下語句,x=10;x+=x-=x-x;x的值為______。

A.10B.20C.30D.40

51.若有一些定義和語句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;則以下選項中錯誤的語句是

A.*q=0;B.w=p;C.*p=a;D.*p=*w;

52.有以下程序structSTU{charname[10];intnum;};voidf1(structSTUC){structSTUb={"LiSiGuo",2042};c=b;}voidf2(structSTU*C){structSTUb={"SunDan",2044};*c=b;}main(){structSTUa={"YangSan",2041},b={"WangYin",2043};f1(a);f2(&b);printf("%d%d\n",a.num,b.num);}執行后輸出結果是

A.20412044B.20412043C.20422044D.20422043

53.有以下程序:point(char*p){P+=3;)main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序運行后的輸出結果是()。

A.aB.bC.cD.d

54.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

55.設已包含頭文件<string.h>,下列程序段的運行結果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

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

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

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

C.數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫

D.數據庫系統需要操作系統的支持

57.下面程序的輸出結果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

A.1B.2C.7D.10

58.以下能將字符串,youareluck!正確讀入的語句組是()

A.chars[80];scanf("%s",s);

B.char*s:scanf("%s",s);

C.chars[80];gets(s);

D.char*s;gets(3);

59.若有結構體定義:

structstu{intnum;

charsex;

intage;

}al,a2;

則下列語句中錯誤的是()。

A.printf("%d,%C,%d",a1);

B.a2.age=a1.age;

C.a1.age++;

D.a1.num=5;

60.已知p為指針變量,a為數組名,i為整型變量,下列賦值語句中不正確的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

四、選擇題(20題)61.下列程序中c的二進制值是()。chara=2,b=4,c;c=a^b>>2;A.00000011B.00010100C.00011100D.00011000

62.開發軟件所需高成本和產品的低質量之間有著尖銳的矛盾,這種現象稱為()。

A.軟件投機B.軟件危機C.軟件工程D.軟件產生

63.

64.有以下定義和語句

65.程序調試的目的是

A.發現程序中的錯誤B.改正程序中的錯誤C.驗證程序的正確性D.改善軟件的性能

66.(21)算法的空間復雜度是指______。

A.算法程序的長度

B.算法程序中的指令條數

C.算法程序所占的存儲空間

D.算法執行過程中所需要的存儲空間

67.

68.函數fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始點是()。

A.文件開始B.文件末尾C.文件當前位置D.以上都不對

69.在軟件設計中不使用的工具是()。A.系統結構圖B.PAD圖C.數據流圖D.程序流程圖

70.如已定義X和Y為double類型,則表達式X=1,y=x+5/2的值是()。

A.2B.3.0C.3D.3.5

71.以下關于retllm語句的敘述中正確的是()。

A.一個自定義函數中必須有一條return語句

B.一個自定義函數中可以根據不同情況設置多條retum語句

C.定義成void類型的函數中可以有帶返回值的return語句

D.沒有return語句的自定義函數在執行結束時不能返回到調用處

72.

73.若有定義語句:“charS[3][10],(*k)[3],*p;”,則以下賦值語句正確的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

74.

75.

76.設有以下說明語句:

則下面的敘述中不正確的是()。

A.struct結構體類型的關鍵字

B.example是結構體類型名

C.x,y,z都是結構體成員名

D.struetex是結構體類型名

77.

78.設有數組定義:chararray[]="China";則數組array所占的空間為()。

A.4個字節

B.5個字節

C.6個字節

D.7個字節

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不確定的值

79.一個棧中初始元素依次為A、B、C、D、E?,F將元素1、2、3、4、5依次入棧,然后將所有的元素依次出棧,則元素出棧的順序是

A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA

80.

A.P=8;B.P=k;C.P=s[0];D.k=s;

五、程序改錯題(1題)81.下列給定程序中函數fun的功能是。用遞歸算法計算斐波拉契數列中第n項的值。從第l項起,斐波拉契數列為:1、1、2、3、5、8、l3、21、……

例如,若給n輸入7,則該項的斐波拉契數值為l3。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構。

六、程序設計題(1題)82.編寫函數fun,其功能是:實現兩個字符串的連接(不要使用庫函數strcat),即把p2所指的字符串連接到

pl所指的字符串的后面。

例如,分別輸入下面兩個字符串:

程序輸出:

注意:部分源程序在文件PROGl.C中。

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

參考答案

1.A

2.C[解析]第一次外循環的值為1.第一次內循環的值為3.不滿足條件執行m*=j即m的值為3;第二次的值為2.不滿足條件執行m*=*j,即m的值為6;第三次的值為1.不滿足條件執行m*=j,即m的值仍為6.第二次外循環的值為2.j的值為3.滿足條件,執行break語句,跳出循環。

3.D程序首先定義一個字符指針s,指向一個常量字符串“01234”;接著while循環的循環條件每次將s指向下一個字符,然后判斷s指向的字符是否為空字符“\\0”,若不是,則執行循環體,將當前字符與‘0’”的ASCII差值作為switch語句的常量表達式,執行對應的case語句。指針s指向空字符“\\0”時,則終止循環,程序結束。從常量字符串“01234”可知,循環過程中s指向的各個字符分別是1、2、3、4。當*s是字符“1”時,*s-‘0’的值為1,執行case1語句,輸出*s+1,即字符“2”;當*s是字符“2”時,*s-‘0’的值為2,執行case2語句,輸出*s+1,即字符“3”;當*s是字符“3”時,*s-‘0’的值為3,執行case3和default語句,兩次輸出*s+1,即字符“4”;當*s是字符“4”時,*s-‘0’的值為4,執行default語句,輸出*s+1,即字符“5”。綜上,程序輸出結果為23445。故本題答案為D選項。

4.B棧是先進后出,因此,棧底元素是先入棧的元素,棧頂元素是后入棧的元素。

5.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內容,流程線表示操作的先后次序。帶箭頭的線段在數據流程圖中表示數據流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關系。在模塊之間用帶有箭頭的線段表示調用關系。構成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

6.CC)【解析】白盒測試方法也稱為結構測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。

7.D解析:本題考查宏替換的規則。宏替換有兩類:簡單的字符替換和帶參數的宏替換。使用宏應注意:①宏定義僅僅是符號替換,不是賦值語句,因此不做語法檢查:②為了區別程序中其他的標示符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。

8.B

9.A

10.Cscanf函數用于輸入數據。第1個參數表示輸入格式控制。本題變量a是double類型,使用格式控制符%If;變量b是float類型,使用%If;變量c是short類型,使用%hd,選項C正確。本題答案為C選項。

11.DC語言中,實型常量有兩種表示形式:小數形式和指數形式。其中指數形式的一般形式為:尾數E(或e)整型指數。C語言規定,字母E或e之前必須要有數字,且E或e后面的指數必須是整數,所以選項A、B、C錯誤,選項D正確。故本題答案為D選項。

12.B

13.B

14.A解析:從軟件開發的工程化觀點來看,在使用程序設計語言編制程序以前,需要對所采用算法的邏輯關系進行分析,設計出全部必要的過程細節,并給予清晰的表達。詳細設計的任務就是要決定各個模塊的實現算法,并精確表達出這些算法。本題正確答案為選項A。

15.D解析:p->b應作為一個整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達式的含義是使p+1所指結構體變量中的成員b的值增1。

16.A

17.A符號<>不是C語言中的運算符,所以不能替代。

18.D

19.D在選項中,\\019,以0開頭的數都為八進制數,而八進制的表示數字是0~7,所以答案選擇D。

20.C解析:本題考察運算符和選擇語句,執行到if語句時,--a為0,所以不會執行后面的語句,但是會執行elseif后面的語句,所以執行后,b=2,選項C)正確。

21.1234theend1,2,3,4,theend解析:本題考查帶參數的宏的定義。第1次循環,i=1時,調用PRINT(1),P(1)輸出1;第2次循環,i=2時,調用PRINT(2),P(2)輸出2:第3次循環,i=3時,調用PRINT(3),P(3)輸出3:第4次循環,i=4時,調用PRINT(4),P(4)輸出4,theend。

22.str+strlen(str)-1str+strlen(str)-1解析:先從main函數開始看,它先讀入字符串,接下來肯定是要判斷這個字符串是否是回文,冉看huiwen函數,它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括結束符‘/0‘),將p1左移,p2右移,直到這兩個指針相遇,如果在移動過程中發現p1!=p2,則該字符串不是回文,否則其是同文。因此。在空中填str+strlen(str)-1。

23.1010解析:函數sub遞歸調用的返回值被作為再次調用sub函數的實參傳給函數sub的形參,共進行3次遞歸調用。第1次調用sub(1234)的返回值為1234/10+1234%10=127;第2次調用sub(127)的返回值為127/10+127%10=19;第3次調用sub(19)的返回值為19/10+19%10=10。所以程序的輸出為10。

24.DEBFCA

25.軟件開發

26.tc

27.efghefgh解析:本題定義了一個字符型指針變量p并通過賦初值讓它指向了一個字符串,定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強制轉換為長整型地址值并賦值給q,然后執行“q++;”,地址值增加了4,執行語句“r=(char*)q;”,把長整型指針變量q的值再強制轉換成字符型地址值并賦給r,r的值應為字符串中字符“e”的地址,最后輸出,指向的字符中,是“efgh”。

28.-4-4解析:if…else構造了一種二路分支選擇,是一種最基本的選擇結構,if(條件)S1(if分結構)elseS2(else分結構),它的工作過程是:先對條件表達式進行判斷,若為真(成立,值為非零),就執行if分結構(S1);否則(不成立,值為0),就執行else分結構(S2)。本題中,n=0,可以判斷(!n)為真,執行x=x-1=2-1=1;m=1,可以判斷(m)為真,執行x=x-2=1-2=-1進而可以判斷(x)為真,執行x=x-3=-1-3=-4。

29.c>='a'&&c<='z'c>='a'&&c<='z'解析:小寫字母在內存中以ASCII的形式存入,且從a到z依次遞增,所以可以直接用c>='a'&&c<='z'判斷是不是小寫字母;c!='\\n'判斷是用換行符結束循環。

30.(double*)

31.x>5||x<-5或abs(x)>5x>5||x<-5或abs(x)>5解析:要使整數x的絕對值大于5,則x大于5或x小于-5,用C語言表示即為:x>5||x<-5或者abs(x)>5。

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

33.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:觀察題目要求,可以知道以下幾點:

①for循環的結束條件應當是:str[i]已是字符串的最后一個字符;

②str[i]代表字符串sb中的第i+1個字符:

③整型變量num的值是要記錄的單詞的個數。

C語言中規定字符串的最后一個字符是一個隱含的字符串結束符“\\0”,所以在題中第一個空中應填寫“\\0”;題中第二個空應填寫“str[i]”,以判斷當前位置的字符是否為空格;題中第二個空中應當填寫“num++”,通過變量num的加1累加得到字符串中的單詞個數。

34.18或1918或19

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

36.順序結構順序結構解析:結構化程序有3種摹本結構,即順序結構、選擇結構(包括if語句和switch語句)和循環結構(包括for語句、while語句、do…while語句)。

37.邏輯獨立性邏輯獨立性解析:數據獨立性包括數據的物理獨立性和邏輯獨立性。物理獨立性是指用戶的應用程序與存儲在磁盤上的數據庫中數據是相互獨立的。數據在磁盤上的數據庫中怎樣存儲是由DBMS管理的,用戶程序不需要了解,應用程序要處理的只是數據的邏輯結構,這樣當數據的物理存儲改變時。應用程序不用改變。邏輯獨立性是指用戶的應用程序與數據庫的邏輯結構是相互獨立的,也就是說,數據的邏輯結構改變了,用戶程序也可以不變。

38.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯系。

39.C

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

41.A解析:程序中pdntf('%c',++a)是先將a加1,再輸a,因此輸出的是\'b\',而pfintf('%c\\n',b=a++)是先將a的值賦給b,a再加1,所以輸出的也是\'b\'。

42.B解析:a=b=c+2實際上相當于a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。注意:選項A)中包含一個不合法的運算符“:=”;選項C)應改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C++語言規定賦值號的左邊只能是單個變量,不能是表達式或常量等。注意:C++語言賦值語句的運用,

43.B解析:本題中,a[1][2]是二維數組中的第6個元素,對應for循環中i的值為5,p[5]=5+1。

44.A解析:本題首先定義了一個數組并附初值,然后通過兩個for循環計算3、4、5、6的累加值,并用s保存。

45.B解析:函數中將指針變量ptr1和ptr2中的值交換,而不是交換指針ptr1和ptr2所指變量中的值。

46.A

47.D解析:本題考查幾個循環語句的關系。①do…while語句、while語句、for語句所實現的循環可以相互替代;②do…while語句和while語句的區別是do…while語句至少執行一次。

48.C

49.A解析:本題考查如何通過地址來引用數組元素。通過地址來引用數組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i][j];⑤*(&a[0][0]+3*i+j)。

50.B解析:本題x=10,表達式“x+=x-=x-x;”的求解步驟如下:先進行x-=x-x的運算,相當于)x=x-(x-x)=x=10;再進行x+=x的運算,即x=x+x=20。

51.A解析:本題考核的知識點是指針變量的使用與空指針(NULL)基本概念.本題中定義了3個指向整型的指針變量p、q、w,并讓p指向a,讓q指向b,通過將q的值賦給w,使w也指向b,最后將NULL賦值給q。由整形變量指針的定義可知,可以給整型指針指向的變量賦一個常數值(表達式),故選項C和選項D是正確的;可以給指針變量賦一個同種類型的指針變量(或地址值),故選項B也是正確的;選項A錯誤,因為q不指向任何變量,給一個空指針指向的單元賦值是錯誤的。所以,A選項為所選。

52.A解析:本題中首先定義了一個結構體類型STU,它由一個字符數組和一個整型變量num組成。然后定義兩個函數f1和f2。其中f1是值傳遞的,f2是地址傳遞的。主函數中定義兩個結構體變量a和b并分別賦初值,接著調用函數f1(a),由于函數f1是值傳遞,故執行該函數后并沒有改變a的值,在接著調用函數f2(&b),由于該函數是地址傳遞,執行該函數后將使變量b的值為{“SunDan”,2044},故函數最后輸出的a.num和b.num的值為2041和2044。

53.A解析:本題的考點是C語言的函數參數的傳遞方式(傳值)。函數poret的形參是一個char型指針p,當調用point(p)時,將指針p的值傳遞給形參,函數point中的p+=3,并不影響主程序main中的p值,因此函數調用結束后,p仍指向b的首地址,輸出*p的值應是字符a。

54.B解析:在內存中,字符數據以ASCII碼存儲,它的存儲形式就與整數的存儲形式相類似。C語言使字符型數據和整型數據之間可以通用。也可以對字符數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數組中的下一個元素。

55.A解析:頭文件<string.h>是字符串處理函數對應的頭文件,要想調用C語言的庫函數時,都要在程序中嵌入該函數對應的頭文件,否則無法使用庫函數。

strcpy(s1,s2)把s2中的字符串復制到s1中,所以結果就為s2的長度。

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

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

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

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

57.B解析:本題考查函數的調用。函數fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個局部變量,它的值在fun2函數內有效;在主函數中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

58.C

59.A解析:題中a1和a2兩個結構體變量名所對應的成員相同,可以與運算'++'相結合。結構體變量的輸出格式:prinf('要輸出變量名:%d\\t',結構變量名.要輸出的成員變量名)。

60.D

61.A本題主要者查右移運算和按位異或。把b化為二進制數為00000100,右移兩位后為00000001,a的二進制為00000010,兩者異或為00000011。

62.B隨著計算機的應用范圍日益廣泛,傳統的軟件開發成本難以控制,進度不可預計;軟件系統的質量和可靠性很差;軟件文檔相當缺乏,軟件系統不可維護;軟件開發生產率很低,軟件產品供不應求;軟件產品成本十分昂貴且質量低下等特點日益顯現,這些成為計算機應用的一個“瓶頸”,于是出現了所謂的“軟件危機”。

軟件工程是試圖用工程化的方法開發軟件,從而解決或緩解軟件危機而產生的一門學科。它是采用工程化的方法開發和維護軟件的工程學科。把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術和方法結合起來,以便經濟地開發出高質量的軟件并有效地維護它。軟件工程包括三個要素,分別是方法、工具和過程。

63.B

64.A嵌套的結構體定義,要訪問內層的成員,需要一層層用“.”訪問,所以答案選擇A)。

65.B調試也稱排錯或糾錯。它與成功的測試形影相隨,測試成功的標志是發現錯誤。根據錯誤跡象,診斷錯誤的原因和位置,進而改正程序中的錯誤,這就是調試的任務。

調試分為靜態調試和動態調試,靜態調試就是指對源程序進行分析,然后確定可能出錯的地方并進行排錯。動態調試是指對程序的運行進行跟蹤并觀察其出錯點,然后進行排錯。

靜態調試通??梢圆捎萌缦聝煞N方

溫馨提示

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

評論

0/150

提交評論