




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年四川省南充市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.和順序棧相比,鏈棧有一個比較明顯的優勢是()。
A.通常不會出現棧滿的情況B.通常不會出現棧空的情況C.插入操作更容易實現D.刪除操作更容易實現
2.
3.以下選項中的表達式調用庫函數依次求-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)
4.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結果是()。
A.1B.2C.4D.死循環
5.對如下二叉樹進行后序遍歷的結果為()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
6.下述程序的運行結果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正數B.負數C.零D.不確定的值
7.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
8.C語言中,組成數據文件的成分是()。A.A.記錄
B.數據行
C.數據塊
D.字符(字節)序列
9.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結果是______。
A.運行后報錯B.66C.611D.510
10.下面程序的輸出結果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
11.面向對象方法中,繼承是指()。
A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制
12.下列定義數組的語句中正確的是()。
A.#defmeN10intx[N];
B.intN=10;intx[N];
C.intx[0..10];
D.intx[];
13.在位運算中,操作數每右移一位,其結果相當于()
A.操作數乘以2B.操作數除以2C.操作數除以16D.操作數乘以16
14.在最壞情況下比較次數相同的是()。A.冒泡排序與快速排序B.簡單插入排序與希爾排序C.簡單選擇排序與堆排序D.快速排序與希爾排序
15.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
16.
17.一個二維數組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[1][2]的值為()。
A.2B.4C.6D.8
18.以下正確的字符串常量是()。A.“\\\”B.‘abc’C.OlympicGamesD.“”
19.在含有n個項點有e條邊的無向圖的鄰接矩陣中,零元素的個數為________。
A.eB.2e9C.n2-eD.n2-2e
20.用單鏈表方式存儲的線性表,存儲每個結點需要兩個域,一個數據域,另一個是()。
A.當前結點的所在地址B.后繼結點的所在地址C.空指針域D.空閑域
二、2.填空題(20題)21.下列程序的運行結果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
22.在樹形結構中,樹根結點沒有______。
23.以下程序運行后的輸出結果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
24.下面程序的功能是將字符串a下標值為偶數的元素由小到大排序,其他元素不變,請填空。
#include<stdio.h>
main()
{chara[]="labchmfye",t;
inti,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);
printf("\n");
}
25.以下程序的輸出結果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
}
26.下列程序的運行結果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
27.下列程序的輸出結果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
28.以下程序的輸出結果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
29.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請填空以實現拷貝。(注:不使用逗號表達式)
while(s[i]=【】;j++;}
d[j]=0;
30.設有以下定義
struetss
{intinfo;struetss*link;}x,y,z;
且已建立如下圖所示鏈表結構:
請寫出刪除結點y的賦值語句【】。
31.以下程序用來輸出結構體變量ex所占存儲單元的字節數:
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
32.數據流的類型有______和事務型。
33.算法復雜度主要包括時間復雜度和【】復雜度。
34.軟件危機出現于60年代末,為了解決軟件危機,人們提出了【】的原理來設計軟件,這就是軟件工程誕生的基礎。
35.若從鍵盤輸入58,則以下程序輸出的結果是______。
main{)
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
36.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。
37.數據結構包括數據的邏輯結構、數據的【】以及對數據的操作運算。
38.以下程序運行后的輸出結果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
39.在面向對象方法中,類的實例稱為______。
40.在面向對象方法中,對象之間進行通信的構造稱為()。
三、1.選擇題(20題)41.數據庫、數據庫系統和數據庫管理系統之間的關系是()。
A.數據庫包括數據庫系統和數據庫管理系統
B.數據庫系統包括數據庫和數據庫管理系統
C.數據庫管理系統包括數據庫和數據庫系統
D.三者沒有明顯的包含關系
42.以下正確的數組定義語句是()
A.inty[1][4]={1,2,3,4,5,}
B.floatx[3][]={{1},{2},{3}}
C.longs[2][3]={{1},{1,2}{1,2,3,}}
D.doublet[][3]={0}
43.6.C語言中下列敘述正確的是()
A.不能使用do-while語句構成的循環
B.do-while語句構成的循環,必須用break語句才能退出
C.do-while語句構成的循環,當while語句中的表達式值為非零時結束循環
D.do-while語句構成的循環,當while語句中的表達式值為零時結束循環
44.下列隊列的描述中,正確的是()
A.隊列屬于非線性表B.隊列在隊尾刪除數據C.隊列按“先進后出”進行數據操作D.隊列按“先進先出”進行數據操作
45.有下列二叉樹,對此二叉樹中序遍歷的結果為()。
A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ
46.下列敘述中不正確的是()。
A.在C語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數中,最好使用全局變量
C.外部變量可以在函數之間傳遞數據
D.自動變量實質上是一個函數內部的局部變量
47.有以下程序
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序運行后的輸出結果是
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
48.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n"i,j);}程序運行后的輸出結果是
A.9,9B.8,9C.1,8D.9,8
49.在16位IBM-PC機上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是
A.1B.2C.7D.11
50.下列敘述中,正確的是()。
A.用E—R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系
B.用E—R圖只能表示實體集之間一對一的聯系
C.用E—R圖只能表示實體集之間一對多的聯系
D.用E—R圖表示的概念數據模型只能轉換為關系數據模型
51.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);為使程序不陷入死循環,從鍵盤輸入的數據應該是______。
A.任意正奇數B.任意負偶數C.任意正偶數D.任意負奇數
52.若有說明:int*p,m=5,n;以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
53.下列敘述中正確的是A.程序設計就是編制程序
B.程序的測試必須由程序員自己去完成
C.程序經調試改錯后還應進行再測試
D.程序經調試改錯后不必進行再測試
54.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;
A.30B.29C.24D.22
55.下列敘述錯誤的是()。
A.在C語言中的保留字必須小寫
B.變量的存儲類型決定了變量的存儲位置及其生存期
C.宏定義以#define開頭,行末必須加分號
D.在C語言中的注釋行可以出現在程序的任何位置
56.一個源文件中的外部變量的作用域為()。
A.本文件的全部范圍B.本程序的全部范圍C.本函數的全部范圍D.從定義該變量的位置開始到本文件結束
57.若有定義和語句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);則輸出結果是()。
A.20,10B.20,20C.10,20D.10,10
58.以下敘述中正確的是()。
A.C程序中注釋部分可以出現在程序中任意合適的地方
B.花括號"{"和"}"只能作為函數體的定界符
C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名
D.分號是C語句之間的分隔符,不是語句的一部分
59.以下程序的輸出結果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}
A.0B.1C.2D.3
60.以下敘述中錯誤的是()。
A.改變函數形參的值,不會改變對應實參的值
B.函數可以返回地址值
C.可以給指針變量賦一個整數作為地址值.
D.當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL
四、選擇題(20題)61.下列函數的類型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
62.
63.
64.閱讀下面程序段,則執行后的結果為()。
A.64B.8C.56D.0
65.下列選項中,能夠滿足“只要字符串sl等于字符串s2,則執行sT”要求的是()。程序執行后的輸出結果是()。
A.2B.1C.3D.0
66.
67.設有如下說明
typedefstruct
{intnumber;charclass;doublescore;}student;
則以下選項中,能正確定義結構體數組并賦初值的語句是()。
A.studenttt[2]={{189,’A’,62},{190,’B’,75}};
B.studenttt[2]={189,’"A",62,190,"B",75};
C.structtt[2]={{189,’A’},{190,’B’}};
D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};
68.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發送()。A.調用語句B.命令C.口令D.消息
69.
以下程序的輸出結果是()。
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.程序陷入死循環
70.以下程序的輸出結果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
71.在軟件生命周期中,能準確地確定軟件系統必須做什么和必須具備哪些功能的階段是()。A.概要設計B.詳細設計C.可行性分析D.需求分析
72.有以下程序:
程序運行后的輸出結果是()。
A.9B.8C.7D.10
73.對于循環隊列,下列敘述中正確的是()。A.隊頭指針是固定不變的
B.隊頭指針—定大于隊尾指針
C.隊頭指針_定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
74.若有以下函數首部:
intfun(doublex[10],int*n)
則下面針對此函數的函數聲明語句中正確的是()。
A.intfun(double,int);
B.intfun(double木,int*);
C.intmn(double*x,intn);
D.intfun(doublex,intint*n)
75.C語言的基本單位是()。
A.函數B.過程C.子程序D.子函數
76.(74)用鏈表表示線性表的優點是()
A.便于插入和刪除操作
B.數據元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機存取
77.有以下程序:
程序執行后的輸出結果是()。
A.5,11B.5,5C.11,11D.11,5
78.若有說明:inti,j=7,*p=&i;,則與i=j;等價的語句是()。
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;
79.
80.結構化分析可以使用的工具是()。
A.N—s圖B.DFD圖C.PAD圖D.程序流程圖
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串abcd(以Enter鍵結束),然后輸入m值為3,則結果為***abcd。注意:字符串的長度最長允許為79。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數proc(),它的功能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指向字符串中最后一個字母。在編寫函數時,不得使用C語言的字符串函數。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容應當是abcdefg****。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填人所編寫的若干語句。試題程序:
參考答案
1.A
2.D
3.C
4.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結果為1;第2次判斷條件即while(0),條件為假,結束循環,輸出回車換行符。故本題答案為A選項。
5.D解析:后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。
6.A本題考查符符串比較函數和兩個字符串比較的原則這兩個知識點。
(1)兩字符串比較的原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大(2)strcmp(s1,s2)的返回值,當str1<str2時,返回值為負數;當str1=str2時,返回0;當str1>str2,返回值為正數。
7.B第一個for循環的作用是讓p指向每行的首地址,第二個for循環的作用是把它指向的字符串輸出,故選擇B選項。
8.D解析:C語言中的文件是流式文件。流式文件是一種無結構文件,即整個文件是一串字符流或二進制流。文件的存取以字符或字節為單位。
9.A解析:本題考核的知識點是通過指針引用數組的元素的方法.本題中首先定義了一個一維數組a并初始化,由于定義該數組的時候省略了長度,因此該數組的長度為初始化時候賦初值的個數即為12。數組名a代表數組的首地址,所以*p=a+5語句使得p指向數組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。
10.A解析:p為指針型變量。第一次循環,p=s,p的值為字符數組s的首地址,輸出字符串'ABCD'。p++,第二次循環,p的值為字符數組s的首地址加1,輸出字符串'BCD'。p++,第三次循環,p的值為字符數組s的首地址加2,輸出字符串'CD'。p++,第4次循環,p的值為字符數組s的首地址加3,輸出字符串\'D'。
11.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。
12.A數組定義的一般形式為:類型說明符數組名[常量表達式]。B選項中N是變量,不能用變量定義數組長度。C選項中數組長度是一串非法的數字。定義數組時必須為其指明長度,D選項中的數組長度為空,所以非法。故本題答案為A選項。
13.B
14.A冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數均為n(n-1)/2,堆排序在最壞情況下比較次數為nlog2n,希爾排序在最壞情況下需要比較的次數是nr(1﹤r﹤2)。本題答案為A選項。
15.A解析:希爾排序法的基本思想是:將整個無序列分割成若干小的子序列分別進行插入排序。
16.A
17.C
18.D在C語言中,字符串常量是用雙引號標注的字符序列,因此B選項和C選項不正確。字符序列中可包含一些轉義字符,轉義字符以“\\”開頭。A選項中包含3個前兩個(\\\\)代表一個“\\”字符,后面一個為“””。因為\\”被看作一個“””,所以該字符串缺少一個結束的“””。因此A選項不正確。D選項的兩個“”之間沒有任何字符,代表的是一個空串,是合法的字符串常量,因此D選項正確。B選項的abc應該使用雙引號標注。故本題答案為D選項。
19.D
20.B
21.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數組中前面兩項的和賦值給數組當前元素,得到a的值應為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數組中的元素以每行2個的形式輸出。
22.前件前件
23.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環條件,執行循環語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環條件,執行循環語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環條件,則退出循環,m[2].k=4。所以最后輸出為13431。
24.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:題目要求排序的元素是下標值為偶數的元素,外循環循環4次,i的值分別為0、2、4、6,所以內循環也循環4次,i的值就應為2、4、6、8,在循環體中已經有了對j加1的操作,因此for后括號中的語句應再對j加1,保證下標為偶數。if語句的功能是如果后一個數比前一個數小則交換位置。
25.2468
26.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執行后面的語句,直接執行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。
27.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。
28.852852解析:循環前,變量y的值為9,其中,循環語句在y大于0情況下循環,每次循環后y的值都減1。循環體是當y能被3整除時輸出表達式--y,輸出的是減1后的y值。這樣,第一次循環因y為9,能被3整除,輸出8,y也變成8。又經兩次循環,y的值變為6,又讓y減1變成5,并輸出5;又經兩次循環,y的值變成3,讓y減1變成2,輸出2;再經兩次循環后,y的值變成0,結束循環,所以程序輸出852。
29.s[i++]s[i++]解析:本題中為了能實現字符串的拷貝,需要使字符數組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現。
30.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:鏈表中結點的刪除,要刪除結點y,只需要讓結點x的指針域指向y結點的指針域所指向的后續結點就可,因此只需把結點z的地址賦給x的指針域就可以了,即讓結點x的指針域指向結點z。而結點z的地址保存在結點y的指針域中,因此只需把結點y的指針域賦值給結點x的指針域即可。
31.ex或structstex或structst解析:求一個變量所占的存儲單元數,用sizeof函數,參數為該變量名或其變量類型。
32.變換型變換型
33.空間空間解析:程序在計算機上運行時所耗費的時間由程序運行時所需輸入的數據總量、對源程序進行編譯所需時間、計算機執行每條指令所需時間、程序中的指令重復執行的次數等決定。習慣上常常把語句重復執行的次數作為算法運行時間的相對量度,稱作算法的時間復雜度。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。
34.軟件工程學軟件工程學
35.585858585858解析:在程序中,執行scanf()語句后,a被賦值為58。接著執行第一個if語句,因為,a=58>50,執行第一個訂語句后面的輸出語句,輸出58;接著執行第二個if語句,因為,a=58>4O,執行第二個if語句后面的輸出語句,輸出58;接著執行第三個if語句,因為,a=58>30,執行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。
36.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。
37.存儲結構數據結構包括3個方面,即數據的邏輯結構、數據的存儲結構及對數據的操作運算。
38.bb解析:在ASCII碼表中,至少有3個值考生得記?。海?,的ASCII碼為48;‘A’的ASCII碼為65;‘a’的ASCII碼為97。因為記住這3個后,其他字母和數字的ASCII碼就可以很容易推出來了。本題中,“B”的ASCII碼為‘A’+1=66,所以,字符類型m的ASCII為66+32=98=97+1=‘a’+1,所以最后輸出的結果為字符‘b’。
39.對象對象解析:類描述的是具有相似性質的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質,它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。
40.消息消息解析:對象之間進行通信的構造叫做消息,它請求對象執行某一處理或回答某一要求的信息,它統一了數據流和控制流。
41.B數據庫可以看成是長期存儲在計算機內的、大量的、有結構的和可共享的數據集合。數據庫可以被直觀地理解為存放數據的倉庫,只不過這個倉庫在計算機的大容量存儲器上,例如,硬盤就是一種最常見的計算機大容量存儲設備。數據必須按一定的格式存放,因為它不僅需要存放,而且還要便于查找和使用。
數據庫管理系統(DBMS)是位于用戶與操作系統之間的完成數據管理的系統軟件。它是用戶與數據庫的接口。應用程序一般要通過DBMS才能訪問數據庫。在數據庫建立、運用和維護時對數據庫進行統一控制。
數據庫系統是指在計算機系統中引入數據庫后的系統,一般由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員和用戶構成。數據庫是整個數據庫系統最基本的成分。數據庫管理系統是數據庫系統的核心。數據庫管理員是數據庫系統的責任維護者,負責對數據庫系統的整體維護。
綜上所述,本題中只有B選項的描述是正確的。
42.D解析:選項A二維數組行下標為1,即數組有一行元素,列下標為4表示一行中包含4個元素,而初值列表中有5個元素,故A錯。選項B省略了列下標故錯誤。選項C二維數組行下標為2,數組有2行元素,而初值列表中有3行元素,故C錯誤。故D為所選。
43.D解析:本題考查do-while語句。C語言支持do-while語句,選項A)錯誤;do-while構成的循環,當while語句中的表達式值為零時結束循環,故選項B)、C)都是錯誤的。
44.DD)【解析】隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭,允許插入的一端叫做隊尾。隊列的操作數是依據先進先出的原則進行的。因此隊列亦稱作先進先出的線性表,或后進后出的線性表。
45.B對二叉樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。在遍歷左、右子樹時,注意依舊按照“左子樹一根結點一右子樹”的順序。本題的遍歷順序是這樣的:①首先訪問左予樹:BDEY;②在左子樹BDEY中,也按中序遍歷,先訪問左子樹DY;在左子樹DY中,也按中序遍歷,先訪問左子樹,左子樹沒有,則訪問根結點D,然后訪問右子樹Y;③接著訪問根B,再訪問右子樹E;④訪問左子樹BDEY后,接著訪問根結點A,接著訪問右子樹CFXZ;⑤右子樹CFXZ的訪問順序同理可得:FCZX。
46.B解析:編譯時,編譯系統不為局部變量分配內存單元,而是在程序運行中,當局部變量所在的函數被調用時,編譯系統根據需要要臨時分配內存,調用結束空間釋放;全局變量一經定義,編譯系統為其分配固定的內存單元,在程序運行的自始至終都占用固定的單元。在考慮內存不定的情況下,最好使用全局變量。
47.B解析:調用函數f()時,將數組a的地址傳遞給了指針q,此時q指向的就是數組a的第一個元素a[0]。在5次循環過程中,q始終指向a[0],因此a[0]的值增加了5。最后的輸出結果為'6,2,3,4,5'。
48.D解析:本題中首先定義了字符數組a,由于它的長度省略,所以其長度由初值個數確定,為9。接著將sizeof()函數返回的值賦給i(SIZeof()函數的作用是返回運算對象占用的字符數),所以i值為9。然后將strlen()函數的返回值賦給j(strlen()函數的作用是返回字符串的長度,不包括字符串的結束標記'\\0'),所以j值為8,所以最后輸出的i,j的值為9,8。所以4個選項中D正確。
49.D解析:結構體變量所占用內存的字節數是其所有成員所占用內存字節數之和。本題中整型變量i所占用的內存是2字節,字符型變量ch所占用的內存是1字節,雙精度型變量f所占用的內存是8字節,三者相加即可。
50.A\n兩個實體之間的聯系實際上是實體集問的函數關系,這種函數關系可以有下面幾種,即一對一的聯系、一對多(或多對一)的聯系和多對多的聯系;概念模型便于向各種模型轉換。由于概念模型不依賴于具體的數據庫管理系統,因此,容易向關系模型、網狀模型和層次模型等各種模型轉換。
\n
51.D解析:do-while循環是先執行循環體再進行條件判斷,當執行了一次循環以后,t變成了-1,每次循環后t都減2,t將永遠為負奇數,又循環結束的條件是n=t,因此只有當n為負奇數時才不會陷入死循環。
52.D解析:“&”是求址運算符,“*”是指變量說明符。選項A)、B)應改為scanf('%d',p);選項C)中指針變量p未指向一確定的內存單元,不能為其賦值,并且這樣做很危險,建議不使用。
53.C解析:軟件設計的基本目標是用比較抽象概括的方式確定目標系統如何完成預定的任務,軟件沒計是確定系統的物理模型。軟件測試即使用人工或自動手段來運行或測定某個系統的過程,其日的在于檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。軟件調試后要進行回歸測試,防止引進新的錯誤。
54.D解析:結構體變量所占內存長度是各成員占的內存長度之和,每個成員分別占有自己的內存單元;共用伸變量所占的內存長度等于最長的成員的長度。結構件變量aa中,成員r1占2個字節,r2占8個字節,r3占4個字節,共用體ua占8個字節,所以共占用2+8+4+8=22個字節。
55.C解析:本題涉及C語言最基本的4個知識點:①C語言的保留字必須小寫;②變量的存儲類型不同,其存儲位置和生存期也不一樣:③C語言允許其注釋部分出現在程序中的任何位置;④宏定義以#define開頭,行末不需要加分號。
56.D解析:一個源文件中的外部變量的作用域是從定義該變量的位置開始到本文件結束。
57.D解析:本題考查指針變量的賦值。
**pp是定義了一個指向指針的指針變量,語句pp=&p的意思是將pp指向指針p,*p和**pp都是指針p所指的內存空間的內容,即b的值。
58.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確:在C語言中,函數體是從花括號{開始,到花括號}結束。但沒有規定花括號{和}只能作為函數體定界符,故選項B錯誤;選項C中前半句是正確的,C程序由一個或多個函數所組成,但不是所有的函數都由用戶自己命名,有些函數,比如主函數main()就不能由用戶來命名,故選C不正確;在C語言中明確規定每條語句以分號;結束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。
59.B
60.C解析:函數形參和實參分別占用不同的內存單元,改變形參的值不會影響對應實參的值,選項A)正確。指針類型的函數可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數,選項C)錯誤。
61.A本題考查函數值的類型。在函數調用時,盡管Y的類型是float.x的類型是double,但是因為函數定義時沒有指定類型說明,系統默認函數值的類型為int型,所以計算后Y的類型是int型。
62.A
63.A
64.C函數之間的數據傳遞。如果沒有指明函數值類型,則默認函數返回值的類型為int型。
65.A比較兩個字符串的大小可以用strCmp函數,選項A)正確。
66.C
67.AB項定義格式不對,tt[2]只有兩個元素,C項缺少了結構體名,而結構體名不可少,D項一樣缺少了結構體名。
68.D解析:面向對象的世界是通過對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協助進行,這樣的機制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執行某一處理或回答某一要求的信息,它統一了數據流和控制流。
69.D
\n當i一0時,兩個if都不滿足,所以都不執行,直接執行i++語句,此時i為1,S為l,返回for循環中;當i=1時,同樣不執行兩個if語句,執行i++后,i=2,s=3,返回for循環中;i=2時也不執行if語句,執行i++后,i=3,s=6,接著又執行for循環,此時符合第一個if語句,執行到continue時不再執行i++了,continue是跳出本次循環,接著下次循環。永遠這樣執行下去,i的值永遠為3,故選擇D選項。
\n
70.C解析:C語言規定如果全局變量與局部變量同名,則在局部變量的作用域內全局變量不起作用。程序開頭定義的變量x為全局變量,函數incre中定義的變量x是局部靜態變量,存放在靜態存儲區,incre調用結束后不釋放x占據的存儲單元。main函數中使用的x是全局變量x=3,所以main函數中調用函數incre兩次。調用過程如下。第1次調用:x=x*(x+1)=1×(1+1)=2,printf函數輸出2;第2次調用:x=x*(x+1)=2×(2+1)=6,printf函數輸出6。
71.D通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說:軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。
軟件生命周期的主要活動階段為:
①可行性研究和計劃制定。確定待開發軟件系統的開發目標和總的要求,給出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成開發任務的實施計劃。
②需求分析。對待開發軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統的功能。編寫軟件,規格說明書及初步的用戶手冊,提交評審。
③軟件設計。系統設計人員和程序設計人員應該在反復理解軟件需求的基礎上,給出軟件的結構、模塊的劃分、功能的分配以及處理流程。
④軟件實現。把軟件設計轉換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
⑤軟件測試。在設計測試用例的基礎上,檢驗軟件的各個組成部分。編寫測試分析報告。
⑥運行和維護。將已交付的軟件投入運行,并在運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改。
72.A題目中靜態局部變量a,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放。所以第-次調用函數執行n+=a++;時a先與n相加在再進行自增。n的值為4,a的值為2,且a變量執行完后空間沒有釋放。再執行s:。+f(a)時,s的值為4,調用f(a)函數時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。
73.D循環隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環利用的隊列結構,所以對頭指針有時可能大于隊尾指針有時也可能小于隊尾指針,故本題答案為D)。
74.B函數聲明的一般形式為:“類型說明符被調函數名(類型形參,類型形參,……);”或“類型說明符被調函數名(類型,類型,……);”由于函數首部為intfun(doublex[10],int*n),因此B選項正確。
75.AA?!窘馕觥緾語言是函數式的語言。它的基本組成單位是函數,在C語言中任何程序都是由一個或者多個函數組成的。
76.A注:因為不需要移動元素
77.A聲明靜態局部變量:函數調用結束后,其占用的存儲單元不釋放,在下次該函數調用時,該變量保留上一次函數調用結束時的值。本題子函數tim中的變量i和m均為靜態局部變量。所以第一次調用fun函數,返回m的值為5,第二次再調用fun函數時,i的值為3,nl的值已經是5了,所以執行i+=m+1,i的值變為9,nl=i+x+Y=9+1+l=11。
78.B
79.C
80.B\n數據流圖(DFD)、數據字典、判定表和判定樹是結構化分析常用的工具。程序流程圖、N—S圖、PAD圖是詳細設計過程中常用的圖形工具。
\n
81.(1)錯誤:str=P;
正確:p=str;
(2)錯誤:i++;
正確:i++;p++;
(3)錯誤:a[i]=0;
正確:a[i]=ˊ\0ˊ;
【解析】由函數proc()可知,變量p是指向字符串的指針,其初始化應為字符串首地址,因此,“str=p;”應改為“p=str;”;將P指向的字符串中的每一個字符插在m個*之后,并存放在字符串數組a中,因此,“i++;”應改為“i++;p++;”;操作完成后要為字符串數組添加結束符,因此“a[i]=0;”應改為“a[i]=ˊ\0ˊ;”。
82.
題目中要求除了尾部的*號之外,將字符串中其他*號全部刪除。首先將所有不是*的字符放在字符串str中,然后將尾部的*接在字符的后面,最后為字符串str加上結束符。
2021年四川省南充市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.和順序棧相比,鏈棧有一個比較明顯的優勢是()。
A.通常不會出現棧滿的情況B.通常不會出現??盏那闆rC.插入操作更容易實現D.刪除操作更容易實現
2.
3.以下選項中的表達式調用庫函數依次求-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)
4.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結果是()。
A.1B.2C.4D.死循環
5.對如下二叉樹進行后序遍歷的結果為()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
6.下述程序的運行結果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正數B.負數C.零D.不確定的值
7.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
8.C語言中,組成數據文件的成分是()。A.A.記錄
B.數據行
C.數據塊
D.字符(字節)序列
9.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結果是______。
A.運行后報錯B.66C.611D.510
10.下面程序的輸出結果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
11.面向對象方法中,繼承是指()。
A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制
12.下列定義數組的語句中正確的是()。
A.#defmeN10intx[N];
B.intN=10;intx[N];
C.intx[0..10];
D.intx[];
13.在位運算中,操作數每右移一位,其結果相當于()
A.操作數乘以2B.操作數除以2C.操作數除以16D.操作數乘以16
14.在最壞情況下比較次數相同的是()。A.冒泡排序與快速排序B.簡單插入排序與希爾排序C.簡單選擇排序與堆排序D.快速排序與希爾排序
15.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
16.
17.一個二維數組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[1][2]的值為()。
A.2B.4C.6D.8
18.以下正確的字符串常量是()。A.“\\\”B.‘abc’C.OlympicGamesD.“”
19.在含有n個項點有e條邊的無向圖的鄰接矩陣中,零元素的個數為________。
A.eB.2e9C.n2-eD.n2-2e
20.用單鏈表方式存儲的線性表,存儲每個結點需要兩個域,一個數據域,另一個是()。
A.當前結點的所在地址B.后繼結點的所在地址C.空指針域D.空閑域
二、2.填空題(20題)21.下列程序的運行結果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
22.在樹形結構中,樹根結點沒有______。
23.以下程序運行后的輸出結果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
24.下面程序的功能是將字符串a下標值為偶數的元素由小到大排序,其他元素不變,請填空。
#include<stdio.h>
main()
{chara[]="labchmfye",t;
inti,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);
printf("\n");
}
25.以下程序的輸出結果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
}
26.下列程序的運行結果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
27.下列程序的輸出結果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
28.以下程序的輸出結果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
29.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請填空以實現拷貝。(注:不使用逗號表達式)
while(s[i]=【】;j++;}
d[j]=0;
30.設有以下定義
struetss
{intinfo;struetss*link;}x,y,z;
且已建立如下圖所示鏈表結構:
請寫出刪除結點y的賦值語句【】。
31.以下程序用來輸出結構體變量ex所占存儲單元的字節數:
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
32.數據流的類型有______和事務型。
33.算法復雜度主要包括時間復雜度和【】復雜度。
34.軟件危機出現于60年代末,為了解決軟件危機,人們提出了【】的原理來設計軟件,這就是軟件工程誕生的基礎。
35.若從鍵盤輸入58,則以下程序輸出的結果是______。
main{)
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
36.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。
37.數據結構包括數據的邏輯結構、數據的【】以及對數據的操作運算。
38.以下程序運行后的輸出結果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
39.在面向對象方法中,類的實例稱為______。
40.在面向對象方法中,對象之間進行通信的構造稱為()。
三、1.選擇題(20題)41.數據庫、數據庫系統和數據庫管理系統之間的關系是()。
A.數據庫包括數據庫系統和數據庫管理系統
B.數據庫系統包括數據庫和數據庫管理系統
C.數據庫管理系統包括數據庫和數據庫系統
D.三者沒有明顯的包含關系
42.以下正確的數組定義語句是()
A.inty[1][4]={1,2,3,4,5,}
B.floatx[3][]={{1},{2},{3}}
C.longs[2][3]={{1},{1,2}{1,2,3,}}
D.doublet[][3]={0}
43.6.C語言中下列敘述正確的是()
A.不能使用do-while語句構成的循環
B.do-while語句構成的循環,必須用break語句才能退出
C.do-while語句構成的循環,當while語句中的表達式值為非零時結束循環
D.do-while語句構成的循環,當while語句中的表達式值為零時結束循環
44.下列隊列的描述中,正確的是()
A.隊列屬于非線性表B.隊列在隊尾刪除數據C.隊列按“先進后出”進行數據操作D.隊列按“先進先出”進行數據操作
45.有下列二叉樹,對此二叉樹中序遍歷的結果為()。
A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ
46.下列敘述中不正確的是()。
A.在C語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數中,最好使用全局變量
C.外部變量可以在函數之間傳遞數據
D.自動變量實質上是一個函數內部的局部變量
47.有以下程序
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序運行后的輸出結果是
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
48.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n"i,j);}程序運行后的輸出結果是
A.9,9B.8,9C.1,8D.9,8
49.在16位IBM-PC機上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結構變量b占用內存的字節數是
A.1B.2C.7D.11
50.下列敘述中,正確的是()。
A.用E—R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系
B.用E—R圖只能表示實體集之間一對一的聯系
C.用E—R圖只能表示實體集之間一對多的聯系
D.用E—R圖表示的概念數據模型只能轉換為關系數據模型
51.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);為使程序不陷入死循環,從鍵盤輸入的數據應該是______。
A.任意正奇數B.任意負偶數C.任意正偶數D.任意負奇數
52.若有說明:int*p,m=5,n;以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
53.下列敘述中正確的是A.程序設計就是編制程序
B.程序的測試必須由程序員自己去完成
C.程序經調試改錯后還應進行再測試
D.程序經調試改錯后不必進行再測試
54.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;
A.30B.29C.24D.22
55.下列敘述錯誤的是()。
A.在C語言中的保留字必須小寫
B.變量的存儲類型決定了變量的存儲位置及其生存期
C.宏定義以#define開頭,行末必須加分號
D.在C語言中的注釋行可以出現在程序的任何位置
56.一個源文件中的外部變量的作用域為()。
A.本文件的全部范圍B.本程序的全部范圍C.本函數的全部范圍D.從定義該變量的位置開始到本文件結束
57.若有定義和語句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);則輸出結果是()。
A.20,10B.20,20C.10,20D.10,10
58.以下敘述中正確的是()。
A.C程序中注釋部分可以出現在程序中任意合適的地方
B.花括號"{"和"}"只能作為函數體的定界符
C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名
D.分號是C語句之間的分隔符,不是語句的一部分
59.以下程序的輸出結果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}
A.0B.1C.2D.3
60.以下敘述中錯誤的是()。
A.改變函數形參的值,不會改變對應實參的值
B.函數可以返回地址值
C.可以給指針變量賦一個整數作為地址值.
D.當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL
四、選擇題(20題)61.下列函數的類型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
62.
63.
64.閱讀下面程序段,則執行后的結果為()。
A.64B.8C.56D.0
65.下列選項中,能夠滿足“只要字符串sl等于字符串s2,則執行sT”要求的是()。程序執行后的輸出結果是()。
A.2B.1C.3D.0
66.
67.設有如下說明
typedefstruct
{intnumber;charclass;doublescore;}student;
則以下選項中,能正確定義結構體數組并賦初值的語句是()。
A.studenttt[2]={{189,’A’,62},{190,’B’,75}};
B.studenttt[2]={189,’"A",62,190,"B",75};
C.structtt[2]={{189,’A’},{190,’B’}};
D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};
68.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發送()。A.調用語句B.命令C.口令D.消息
69.
以下程序的輸出結果是()。
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.程序陷入死循環
70.以下程序的輸出結果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
71.在軟件生命周期中,能準確地確定軟件系統必須做什么和必須具備哪些功能的階段是()。A.概要設計B.詳細設計C.可行性分析D.需求分析
72.有以下程序:
程序運行后的輸出結果是()。
A.9B.8C.7D.10
73.對于循環隊列,下列敘述中正確的是()。A.隊頭指針是固定不變的
B.隊頭指針—定大于隊尾指針
C.隊頭指針_定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
74.若有以下函數首部:
intfun(doublex[10],int*n)
則下面針對此函數的函數聲明語句中正確的是()。
A.intfun(double,int);
B.intfun(double木,int*);
C.intmn(double*x,intn);
D.intfun(doublex,intint*n)
75.C語言的基本單位是()。
A.函數B.過程C.子程序D.子函數
76.(74)用鏈表表示線性表的優點是()
A.便于插入和刪除操作
B.數據元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機存取
77.有以下程序:
程序執行后的輸出結果是()。
A.5,11B.5,5C.11,11D.11,5
78.若有說明:inti,j=7,*p=&i;,則與i=j;等價的語句是()。
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;
79.
80.結構化分析可以使用的工具是()。
A.N—s圖B.DFD圖C.PAD圖D.程序流程圖
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串abcd(以Enter鍵結束),然后輸入m值為3,則結果為***abcd。注意:字符串的長度最長允許為79。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數proc(),它的功能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指向字符串中最后一個字母。在編寫函數時,不得使用C語言的字符串函數。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容應當是abcdefg****。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填人所編寫的若干語句。試題程序:
參考答案
1.A
2.D
3.C
4.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結果為1;第2次判斷條件即while(0),條件為假,結束循環,輸出回車換行符。故本題答案為A選項。
5.D解析:后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。
6.A本題考查符符串比較函數和兩個字符串比較的原則這兩個知識點。
(1)兩字符串比較的原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大(2)strcmp(s1,s2)的返回值,當str1<str2時,返回值為負數;當str1=str2時,返回0;當str1>str2,返回值為正數。
7.B第一個for循環的作用是讓p指向每行的首地址,第二個for循環的作用是把它指向的字符串輸出,故選擇B選項。
8.D解析:C語言中的文件是流式文件。流式文件是一種無結構文件,即整個文件是一串字符流或二進制流。文件的存取以字符或字節為單位。
9.A解析:本題考核的知識點是通過指針引用數組的元素的方法.本題中首先定義了一個一維數組a并初始化,由于定義該數組的時候省略了長度,因此該數組的長度為初始化時候賦初值的個數即為12。數組名a代表數組的首地址,所以*p=a+5語句使得p指向數組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。
10.A解析:p為指針型變量。第一次循環,p=s,p的值為字符數組s的首地址,輸出字符串'ABCD'。p++,第二次循環,p的值為字符數組s的首地址加1,輸出字符串'BCD'。p++,第三次循環,p的值為字符數組s的首地址加2,輸出字符串'CD'。p++,第4次循環,p的值為字符數組s的首地址加3,輸出字符串\'D'。
11.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中聯倉庫管理制度
- 臨床接診管理制度
- 2024年安徽池州學院專職輔導員招聘真題
- 2024年長春中醫藥大學附屬醫院招聘真題
- 廣東梅州職業技術學院《中學生物學科知識強化訓練》2023-2024學年第二學期期末試卷
- 新疆農業職業技術學院《口腔專業外語》2023-2024學年第二學期期末試卷
- 廣西中遠職業學院《能源系統控制技術》2023-2024學年第二學期期末試卷
- 廣東海洋大學《兒童口腔醫學實驗》2023-2024學年第二學期期末試卷
- 齊齊哈爾理工職業學院《美術Ⅰ(素描)》2023-2024學年第二學期期末試卷
- 工業園區環保設施建設與管理研究
- 2025年江西省中考學業水平考試考前預測數學試卷(含答案)
- 2025春季學期國開電大專科《管理學基礎》一平臺在線形考(形考任務一至四)試題及答案
- 馬克思主義基本原理試卷2(附答案)
- 2024小學體育教師進城考試模擬試卷及參考答案
- 瘢痕疙瘩術后護理
- 2024-2025學年部編版一年級下學期期末語文試卷(含答案)
- 惠然科技有限公司半導體量測設備總部項目環評資料環境影響
- 2025年河北省青縣事業單位公開招聘衛生崗考前沖刺題帶答案
- 北京市東城區2023-2024學年五年級下學期語文期末試卷(含答案)
- 2024年吉林省高職高專單招考試英語卷試題真題(含答案)
- 【MOOC】電工電子學-浙江大學 中國大學慕課MOOC答案
評論
0/150
提交評論