![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第1頁](http://file4.renrendoc.com/view/5f4ee21d605afd48c6ff1db8b5d34164/5f4ee21d605afd48c6ff1db8b5d341641.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第2頁](http://file4.renrendoc.com/view/5f4ee21d605afd48c6ff1db8b5d34164/5f4ee21d605afd48c6ff1db8b5d341642.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第3頁](http://file4.renrendoc.com/view/5f4ee21d605afd48c6ff1db8b5d34164/5f4ee21d605afd48c6ff1db8b5d341643.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第4頁](http://file4.renrendoc.com/view/5f4ee21d605afd48c6ff1db8b5d34164/5f4ee21d605afd48c6ff1db8b5d341644.gif)
![2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第5頁](http://file4.renrendoc.com/view/5f4ee21d605afd48c6ff1db8b5d34164/5f4ee21d605afd48c6ff1db8b5d341645.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021-2022年山東省萊蕪市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.算法的時間復雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數D.算法程序中的指令條數
2.對于函數聲明“voidfun(intarray[4],int*ptr);”,以下敘述中正確的是()。
A.array、ptr都是指針變量
B.調用fun函數時,實參的值將逐一復制給array
C.調用fun函數時,array按值傳送,ptr按地址傳送
D.array是數組,ptr是指針,它們的性質不同
3.若在線性表中采用折半查找法查找元素,該線性表應該()A.元素按值有序B.構采用順序存儲結C.元素按值有序且采用順序存儲結構D.元素按值有序且采用鏈式存儲結構
4.下列敘述中錯誤的是()。
A.線性表是由n個元素組成的一個有限序列
B.線性表是一種線性結構
C.線性表的所有結點有且僅有一個前件和后件
D.線性表可以是空表
5.需求分析階段的任務是確定()
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費用D.軟件系統(tǒng)功能
6.以下程序的輸出結果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12
7.任何一個無向圖的最小生成樹()。
A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在
8.用二進制來編碼字符串“abcdabaa”,需要能夠根據編碼,解碼回原來的字符串,最少需要()長的二進制字符串
A.12B.14C.18D.24
9.有說明語句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語句是()。A.scanf("%3d%*3d%3d",&a,&b);
B.scanf("%*3d%3d%3d",&a,&b);
C.scanf("%3d%3d%*3d",&a,&b);
D.scanf("%3d%*2d%3d",&a,&b);
10.設單鏈表中結點的結構為非空的循環(huán)單鏈表first的尾結點(由p所指向)滿足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;
11.帶頭結點的單鏈表head為空的判定條件是()。
A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL
12.有以下程序
A.741B.963C.852D.87542l
13.對矩陣進行壓縮存儲是為了()。
A.方便運算B.方便存儲C.提高運算速度D.減少存儲空間
14.在一個順序隊列中,隊首指針指向隊首元素的____位置。
A.前一個B.后一個C.當前D.最后一個
15.若某表最常用的操作是在最后一個結點之后插入一個結點或刪除最后一個結點,則采用()存儲方式最節(jié)省運算時間。
A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結點的雙循環(huán)鏈表
16.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預處理命令
D.宏名必須用大寫字母表示
17.
18.
19.以下敘述中錯誤的是()。A.C程序在運行過程中所有計算都以二進制方式進行
B.C程序在運行過程中所有計算都以十進制方式進行
C.所有C程序都需要編譯鏈接無誤后才能運行
D.C程序中整型變量只能存放整數,實型變量只能存放浮點數
20.有以下程序
prt(int*m,intn)
{
inti;
for(i=0;i<n;i++)
m[i]++;
}
main()
{
inta[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序運行后的輸出結果是A.A.1,2,3,4,5,
B.3,4,5,6,7,
C.2,3,4,5,6,
D.2,3,4,5,1,
二、2.填空題(20題)21.在關系模型中,把數據看成一個二維表,每一個二維表稱為一個______。
22.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數據域(data)和指針域(next),數據域為整型。以下函數求出鏈表中所有鏈結點數據域的和值,作為函數值返回。請在下劃線內填入正確內容。
{intdata;structlink*next;}
main()
{structlink*head;
┆
sum(head);
┆}
sum(【】);
{structlink*p;ints=0;
p=head->next;
while(p){s+=p->data;p=p->next;}
return(s);}
23.算法的基本特征是可行性、確定性、【】和擁有足夠的情報。
24.下列程序的運行結果是______。
#include<stdio.h>
main()
{intfun();
fun();
}
fun()
{staticinta[4]={1,2,3,4};
inti;
for(i=0;i<4;i++)a[i]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf"\n");
}
25.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。
26.數據庫系統(tǒng)在其內部分為三級模式,即概念模式、內模式和外模式。其中,【】給出了數據庫物理存儲結構和物理存取方法。
27.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
28.以下程序的輸出結果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
29.函數voidfun(float*sn,intn)的功能是:根據以下公式計算s,計算結果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請?zhí)羁铡?/p>
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;}
【】=s;}
30.在程序設計階段應該采取______和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,繼而用某種程序設計語言寫成程序。
31.下列程序利用指針將2個數按從大到小的順序輸出。
main()
{inta,b,【】;
printf("inputa,b:");
scanf("%d%d",&a,&b);
【】;
p2=&b;
if(a<b)
{p=p1;
p1=p2;
p2=p;
}
printf("a=%db=%d\n",a,b);
printf("max=%dmin=%d\n",【】);
32.數據的【】結構在計算機存儲空間中的存放形式稱為數據的存儲結構或物理結構。
33.結構化程序設計的三種基本邏輯結構為順序、選擇和【】。
34.設有以下定義和語句:
inta[3][2]={1,2,3,4,5},*p[3];
p[0]=a[1];
則*(p[0]+1)所代表的數組元素是【】。
35.有以下語句段
intnl=10,n2=20;
printf("______",n1,n2);
要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>
n1=10
n2=20
36.#define命令出現在程序中函數的外面,宏名的有效范圍為______。
37.數據結構分為線性結構和非線性結構,帶鏈的隊列屬于[]。
38.輸出指針數組各元素所指的整數值和它存放的地址值。
#include<stdio.h>
main()
{inti;
inta[5]={1,3,5,7,9};
int*num[5];
int【】;
for(i=0;i<5;i++)
num[i]=【】;
p=num+0;
for(i=0;i<5;i++)
{printf("%d%d\n",【】);
p++;
}
}
39.下列程序的輸出結果是【】。
main()
{inta=1,b=2;
a=a+b;b=a-b,a=a-b;
printf("%d,%d\n",a,b);
}
40.下列程序段的運行結果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
三、1.選擇題(20題)41.若程序執(zhí)行時的輸入數據是"2473",則下述程序的輸出結果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=,'\n'){switch(cs='2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}
A.668977B.668966C.6677877D.6688766
42.以下程序中函數reverse的功能是將a所指數組中的內容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結果是
A.22B.10C.34D.30
43.以下數組定義中不正確的是_______。
A.inta[2][3];
B.intb[][3]={0,1,2};
C.intc[100][100={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
44.用C語言編寫的代碼程序
A.可立即執(zhí)行B.是一個源程序C.經過編譯即可執(zhí)行D.經過編譯解釋即可執(zhí)行
45.以下程序的輸出結果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}
A.9B.6C.36D.18
46.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
47.下述關于數據庫系統(tǒng)的敘述中,正確的是()。
A.數據庫系統(tǒng)減少了數據冗余
B.數據庫系統(tǒng)避免了一切冗余
C.數據庫系統(tǒng)中數據的一致性是指數據類型一致
D.數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據
48.以下程序的輸出結果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b=a);}
A.0B.1C.2D.3
49.定義結構體數組:structstu{intnum;charname[20];}x[5]={1,"LI",2,"ZHAO",3"WANG",4,"ZHANG",5"LIU"};for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);以上程序段的輸出結果為().
A.2A3N4A5UB.1I2a3h4IC.1A2N3A4UD.2H3A4H5I
50.下列程序的輸出結果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}
A.4B.7C.6D.5
51.有以下程序voidswapl(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swapl(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其輸出結果是:
A.5353B.5335C.3535D.3553
52.以下非法的賦值語句是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
53.若有說明:int*p1,*p2,n=8,m;下列均是正確賦值語句的選項是()。
A.p1:&n;p2=&pl;
B.p1=n;
C.p1=&n;*p2=p1;
D.p1=&n;p2=p1;
54.以下程序的輸出結果是voidfun(int*s){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.23345C.35745D.12345
55.有以下程序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
56.以下程序的輸出結果是()#include<string.h>main(){chars1[]="123",s2[]="abc",ss[20]="010";strcat(ss+1,strcpy(s2,s1));printf("%s\n",ss);}
A.10123B.0abcC.1123D.01abc
57.下面敘述正確的是_______。
A.算法的執(zhí)行效率與數據的存儲結構無關
B.算法的空間復雜度是指算法程序中指令(或語句)的條數
C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
D.算法的時間復雜度是指執(zhí)行算法程序所需要的時間
58.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結果是______。#include"stdio.h"#include"string.h"main(){charss[10]="12345";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
59.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
60.有以下程序:main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}}}程序運行時,從鍵盤輸入:01<回車>,程序執(zhí)行后的輸出結果是
A.anothernumber
B.anothernumberanother
C.anothernumbernumber
D.numbernumber
四、選擇題(20題)61.寫出下列程序段的輸出結果()。
main()
{intx=5;inty=10;
printf("%d\n",x++);
printf("%d\n",++y);}
A.5B.6C.6D.5
10101111
62.在軟件開發(fā)中,需求分析階段產生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細設計說明書C.用戶手冊D.軟件需求規(guī)格說明書
63.下列敘述中正確的是()。
A.軟件測試應該由程序開發(fā)者來完成
B.程序經調試后一般不需要測試
C.軟件維護只包括對程序代碼的維護
D.以上三種說法都不對
64.
65.當執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
66.
67.
68.(74)用鏈表表示線性表的優(yōu)點是()
A.便于插入和刪除操作
B.數據元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機存取
69.
以下程序的輸出結果是()。
main
{inta=1,b;
for(b=1,b<=10;b++)
{if(a>=8)break;
if(a%2==1){a+=5;continue;}
a=3;}
printf("%d\n",b);
A.3B.4C.5D.6
70.在關系數據庫中,用來表示實體之間聯系的是()。
A.二維表B.E—R圖C.元組D.文件
71.(25)下面對對象概念描述錯誤的是()
A.任何對象都必須有繼承性
B.對象是屬性和方法的封裝體
C.對象間的通訊靠消息傳遞
D.操作是對象的動態(tài)性屬性
72.算法的空間復雜度是指()。
A.算法程序的長度B.算法程序中的指令條數C.算法程序所占的存儲空間D.執(zhí)行算法需要的內存空間
73.以下與存儲類別有關的四組說明符中,全部屬于靜態(tài)類的一組是()。
A.extem和static
B.auto和static
C.register和static
D.register和ex[erll
74.以下敘述中錯誤的是()。
A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉換成二進制的機器指令
B.c程序經過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件
C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中
D.c語言源程序經編譯后生成后綴為.obj的目標程序
75.函數fseek的正確調用形式是()。
A.fseek(位移量,起始點,文件類型指針);
B.fseek(文件類型指針,位移量,起始點);
C.fseek(文件類型指針,起始點,位移量);
D.fseek(起始點,位移量,文件類型指針);
76.
77.
78.
有以下程序:
fun(intx,inty){return(x+y);)
main
{inta=1,b=2,c=2,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
執(zhí)行后的結果是()。
A.6B.7C.8D.9
79.
80.若有定義語句:intm[]={1,2,3,4,5},i=4;,則下面對m數組元素的引用中錯誤的是
A.m[++i]B.m[1*2]
C.m[m[0]]D.m[m[--i]]
五、程序改錯題(1題)81.下列給定程序中,函數fun的功能是:計算整數n的階乘。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.請編寫函數proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。
xn+1=COS(xn)
迭代步驟如下:
(1)取x1初始值為0.0;
(2)x0=x1,把?X1的值賦給x0;
(3)x1=cos(xO),求出一個新的x1;
(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟
(5),否則執(zhí)行步驟(2);
(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數值返回。
程序將輸出結果root=0.739085。
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.C解析:算法的時間復雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據一個算法所編制出的程序之中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。所以,本題正確答案為C。
2.A聲明函數fun“voidfun(intarray[4],int*ptr);”,第1個參數雖然是數組類型,但是會退化為指針,并且形參數組的個數沒有用;第2個參數是指針。兩個形參都是指針,傳遞的都是地址,可知選項B、C、D錯誤。故本題答案為A選項。
3.C
4.CC.【解析】線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前件,最后一個結點沒有后件,其他結點有且只有一個前件和后件,所以選項C.是錯誤的。
5.D解析:結構化分析方法,數據流圖,數據字典,軟件需求規(guī)格說明書
評析,需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調查現實世界要處理的對象(組織,部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能.選項A)軟件開發(fā)方法是在總體設計階段完成的任務;選項B)軟件開發(fā)工具是在實現階段需完成的任務:選項C)軟件開發(fā)費用是在可行性研究階段需完成的任務。
6.D本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。
7.B
8.B
9.A根據題意,要使a的值為111,b的值為333,必須在讀入時指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過中間的3位輸入數字,選項A正確。本題答案為A選項。
10.C
11.B
12.C在for循環(huán)中,當y的值為9、6或3時,執(zhí)行輸出語句,輸出表達式“——y”的值。y先自減1,然后再輸出y的值。
13.D
14.A
15.D
16.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。
17.D
18.C
19.B所有的C程序都必須經過編譯鏈接無誤之后才能運行。在運行過程中,由計算機完成程序中的所有運算。由于計算機只能識別二進制,所以所有的運算都以二進制方式進行,而不是十進制。
20.C用數組名作為函數實參時,不是把數組的值傳遞給形參,而是把實參數組的起始地址傳遞給形參數組,這樣兩個數組就共同占用同一段內存單元。本題通過“prt(a,5);”將數組a的首地址傳遞給了指針變量m,使指針變量m指向數組a的首地址,那么,對指針變量所指向的存儲單元的內容的改變就是對數組a中的元素的改變。題中函數prt的作用是將指針變量m所指向的存儲單元中的元素值各加上1,故數組a中的值也隨之變化,所以。輸出的數組元素的值為2,3,4,5,6,。
21.關系關系解析:關系模型用;維表表示,則每個;維表代表一種關系。
22.structlink*headstructlink*head解析:因為本題中是用結構體變量構成了鏈表,所以要從鏈表頭節(jié)點逐個節(jié)點的引用結構體的數據域,需要有個指向結構體變量的指針依次指向各個節(jié)點,即p=p->next,而用指針引用結構體成員數據的方法為:p->data。注意:結構體變量和共用體變量之間的區(qū)別為聯系。
23.有窮性有窮性解析:算法有四個基本特征:可行性、確定性、有窮性和擁有足夠的情報。
24.24682,4,6,8解析:子函數fun()的功能是將數組a中的元素都自加一遍,然后仍然將結果存在原數組中,其實就是將數組a的每個元素都變?yōu)樵瓉淼?倍,然后輸出。在主程序中首先通過intfun()定義了子函數fun(),然后再調用fun()。
25.1212解析:x=(表達式1,表達式2,…)的形式,結果為最后一個表達式的值:x=(a=4,6*2)=2*6=12。
26.內模式內模式解析:內模式又稱為物理模式,它給出了數據庫物理存儲結構與物理存取方法。
27.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數組指定位置,并通過j++將下標加1,指向下一元素要存儲的位置。
28.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應的大寫字母,結果為ACE。
29.=-1*sn=-1\r\n*sn解析:C語言中實參變量和形參變量的數據傳遞是單向的“值傳遞”方式。指針變量作函數也要遵循這一規(guī)則。調用函數不可能改變實參指針變量的值,但可以改變實參指針變量所指變量的值。
30.自頂向下自頂向下解析:在程序設計時,應先考慮總體,后考慮細節(jié),逐步使問題具體化,對復雜的問題,應該設計一些子目標作為過渡,上述方法概括為:自頂向下,逐步細化。
31.*p*p1*p2p1:&a*p1*p2
32.邏輯邏輯解析:數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構或物理結構。
33.重復(或循環(huán))重復(或循環(huán))
34.a[1][1]a[1][1]解析:p是一個指針數組,p[0]指向數組a[1][0]。*(p[0]+1)代表數組a[1][1]。
35.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d×nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d×nn2=%2d解析:printf函數有兩種參數:格式控制參數和輸出項參數,其中格式控制參數由兩種成分組成;格式說明和普通字符,普通字符將被簡單地復制顯示,格式說明項將引起一個輸出參數項的轉換與顯示,它是由“%”引出并以一個類型描述符結束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數,所以格式說明項為%d,也可以在%與d之間加上域寬,另外還要在每行輸出結束時加轉義字符\\n進行換行。所以,應填寫n1=%d\\nn2=%d\\n,n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d。
36.從定義到本源文件結束從定義到本源文件結束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結束。
37.線性結構線性結構解析:與棧類似,隊列也是線性表,也町以采用鏈式存儲結構。
38.**pa+I**p*p
39.21
40.6868解析:本題考查如何用指針引用數組元素。本題先定義了一個指向字符型數組str的指針p,指針p指向數組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應ASCII碼值68。
41.A解析:本題主要考查switch語句的使用方法。switch語句的執(zhí)行過程為:進入switch結構后,對條件表達式進行運算,然后從上至下去找與條件表達式值相匹配的case,以此作為入口,執(zhí)行switch結構中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時,則執(zhí)行default后面的語句。
42.A解析:本題考查的知識點是數組名作為函數參數及函數調用。reverse()數的功能是將具有n個元素的數組a反序存放。在主函數中調用語句是“reverse(b,8);”,實現的功能是把b數組的前八個元素逆置,所以b數組中依次存放的值為“8,7,6,5,4,3,2,1,9,10”。for循環(huán)了4次,分別把b[6]、b[7]、b[8]和b[9]的值(分別是2、1、9、10)加到了s中,s的結果是22,所以最后輸出的s值為22。所以4個選項中A正確。
43.D解析:一維數組的定義方式為:
類型說明符數組名[常量表達式];
選項A符合此定義形式,正確;C語言中多維數組賦初值時可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項C正確;另外,如果對全部數組元素都賦初值,則定義數組時對第一維的長度可以不指定,但第二維的長度不能省,所以選項B正確,而選項D是錯誤的。
44.B解析:C語言一種高級語言,C語言源程序經過C語言編譯程序編譯之后,生成一個后綴為。OBJ的二進制文件(稱為目標文件),最后還要由稱為“連接程序”(Link)的軟件,把此。OBJ文件與C語言提供的各種庫函數連接在一起,生成一個后綴.EXE的可執(zhí)行文件。顯然C語言不能立即執(zhí)行,故選項A錯誤;根據以上定義,選項C和選項D錯誤,所以,4個選項中選項B符合題意。
45.C解析:觀察程序段可知,對帶參數的宏的展開只是將語句中的宏名后面括號內的實參字符串代替#define命令行中的形參。本題中c=f(a)/f(b)用#definef(x)x*x代替得c=f(6)/f(2),即c=6*6/2*2,結果為36。
46.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。
47.A解析:數據庫是一個通用化的、綜合性的數據集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數據與程序的獨立性,而且能并發(fā)地為多個應用服務,同時具有安全性和完整性。即數據庫系統(tǒng)減少了數據冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數據庫管理階段中,數據是結構化的,面向系統(tǒng),數據冗余度小,從而節(jié)省了數據的存儲空間,也減少了對數據的存取時間,提高了訪問效率,避免了數據的不一致性。數據的不一致性,是指對數據的存取方式,選項C錯誤。數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據,并非是數據庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。
48.A解析:65536等于2的16次方,而短整型無符號數的取值范圍為0~65535,65536已經超出a的存儲范圍,將截取溢出了的最高第17位,低16位全部為0,因此把a賦值給b,得到的是剩余的16個0,所以b的值為0。
49.A解析:本題主要考查結構體數組的使用。x[i].mum為結構體x[i]中的num成員,x[i].name[2]是結構體x[i]中name成員的第3個元素。程序執(zhí)行循環(huán)過程時:第1次循環(huán),i=1,輸出x[1].num,x[1].name[2]的值,即2A:第2次循環(huán),i=2,輸出x[2].mum,x[2].name[2]的值,即3N;第3次循環(huán),i=3,輸出x[3].num,x[3].name[2]的值,即4A;第4次循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即5U。
50.D解析:本題考查靜態(tài)變量的使用方法和for循環(huán)。在函數調用時,static變量在函數調用結束后所作的所有變化均不保持,所以當i=1時,第2次進入f函數時c=5,所以最終main函數中c的值為5。
51.B解析:函數間的參數的傳遞有兩種情況,第一種情況變量作為形參時的參數傳遞,變量作為形參時,要求對應的實參應為變量或表達式,變量作為函數的參數其傳遞方式是“值傳遞”,該種情況下,形參被賦值為實參的值,然后實參與形參再無聯系。也就是說對形參的改變將不再影響實參;第二種情況是地址或數組名作為形參時的參數傳遞,該種情況下對形參的改變將對實參產生影響。本題中函數swapl()是傳遞的地址。所以對該形參c的改變將影響實參,分析可知該函數的作用,是使數組c的第一個元素和第二個元素的值互換。主函數中調用該函數將a作為實參傳遞給形參c,故執(zhí)行該函數后a的第一個元素和第二個元素的值將交換。分別為5和2。函數swap2()是值傳遞的,所以該函數執(zhí)行后對數組b將沒有任何改變,此時該數組的第一個和第二個元素依然為3和5,因此最后的輸出為5、3、3和5。
52.C解析:本題考查的知識點是賦值語句的基本知識。在表達式的運算中,雙目賦值運算符的格式為“變量二表達式”,單目運算符一般形式為“運算符表達式”或“表達式運算符”。常量和表達式是不能被賦值的。選項A為復合表達式,首先計算(i=2,++i)的值,然后賦值給n,故選項A正確;選項B為簡單自加運算,故選項B正確;選項C在表達式++(i+1);中,(i+1)不是變量,該表達式的值為常量,而在++運算中,其運算對象必須為變量,故選項C錯誤;選項D中為復合賦值表達式,正確.所以應當選擇C。
53.D解析:本題考查指針變量的賦值。選項A)中,p1、p2本身都是地址變量,不能再將p1取地址賦給p2;選項B)中,不能將整型數據直接賦值給指針型數據;選項C)中,*p2代表了一個整型變量,而*p2=p1這個語句試圖把一個地址值放入一個整型變量中是錯誤的;選項D)中指針間的賦值是正確的。
54.C解析:本題考查了通過數組首地址引用數組元素的方法。第一次執(zhí)行fun(a)后,a[0]=3,a[1]=5。第二次執(zhí)行fun(a)時,因為static變量j保存著上次執(zhí)行時的值為2,所以a[2]=7,最后數組a={3,5,7,4,5}。故正確答案為選項C)。
55.A解析:本題是一個陷阱,看似考查函數的傳址調用,其實考的是傳值調用。在C語言中,不管你給函數傳遞的參數是什么,指針也好數組名也罷,系統(tǒng)都是嚴格的將實參的值復制了一份作為函數的形參,即傳值調用。在函數中,對形參中的值怎么改變都不會影響到實參。那傳址調用又是怎么實現的呢?那是因為在函數中改變的不是形參指針變量中的值,而是形參指針變量所指內存中的值。其實骨子里還是將實參指針的值復制?一份給形參指針變量,它們是兩個獨立的互不相干的變量,只不過指向的內存地址值一模一樣罷了。本題的函數只是改變了形參指針變量p的值,這對程序沒有任何影響,主函數中p一開始就是指向b[0],最后輸出時還是b[0]的值'a'。所以應該選擇A。
56.A
57.C解析:算法的設計可以避開具體的計算機程序設計語言,但算法的實現必須借助程序設計語言中,提供的數據類型及其算法。數據結構和算法是計算機科學的兩個重要支柱。它們是一個不可分割的整體。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。算法的有窮性是指一個算法必須在執(zhí)行有限的步驟以后.結束。算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,即算法執(zhí)行過程中所需要的基本運算次數。
58.A解析:sdtrcat(str1,str2)合并字符串函數的作用是把str2所指字符串的內容連接到str1字符串的后面,自動刪去str1原來串中的'\\0'。為了進行這項操作,要求str1所指的字符串后面有足夠的空間來容納str2所指字符串中的內容。函數值為str1所指第一個字符的地址。
59.D解析:需求分析常用的工具有數據流圖(DFD)、數據字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細設計的常用工具,不是需求分析的工具。
60.C解析:switch語句的執(zhí)行過程是:在switch后面的表達式的值和case后面常量表達式的值吻合時,就執(zhí)行后面的語句.如果在該語句的后面沒有break語句,則繼續(xù)執(zhí)行下一個case,直到遇到break語句或switch多分支的結束,在switch語句中,break語句的作用是使流程跳出switch結構,終止Switch語句的執(zhí)行.本題中在for循環(huán)中嵌套了swish語句,每循環(huán)一次通過scanf()函數從鍵盤上輸入一個k值,然后執(zhí)行switch語句。for循環(huán)共循環(huán)了2次,當i=1時,從鍵盤上輸入0,使得k的值為0,執(zhí)行switch語句中case:0后面的語句,輸出another,接著執(zhí)行case:0下面的語句輸出number,退出switch語句,當i=2時,從鍵盤上輸入1,使得k的值為1,執(zhí)行switch語句中case1后面的語句,輸出number,退出switch語句.當i=3時退出循環(huán).故最后的輸出為another、number和number,所以,4個選項中選項C符合題意。
61.D++是自增運算符,但作為前綴和后綴是不一樣的,對于變量本身沒有差別,但對于表達式的值有影響,x++,表達式先去x的值5作為輸出,然后再加1,++y是先增1,然后取自增后的值為表達式的值,所以輸出結果為11
62.D需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能安全系統(tǒng)研發(fā)工程師聘用合同
- 高中信息技術選修4教學設計-3.2.1 創(chuàng)建和執(zhí)行查詢-粵教版
- 機械設備傭金居間協議范本
- 中國汽車服務行業(yè)未來趨勢預測分析及投資規(guī)劃研究建議報告
- 2025年非金屬材料結構件合作協議書
- 2025年中國特種汽車行業(yè)發(fā)展趨勢預測及投資戰(zhàn)略咨詢報告
- 2025年中國桑蠶養(yǎng)殖行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報告
- Unit4 My home Part B大單元(教學設計)-2024-2025學年人教PEP版英語四年級上冊
- 安全生產應知應會知識習題庫(附參考答案)
- 2025年中國亞麻保健席行業(yè)市場調查研究及投資前景預測報告
- 新蘇教版三年級下冊科學全冊知識點(背誦用)
- 【良心出品】架空輸電線路巡視內容
- 經皮式氣管切開術
- 《我家漂亮的尺子》課件-定稿
- 個人維修收款收據
- 代辦電瓶車車牌照委托書
- 水泥-水泥的技術性質(建筑材料)
- 機械制圖(高職)全套教學課件
- 突發(fā)事件緊急醫(yī)學救援培訓的情景模擬和現場演練
- 10000以內加減法混合豎式題
- 小學二年級-心理健康教育-11-等一等-會更好-教學設計
評論
0/150
提交評論