




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022-2023年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下關于C語言的敘述中正確的是()。
A.C語言中的注釋不可以夾在變量名或關鍵字的中間
B.C語言中的變量可以在使用之前的任何位置進行定義
C.在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D.C語言的數值常量中夾帶空格不影響常量值的正確表示
2.以下選項中不合法的標識符是()。
A.&aB.FORC.printD._00
3.有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-′a′+′A′;
s++;}}
main()
{charstr1[100]="abcddfefdbd",c=′d′;
ss(str1,c);printf("%s\n",str1);}
程序運行后的輸出結果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
4.下面不屬于需求分析階段任務的是()。
A.確定軟件系統的功能需求B.確定軟件系統的性能需求C.制定軟件集成測試計劃D.需求規格說明書評審
5.關于地址和指針,以下敘述正確的是()。
A.可以通過強制類型轉換讓char型指針指向double型變量
B.函數指針P指向一個同類型的函數f時,必須寫成“p=&f;”
C.指針P指向一個數組f時,必須寫成“P=&f;”
D.—個指針變量P可以指向自身
6.設有以下語句charchl,ch2;scanf("%c%C",&chl,&ch2);若要為變量chl和ch2分別輸入字符A和B,正確的輸入形式應該是()。
A.A和B之間用逗號間隔B.A和B之間不能有任何間隔符C.A和B之間可以用回車間隔D.A和B之間用空格間隔
7.高度為h的滿二叉樹的結點數是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
8.對n個關鍵字的序列進行快速排序,平均情況下的空間復雜度為_______
A.O(1)B.O(logn)C.O(n)D.O(nlogn)
9.有以下程序(函數fun只對下標為偶數的元素進行操作):#include<stdio.h>voidfun(int*n){inti,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;t[a[i];a[i]=a[k];a[k]=t;}}main{intaa[lO]=[1,2,3,4,5,6,7],a;fun(aa,7);for(i=0;i<7;i++)printf("%d,",aa[i]);printf("n");}程序運行后的輸出結果是()。A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
10.
11.某堆棧的輸入序列為a,b,c,d,下面的四個序列中,不可能是它的輸出序列的是()。
A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b
12.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
13.一個函數返回值的類型是由()決定的。
A.return語句中表達式的類型B.定義函數時指定的函數類型C.在調用函數時臨時指定D.調用函數的主調函數的類型
14.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double
15.
16.棧通常采用的兩種存儲結構是A.A.線性存儲結構和鏈表存儲結構
B.散列方式和索引方式
C.鏈表存儲結構和數組
D.線性存儲結構和非線性存儲結構
17.下列不屬于C語言關鍵字的是()。A.A.default
B.register
C.enum
D.external
18.下列選項中與“if(a==1)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a==1){ case0:a=b;break; case1:a++;}
B.switch(a){ case1:a=b;break; default:a++;}
C.switch(a){ default:a++;break; case1:a=b;}
D.switch(a==1){ case1:a=b;break; case0:a++;}
19.利用fseek函數可實現的操作是()。
A.實現文件的順序讀寫B.改變文件的位置指針C.實現文件的隨機讀寫D.以上答案均正確
20.設有定義:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函數fun返回值的類型是()。
A.T類型的結構體B.指向結構體類型的指針C.int類型的元素D.int類型的指針
二、2.填空題(20題)21.下列程序的運行結果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
22.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。
23.下列程序的輸出結果是()。
intt(intx,inty,intcp,intdp)
{cp=x%y+y*y;
dp=x+x-y*y;
}
main()
{ima=4,b=3,c=9,d=8;
t(a,b,c,D);
printf("%d%d\n",c,D);
}
24.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數據域(data)和指針域(next),數據域為整型。以下函數求出鏈表中所有鏈結點數據域的和值,作為函數值返回。請在橫線處填入正確內容。
structlink
{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);}
25.下列程序的運行結果為【】。
#include<stdio.h>
main()
{staticcharstr1[40];
charstr2140];
strcpy(str2,"China");
strcat(str1,str2);
strcat(str1,"isagreatcountry!");
printf("%s%s",str2,strl);
printf("%d%d\n",strlen(str2),strlen(str1));
}
26.若有語句:
inti=-19,j=i%4;
printf("%d\n",j);
則輸出結果是【】。
27.與表達式a+=b等價的另一書寫形式是______。
28.函數fun的功能是:根據以下公式求p的值,結果由函數值返回。m與n為兩個正數且要求m>n。
例如:m=12,n=8時,運行結果應該是495.000000。請在題目的空白處填寫適當的程序語句,將該程序補充完整。
#include<conio.h>
#include<stdio.h)
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;i<=m;i++)【】;
for(i=1;i<=n;i++)【】;
for(i=1;i<=m-n;i++)p=p/i;
returnP;}
main()
{clrscr();
printf("p=%f\n",fun(12,8));}
29.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。
30.以下程序的輸出結果是【】。
#include<stdio.h>
unsignedfun6(unslgnednum)
{unsignedk=1;
do{k*=mum%10;num/=10;}
while(num);
returnk;
}
main()
{unsignedn=26;
printf("%d\n",fan6(n));
}
31.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
32.數據流圖的類型有【】和事務型。
33.若有如下程序:
voidsub()
{staticintx=8;
x/=2;printf("%d",x);
}
main()
{intm;
for(m=0;m<2;m++)sub();}
則程序運行后的輸出結果是【】.
34.以下程序的輸出結果是()。
#include<stdio.h>
main()
fintx=0;
sub(&x,16,2);
printf("%d\n",x);
}
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);
*a+=k;
}
35.結構化分析方法是面向______進行分析的方法。
36.函數fun的返回值是【】。
fun(char*a,char*b)
{intnum=0,n=0;
while(*(a+num)!='\0')num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
returnnum;
}
37.下列程序的輸出結果是16.00,請填空:
main()
}
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
38.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
39.以下程序運行后的輸出結果是【】。
#include<string.h>
cbar*ss(char*s)
{char*p,t;
p=s+1;t=*s;
while(-p){*(p-1)=*p;p++;}
*(p-1)=t;
returns;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
40.棧滿時,再作入棧操作會產生【】,棧空時,刪除操作會產生【】。
三、1.選擇題(20題)41.需求分析階段的任務是()
A.軟件開發方法B.軟件開發工具C.軟件開發費用D.軟件系統功能
42.以下語句或語句組中,能正確進行字符串賦值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
43.以下敘述中不正確的是
A.在不同的函數中可以使用相同的名字的變量
B.函數中的形式參數是局部變量
C.在一個函數內定義的變量只在本函數范圍內有效
D.在一個函數內的復合語句中定義的變量在本函數范圍內有效
44.下列程序的運行結果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k;intx;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}
A.5,4,3,2B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,
45.以下程序的輸出結果是main(){charx=040;printf("%o\n",x<<1);}
A.100B.80C.64D.32
46.下列選項中C語言中不合法的字符串常量的是
A.\121B.'y'C.\n\nD.ABCD\x6d
47.下列數據結構中,屬于非線性的是()。
A.線性表B.隊列C.樹D.棧
48.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
49.以下程序的輸出結果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
50.在下面的語句中,賦值語句錯誤的是_______。
A.a=(b=(c=2,d=3));B.i++;C.a=a/b=2;D.a=a<a+1;
51.閱讀下列程序,則運行結果為#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d\n",x);}
A.5B.6C.7D.8
52.有以下程序voidss(char*s,chart){while(*s){if(*s==t),s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
53.若有說明inta[3][4];,則a數組元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]
54.下列程序的輸出結果是()。main{intx=8,y=8;printf("%d%d\n",x--,--y);}
A.88B.77C.78D.87
55.下列敘述中正確的是()。
A.break語句只能用于swish語句體中
B.continue語句的作用是使程序的執行流程跳出包含它的所有循環
C.break語句只能用在循環體內和switch語句體內
D.在循環體內使用break語句和continue語句的作用相同
56.若有以下說明和語句,則值為6的表達式是______。structstu{intn;structstu*next;};structstua[3],*p;a[0).n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next='\0';p=&a[0];
A.p++->nB.p->n++C.++p->nD.(*p).n++
57.若有說明:int*p,m=5,n;,以下正確的程序段是()。
A.p=&m;scanf("%d",&p)
B.p=&n;scanf("%d",&p)
C.scsnf("%d",&p)p=&n;
D.p=&n;p=&m;
58.以下程序中函數sort的功能是對數組a中的數據進行由大到小的排序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[]={1,2,3,4,5,6,7,8,9,10},i;son(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3;8,7,6,5,4,9,10,
D.1,2,10,9,8,7,6,5,4,3,
59.設a為整型變量,不能正確表達數學關系“10<a<15”的C語言表達式是______。
A.10<a<15
B.a==11||a==12||a==13||a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)
60.若有以下的說明,對初值中整數2的正確引用方式是()。staticstruct{charch;inti;doublex;}a[2][3]={{{'a',1,3,45},{'b',2,7,98},{'c',31,93}}};
A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i
四、選擇題(20題)61.
62.
運行下列程序時,若輸入的數據為“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.00
B.1.003.002.00
C.132
D.3.000002.000001.00000
63.
64.對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數為()。
A.log2nB.n2C.nD.n+1
65.有以下程序:
程序運行后的輸出結果是()。
A.10B.11C.20D.21
66.
設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:
if(a<b)
if(c==d)y=0;
elsey=1;
該語句所表示的含義是()。
A.y=0,a<b且c=dy=1,a≥b
B.y=0,a<b且c=dy=1,a≥b且c≠d
C.y=0,a<b且c=dy=1,a<b且c≠d
D.y=0,a<b且c=dy=1,c≠d
67.(38)索引屬于()
A.模式
B.內模式
C.外模式
D.概念模式
68.以下關于字符串的敘述中正確的是()。
A.C語言中有字符串類型的常量和變量
B.兩個字符串中的字符個數相同時才能進行字符串大小的比較
C.可以用關系運算符對字符串的大小進行比較
D.空串一定比空格打頭的字符串小
69.下列程序的輸出結果是()。#includeintfun(inta){intb=0;staticintc=4;a=c++;b++;return(a);}main{inta=2,i,c;for(i=0:i<2;i++)c=f(a+1);printf("%d\n",c);}A.4B.7C.6D.5
70.以下程序執行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0
71.有以下程序:
程序運行時,輸入的值在哪個范圍才會有輸出結果()。
A.不等于10的整數
B.大于3且不等于l0的整數
C.大于3或等于l0的整數
D.小于3的整數
72.
73.設A為存放(短)整型的一維數組,如果A的首地址為P,那么A中第i個元素的地址為()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i
74.
75.有以下定義語句,編譯時會出現編譯錯誤的是()。
76.如果要在表單中創建一個普通文本框,下列標記中正確的是()。
A.<inputtype=”text”>
B.<inputtype=”password”>
C.<inputtype=”CheCkbox”>
D.<inputtype=”radio”>
77.軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。
A.編譯程序B.操作系統C.教務管理系統D.匯編程序
78.假定X和Y為double型,則表達式x=2,y=x+3/2的值是()。
A.3.500000B.3C.2.000000D.3.000000
79.以下關于宏的敘述中正確的是()。
A.宏替換沒有數據類型限制
B.宏定義必須位于源程序中所有語句之前
C.宏名必須用大寫字母表示
D.宏調用比函數調用耗費時間
80.若有定義語句:“inta=3,b=2,c=1;”,以下選項中錯誤的賦值表達式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:計算S=f(-n)+(-n+1)+…+f(O)+f(1)+(2)+…+f(n)的值。例如,當n為l0時,函數值應為22.550361。f(x)函數定義如下:請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數fun(),該函數的功能是求出二維數組周邊元素之和,作為函數值返回。二維數組中的值在主函數中賦予。例如,若二維數組中的值為13579299946999813570則函數值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}
參考答案
1.B解析:C語言中注釋可以放在任何位置,選項A錯誤;C語言中的變量只要在使用之前定義即可,位置可以是使用前的任何位置,故選項B正確;C語言中兩側數據類型可以不一致,系統可進行強制類型轉換,選項C錯誤;C語言數值常量中不允許存在空格,選項D錯誤。
2.AC語言的標識符由字母、數字、下劃線組成,且第1個字符必須是字母或下劃線。另外,關鍵字不能作為標識符。因為C語言中區分大小寫,所以B選項中的“FOR”可以作為標識符來用。A選項中含有非法字符“&”,所以其不合法。故本題答案為A選項。
3.B解析:在內存中,字符數據以ASCII碼存儲,它的存儲形式與整數的存儲形式類似。C語言中,字符型數據和整型數據之間可以通用,也可以對字符型數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數組中的下一個元素。
4.C【答案】:C
【知識點】:需求分析階段的任務
【解析】:需求分析階段的任務是深入描述軟件的功能和性能,確定軟件設計的約束和軟件同其他系統元素的接口細節,定義軟件的其他有效性需求,借助于當前系統的邏輯模型導出目標系統邏輯模型,解決目標系統“做什么”的問題。可分為需求提出、需求描述及需求評審三個階段。從此可以看出需求分析的任務不包括制定軟件集成測試計劃,故選C。
5.A函數名代表函數的入口地址,函數指針P指向一個同類型的函數f時,可以寫成“p=f;”,而不能寫成“P=&f;”,選項B錯誤。指針p指向一個數組f時,可以寫成“p=f;”,數組名f代表數組的首地址,選項C錯誤。指針變量指向的是變量的地址,選項D錯誤。char型根據轉化原則可以轉化為double類型。故本題答案為A選項。
6.Bscanf輸入函數中,格式控制J必須嚴格按照函數中的要求進行輸入,在scanf("%c%c",&chl,&ch2)的格式控制語句中沒有任何字符進行間隔,所以在輸入時也不能使用任何字符進行間隔,所以答案選擇B。
7.C
8.D
9.A對下標為偶數的元素進行降序排序,下標為奇數元素保持不變。
10.D
11.D
12.D解析:因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。
13.B
14.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。
15.A
16.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結構是利用一組地址連續的存儲單元一次存儲自棧底到棧頂的數據元素,同時附設指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現。注意:這3種運算方法在各種存儲結構中的應用。
17.Dregister聲明寄存器變量enum聲明枚舉類型default開關語句中的“其他”分支
18.A題干中,if語句的含義是:如果a的值為1,將b的值賦給a,否則將a的值自增1。選項A中,“switch(a==1)”中表達式“a==1”的結果如果為真,即1,則從case1開始執行“a++”;如果“a==1”的結果為假,即為0,則從case0開始執行“a=b”,所以與題干含義執行操作相反的是選項A中的語句。故本題答案為A選項。
19.D解析:改變文件位置指針函數fseek()的功能:①改變文件的位置指針;②輔助實現文件的順序讀寫;③輔助實現文件的隨機讀寫。
20.B由題意可知:使用typedef將類型“struct{intx,y;}*”重命名為“USER”,所以函數fun的返回類型為“struct{intx,y;}*”,即指向結構體類型的指針。故本題答案為B選項。
21.2525解析:本題考查帶參數的宏的定義及相關運算。運算過程為:t=POW(x+y)=(2+3)*(2+3)=25。
22.存儲結構
23.9898解析:本題的考查點是函數的調用。本題中a,b,c,d是實參,x,y,cp,dp是形參。C語言規定,實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。在調用函數時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結果是98。
24.structlink*headstructlink*head解析:考查用指針引用結構體變量成員數據的方法。因為本題中是用結構體變量構成了鏈表,所以要從鏈表頭節點,逐個節點的引用結構體的數據域,需要有指向結構體變量的指針,依次指向各個節點,即p=p->next,而用指針引用結構體成員數據的方法為:p->data。
25.ChinaChinaisagreatcountry!525
26.-3-3解析:%運算符是求兩個數相除的余數,其結果與被除數的符號一致,本題中“-19%4”的值為“-3”。
27.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。
28.p=p*Ip=p/ip=p*I\r\np=p/i解析:本題中,欲求p的值,需要先求m,n,m-n的階乘值,可用循環語句實現。
29.1919解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。
30.1212解析:循環語句中,表達式num%10是取num的個位。循環直至num為0結束,這是逐一求出num+進制表示的各位數字,并累乘于變量k中。函數最后返回k,所以程序輸出12。
31.
32.變換型典型的數據流類型有兩種:變換型和事務型。變換型是指信息沿輸入通路進入系統,同時由外部形式變換成內部形式,進入系統的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統;在很多軟件應用中,存在某種作業數據流,它可以引發一個或多個處理,這些處理能夠完成該作業要求的功能,這種數據流就叫做事務。
33.4242解析:主函數中的for循環循環兩次,即函數sub()被調用兩次。在sub()中x被定義為靜態整型變量,當調用函數sub()完畢返回主函數,x中的值仍然保留,下次調用函數sub()時,x不再被賦初值。第1次調用x/=2相當于x=x/2=8/2=4,第2次調用x=x/2=4/2=2,因此輸出42。
34.1414解析:本題考查遞歸函數的調用。在主函數中調用sub(&x,16,2)函數,此時n=16,k=2,if語句的控制的條件k<=n成立,所以執行下面的語句,調用sub(x,8,4),此時n=8,k=4,if語句的控制條件k<=n成立,所以執行下面的語句,調用sub(x,4,8),此時n=4,k=8,if語句控制的條件k<=n不成立,因此,最后得x=2+4+8=14。
35.數據流數據流解析:結構化分析方法的實質是著眼于數據流,自頂向下,逐層分解,建立系統的處理流程,以數據流圖和數據字典為主要工具,建立系統的邏輯模型。
36.字符串a和b的長度之和字符串a和b的長度之和解析:本題首先通過第一個while循環計算字符串a的長度,再通過第二個循環,將字符串a和b相連,最后返回連接后的總長度。
解析:本題,已知結果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b代入,得到16.0=(9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進行類型轉換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
38.1030010300解析:本題的scanf()函數要求用戶輸入三個十進制整數,但只接受第一和第三個到函數的第二和第三個參數所指的內存地址中。所以本題的輸出為:10300。
39.bcdefghabcdefgha解析:while循環的功能把字符從第二個元素開始左移一位,并將原第一個元素賦給最后一個元素。
40.上溢下溢上溢\r\n下溢
41.DD)【解析】需求分析是軟件定義時期的最后一個階
\n段,它的基本任務就是詳細調查現實世界要處理的對象,充分了解原系統的工作概況,明確用戶的各種需求,然后在這些基礎上確定新系統的功能。
42.D解析:本題考查了考生對字符串常量的理解。字符串常量是一段以雙引號括起來的字符序列,它既可以出現在對字符數組的初始化中,也可以出現在表達式中。當它用于對字符數組的初始化時,應注意系統自動為其添加的結束標志'\\0'。而當它出現在表達式中時,應該將其看作一個constchar*類型的指針常量。在選項A中,首先定義了一個字符指針sp,然后將一個字符串賦給甲所指的地址,這是錯誤的。因為sp是一個未經初始化的野指針,不知其指向哪兒,往一個不確定的地址中寫數據很容易讓程序出錯。選項B首先定義了一個字符數組,然后將一個字符串賦給數組名,這是錯誤的。因為數組名是一個指針常量,不可以被改變。選項C首先定義了一個字符數組,然后將一個字符串賦給數組的第一個元素,這也是錯誤的。因為字符串在表達式中相當于一個常字符指針,將一個指針值賦給一個字符型變量是行不通的。選項D是定義一個字符指針sp,同時使其指向一個字符串常量,即將一個常字符型指針賦給sp。這是可行的。所以,4個選項中選項D符合題意。
43.D解析:C語言在函數中說明的變量為局部變量,只在函數內起作用但不會影響到其他函數。所以在不同的函數中使用相同的函數名不代表是同一函數,A)項正確。在函數定義時聲明的參數只在函數內部起作用,是函數的局部變量,B)正確。在一個函數中定義的變量是這個函數的局部變量,所以只在這個函數內起作用,C)正確。復合語句中定義的變量其作用域是這個復合語句,不會擴大到整個函數,所以D)項錯誤。注意:函數的書寫風格。
44.A解析:分析fun函數程序段,可知fun函數要實現的功能是將s中第(t+1)個元素以前的元素逆置賦給數組p。由于fun中函數定義了靜態變量t=3,因此,在主函數中調用函數fun(a,&x)時,就是要將數組a中前4個元素逆置賦給數組x,最后輸出x數組。
45.A解析:本題考核的知識點是位運算符的應用.首先將八進制040轉換成二進制數000100000,在將此;進制數左移一位為001000000,輸出時轉換成八進制數100。所以,4個選項中A為所選。
46.B解析:字符串常量是由雙引號括起來的一串字符,其中的雙引號不可缺少。由此可知,選項A)、C)、D)都是合法的字符串常量,而選B)是一個字符常量。
47.C解析:線性結構,是指數據元素只有一個直接前件元素和直接后件元素。線性表是線性結構。棧和隊列是指對插入和刪除操作有特殊要求的線性表,樹是非線性結構。
48.D解析:所謂的交換類排序方法是指借助數據元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
49.B解析:第1個循環對數組a進行賦值:第2個循環對數組p進行賦值;第3個循環對k進行累加,k的初值等于5,第1次循環,k=k+p[0]*2=5+0*2=5,第2次循環,k=k+p[1]*2=5+2*2=9,第3次循環,k=k+p[2]*2=9+6*2=21并輸出。
50.C解析:①C語言中的賦值號“=”是—個運算符;②賦值語句是由賦值表達式加上一個分號構成。賦值表達式的左側不能為常量或表達式。
51.D解析:在整個程序運行期間,靜態局部變量在內存的靜態存儲區中占據著永久的存儲單元,即使退出函數以后,下次再進入該函數時,靜態局部變量仍使用原來的存儲單元,靜態局部變量的初值是在編譯的時候賦予的,在程序執行期間不再賦予初值。本題由于連續三次調用函數fun(),三次對靜態變量x進行操作,x的值應依次為6,7,8。
52.B解析:在內存中,字符數據以ASCII碼存()儲,它的存儲形式與整數的存儲形式類似。C語言中,字符型數據和整型數據之間可以通用,也可以對字符型數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數組中的下一個元素。
53.D解析:本題定義a為3行×4列的數組,它可用的行下標最大為2,列下標最大為3。注意:a[0][4]超過了數組的范圍。注意:數組的下標是從0開始的。
54.D解析:本題考查自減(--)運算符的使用。“x--”是先引用x的值然后將x的值減1,所以輸出的x值為8;“--y”是先將y的值減1然后再引用y的值,所以輸出的y值為7。
55.C解析:只能在循環體內和swish語句體內使用break語句。當break出現在循環體的switch語句體內時,其作用只是跳出該switch語句體,并不能中止循環體的執行。若想強行中止循環體的執行,可以在循環體中,但并不在switch語句中設置break語句,滿足某種條件則跳出本層循環體。
56.C解析:表達式p++->n相當于先取p->n的值(即a[0].n),再p++(指針后移指向元素a[1]):表達式p->n++相當于先取p->n的值(即a[0].n),再將p->n的值(即a[0].n的值)加1;表達式++p->n先將p->n的值加1(即a[0].n的值加1),可見,它的值應該是6。選項D和選項B一樣。
57.D解析:p為指針型變量,在輸入函數的地址列表中不用&,當給指針變量賦值時是取變量的地址賦給指針變量,&為取地址運算符,因此只有選項D正確。
58.C解析:在main函數中調用sort函數時,實參&aa[3]把數組元素aa[3]的首地址傳給形參數組a,使aa[3]與a[0]相對應。sort函數將從aa[3]開始的連續5個數進行了從大到小的排序,其他數組元素不變。
59.A解析:選項A中10<a的結果是邏輯值0或1,再與15比較大小沒有意義,因此錯誤。
60.B解析:結構體數組中對結構體成員的引用要先引用到數組元素,然后像對待普通的結構體變量一樣來對待結構體數組元素就可以了。注意:引用結構體變量中的數據。
61.D
62.D
\n本題考查if語句。第1個if語句,如果a<b,則a與b交換;第2個if語句,如果a<c,則a與c交換;第3個if語句,如果b<2t,則b與c交換。3個if語句結合起來實現的功能就是將a、b、C按從大到小排序。
\n
63.B
64.C對線性表進行順序查找,最壞的情況是待查數據在表中不存在,所以比較的次數與表中的元素個數一樣多。
65.D聲明data是結構S數組。初始化data『0].a=10;data[0].b=100;data[1].a=20;data[1].b=200。主函數中P=data[1];即P.a=data[1].a;P.b=data[1].b;執行語句prinff(”%d\n”,++(P.a));打印輸出時p.a先增l再打印。P.a=data[1].a=20,先增1等于21。
66.C
\n語句“if(c==d)y=0;elsey=1;”是if(a<b)語句的一個子句。所以整個語句表達式的意思是:在a<b的情況下,如果c=b,則y=0,否則y=1;如果a<b,則執行第2個if語句,如果C等于d,那么y=0,如果c不等于d,那么y=1,所以,選項C為正確答案。
\n
67.B
68.D解析:C語言中只有字符串常量而沒有字符串變量,故選項A不正確:字符串比較大小是以第1個不相同字符的大小為標準的,跟長度沒有關系,故選項B不正確;字符串比較大小除了使用庫函數strcn3()以外,就只能靠自己寫代碼來實現了,而不能通過關系運算符來比較大小。因為字符串在表達式中相當于const\u3000char*,即常字符指針,代表的是字符串的首地址,關系運算符會將兩個字符串的首地址值比較大小,這是毫無意義的。所以選項C也不正確。空串的長度為0,而以空格打頭的字符串的長度至少為\u30001,故選項D正確,本題應該選擇D。
69.Dstatic變量是局部度量,函數無法修改,所以當i=1時,第2次進入f函數時c=5,所以最終main函數中C的值為5。
70.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結果為不確定值。
71.Bif-else控制結構中,else總是與最近的未配對的if匹配。本題的執行過程為:如果輸入整數小于3則不進行任何操作,否則判斷該整數是否不等于l0,若為真則進行輸出。因此程序輸出的數據為大于3且不等于l0的整數。
72.A
73.B
74.A
75.AA)選項:再能將一個字符串賦值給一個字符變量,所以選擇A)。
76.A
77.C解析:軟件按功能可以分為:應用軟件,系統軟件、支撐軟件(或工具軟件)。應用軟件是為解決特定領域的應用而開發的軟件。例如,事務處理軟件、工程與科學計算軟件,實時處理軟件,嵌入式軟件,人工智能軟件等應用性質不同的軟件。因此選項C教務管理系統屬于應用軟件。系統軟件是計算機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務的軟件。如操作系統,編譯程序,匯編程序,網絡軟件,數據庫管理系統等。因此選項A、B、D都屬于系統軟件。
78.D本題考查C語言中變量類型的轉換。
C語言中若參與運算的變量的數據類型不同,則先轉換成同一類型,然后進行運算。轉換數據始終往長度增加的方向進行,以確保精確度,如int和long運算,則將int轉換為long再運算,所有的浮點運算都是以雙精度(double)進行的。
題目中x、y都為double型數據,而表達式3/2為兩個整型變量之間的計算,計算結果只保留整數部分,小數部分省略掉。3/2的結果為1。后面變為計算y=x+1,這時都需要變為double型數據,結果為3.000000。
79.A宏定義寫在函數的花括號外邊,作用域為其后的程序,通常在文件的最開頭,因此B)選項中宏定義必須位于源程序中所有語句之前是錯誤的。宏名一般用大寫,但不是必須用大寫,因此c)選項錯誤。宏展開不占運行時間,只占編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值),因此D)選項錯誤。
80.A由等式的規則可知,A選項錯誤。先對括號的b進行等式運算,得出b=4,然后計算得出a=4=3,所以會導致錯誤。答案選擇A。
81.(1)錯誤:f(doublex)
正確:doublef(doublex)
(2)錯誤:returns
正確:returns;
【解析】由函數proe()中的函數調用以及函數f中的re-turn語句,可知函數f的返回值類型為double,因此,“f(doublex)”應改為“doublef(doublex)”;根據C語言語法規則,每一條語句都必須以分號結束,因此,應在語句“re-turns”后加上分號。
82.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標中有一個為。或M-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數組周邊元素和。二維數組周邊元素的規律是,其兩個下標中一定有一個是0或M-1或N-1。程序中循環語句用來控制數組的行和列,條件語句用來判斷數組元素是否為周邊元素。</n;j++)</m;i++)</n;j++)</m;i++)2022-2023年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下關于C語言的敘述中正確的是()。
A.C語言中的注釋不可以夾在變量名或關鍵字的中間
B.C語言中的變量可以在使用之前的任何位置進行定義
C.在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D.C語言的數值常量中夾帶空格不影響常量值的正確表示
2.以下選項中不合法的標識符是()。
A.&aB.FORC.printD._00
3.有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-′a′+′A′;
s++;}}
main()
{charstr1[100]="abcddfefdbd",c=′d′;
ss(str1,c);printf("%s\n",str1);}
程序運行后的輸出結果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
4.下面不屬于需求分析階段任務的是()。
A.確定軟件系統的功能需求B.確定軟件系統的性能需求C.制定軟件集成測試計劃D.需求規格說明書評審
5.關于地址和指針,以下敘述正確的是()。
A.可以通過強制類型轉換讓char型指針指向double型變量
B.函數指針P指向一個同類型的函數f時,必須寫成“p=&f;”
C.指針P指向一個數組f時,必須寫成“P=&f;”
D.—個指針變量P可以指向自身
6.設有以下語句charchl,ch2;scanf("%c%C",&chl,&ch2);若要為變量chl和ch2分別輸入字符A和B,正確的輸入形式應該是()。
A.A和B之間用逗號間隔B.A和B之間不能有任何間隔符C.A和B之間可以用回車間隔D.A和B之間用空格間隔
7.高度為h的滿二叉樹的結點數是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
8.對n個關鍵字的序列進行快速排序,平均情況下的空間復雜度為_______
A.O(1)B.O(logn)C.O(n)D.O(nlogn)
9.有以下程序(函數fun只對下標為偶數的元素進行操作):#include<stdio.h>voidfun(int*n){inti,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;t[a[i];a[i]=a[k];a[k]=t;}}main{intaa[lO]=[1,2,3,4,5,6,7],a;fun(aa,7);for(i=0;i<7;i++)printf("%d,",aa[i]);printf("n");}程序運行后的輸出結果是()。A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
10.
11.某堆棧的輸入序列為a,b,c,d,下面的四個序列中,不可能是它的輸出序列的是()。
A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b
12.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
13.一個函數返回值的類型是由()決定的。
A.return語句中表達式的類型B.定義函數時指定的函數類型C.在調用函數時臨時指定D.調用函數的主調函數的類型
14.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double
15.
16.棧通常采用的兩種存儲結構是A.A.線性存儲結構和鏈表存儲結構
B.散列方式和索引方式
C.鏈表存儲結構和數組
D.線性存儲結構和非線性存儲結構
17.下列不屬于C語言關鍵字的是()。A.A.default
B.register
C.enum
D.external
18.下列選項中與“if(a==1)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a==1){ case0:a=b;break; case1:a++;}
B.switch(a){ case1:a=b;break; default:a++;}
C.switch(a){ default:a++;break; case1:a=b;}
D.switch(a==1){ case1:a=b;break; case0:a++;}
19.利用fseek函數可實現的操作是()。
A.實現文件的順序讀寫B.改變文件的位置指針C.實現文件的隨機讀寫D.以上答案均正確
20.設有定義:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函數fun返回值的類型是()。
A.T類型的結構體B.指向結構體類型的指針C.int類型的元素D.int類型的指針
二、2.填空題(20題)21.下列程序的運行結果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
22.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。
23.下列程序的輸出結果是()。
intt(intx,inty,intcp,intdp)
{cp=x%y+y*y;
dp=x+x-y*y;
}
main()
{ima=4,b=3,c=9,d=8;
t(a,b,c,D);
printf("%d%d\n",c,D);
}
24.已知head指向一個帶頭結點的單向鏈表,鏈表中每個結點包含數據域(data)和指針域(next),數據域為整型。以下函數求出鏈表中所有鏈結點數據域的和值,作為函數值返回。請在橫線處填入正確內容。
structlink
{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);}
25.下列程序的運行結果為【】。
#include<stdio.h>
main()
{staticcharstr1[40];
charstr2140];
strcpy(str2,"China");
strcat(str1,str2);
strcat(str1,"isagreatcountry!");
printf("%s%s",str2,strl);
printf("%d%d\n",strlen(str2),strlen(str1));
}
26.若有語句:
inti=-19,j=i%4;
printf("%d\n",j);
則輸出結果是【】。
27.與表達式a+=b等價的另一書寫形式是______。
28.函數fun的功能是:根據以下公式求p的值,結果由函數值返回。m與n為兩個正數且要求m>n。
例如:m=12,n=8時,運行結果應該是495.000000。請在題目的空白處填寫適當的程序語句,將該程序補充完整。
#include<conio.h>
#include<stdio.h)
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;i<=m;i++)【】;
for(i=1;i<=n;i++)【】;
for(i=1;i<=m-n;i++)p=p/i;
returnP;}
main()
{clrscr();
printf("p=%f\n",fun(12,8));}
29.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。
30.以下程序的輸出結果是【】。
#include<stdio.h>
unsignedfun6(unslgnednum)
{unsignedk=1;
do{k*=mum%10;num/=10;}
while(num);
returnk;
}
main()
{unsignedn=26;
printf("%d\n",fan6(n));
}
31.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
32.數據流圖的類型有【】和事務型。
33.若有如下程序:
voidsub()
{staticintx=8;
x/=2;printf("%d",x);
}
main()
{intm;
for(m=0;m<2;m++)sub();}
則程序運行后的輸出結果是【】.
34.以下程序的輸出結果是()。
#include<stdio.h>
main()
fintx=0;
sub(&x,16,2);
printf("%d\n",x);
}
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);
*a+=k;
}
35.結構化分析方法是面向______進行分析的方法。
36.函數fun的返回值是【】。
fun(char*a,char*b)
{intnum=0,n=0;
while(*(a+num)!='\0')num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
returnnum;
}
37.下列程序的輸出結果是16.00,請填空:
main()
}
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
38.以下程序運行時若從鍵盤輸入:102030<回車>。輸出結果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
39.以下程序運行后的輸出結果是【】。
#include<string.h>
cbar*ss(char*s)
{char*p,t;
p=s+1;t=*s;
while(-p){*(p-1)=*p;p++;}
*(p-1)=t;
returns;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
40.棧滿時,再作入棧操作會產生【】,棧空時,刪除操作會產生【】。
三、1.選擇題(20題)41.需求分析階段的任務是()
A.軟件開發方法B.軟件開發工具C.軟件開發費用D.軟件系統功能
42.以下語句或語句組中,能正確進行字符串賦值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
43.以下敘述中不正確的是
A.在不同的函數中可以使用相同的名字的變量
B.函數中的形式參數是局部變量
C.在一個函數內定義的變量只在本函數范圍內有效
D.在一個函數內的復合語句中定義的變量在本函數范圍內有效
44.下列程序的運行結果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k;intx;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}
A.5,4,3,2B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,
45.以下程序的輸出結果是main(){charx=040;printf("%o\n",x<<1);}
A.100B.80C.64D.32
46.下列選項中C語言中不合法的字符串常量的是
A.\121B.'y'C.\n\nD.ABCD\x6d
47.下列數據結構中,屬于非線性的是()。
A.線性表B.隊列C.樹D.棧
48.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
49.以下程序的輸出結果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
50.在下面的語句中,賦值語句錯誤的是_______。
A.a=(b=(c=2,d=3));B.i++;C.a=a/b=2;D.a=a<a+1;
51.閱讀下列程序,則運行結果為#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d\n",x);}
A.5B.6C.7D.8
52.有以下程序voidss(char*s,chart){while(*s){if(*s==t),s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
53.若有說明inta[3][4];,則a數組元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]
54.下列程序的輸出結果是()。main{intx=8,y=8;printf("%d%d\n",x--,--y);}
A.88B.77C.78D.87
55.下列敘述中正確的是()。
A.break語句只能用于swish語句體中
B.continue語句的作用是使程序的執行流程跳出包含它的所有循環
C.break語句只能用在循環體內和switch語句體內
D.在循環體內使用break語句和continue語句的作用相同
56.若有以下說明和語句,則值為6的表達式是______。structstu{intn;structstu*next;};structstua[3],*p;a[0).n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next='\0';p=&a[0];
A.p++->nB.p->n++C.++p->nD.(*p).n++
57.若有說明:int*p,m=5,n;,以下正確的程序段是()。
A.p=&m;scanf("%d",&p)
B.p=&n;scanf("%d",&p)
C.scsnf("%d",&p)p=&n;
D.p=&n;p=&m;
58.以下程序中函數sort的功能是對數組a中的數據進行由大到小的排序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[]={1,2,3,4,5,6,7,8,9,10},i;son(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3;8,7,6,5,4,9,10,
D.1,2,10,9,8,7,6,5,4,3,
59.設a為整型變量,不能正確表達數學關系“10<a<15”的C語言表達式是______。
A.10<a<15
B.a==11||a==12||a==13||a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)
60.若有以下的說明,對初值中整數2的正確引用方式是()。staticstruct{charch;inti;doublex;}a[2][3]={{{'a',1,3,45},{'b',2,7,98},{'c',31,93}}};
A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i
四、選擇題(20題)61.
62.
運行下列程序時,若輸入的數據為“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.00
B.1.003.002.00
C.132
D.3.000002.000001.00000
63.
64.對長度為n的線性表進行順序查找,在最壞情況下需要比較的次數為()。
A.log2nB.n2C.nD.n+1
65.有以下程序:
程序運行后的輸出結果是()。
A.10B.11C.20D.21
66.
設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:
if(a<b)
if(c==d)y=0;
elsey=1;
該語句所表示的含義是()。
A.y=0,a<b且c=dy=1,a≥b
B.y=0,a<b且c=dy=1,a≥b且c≠d
C.y=0,a<b且c=dy=1,a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025租客簽訂租房合同時應注意哪些事項
- 2025年個體沿街商鋪租賃合同
- 2025打印機的租賃合同樣本
- 玩具行業新興市場開發考核試卷
- 2025年棉服購銷合同范本
- 2025電磁爐專賣店代理合同書范本
- 2025年多方合作的協議合同
- 2025年古董藝術品買賣合同模板
- 2025健身設備購銷合同范本
- 2025商業店鋪合作經營合同范本
- 家政服務行業環保管理制度
- 完整的欠貨款協議書范文范本
- 2024年山東省濟寧市中考生物試題卷(含答案解析)
- 浙美版小學二年級下冊美術教學計劃及教案全冊
- 健合集團在線測評原題
- 公路工程標準施工招標文件(2018年版)
- 個人理財-形考作業4(第8-9章)-國開(ZJ)-參考資料
- 2024年江西省職業院校技能大賽(研學旅行賽項)備考試題庫(含答案)
- 人教版九年級數學復習教案全冊
- 【建筑專業】16J914-1公用建筑衛生間(完整)
- 小學數學高效課堂教學策略研究中期報告
評論
0/150
提交評論