




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年寧夏回族自治區吳忠市全國計算機等級考試C語言程序設計真題一卷(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.對于只在表的首、尾兩端進行插入操作的線性表,宜采用的存儲結構為()。
A.順序表B.用頭指針表示的循環單鏈表C.用尾指針表示的循環單鏈表D.單鏈表
2.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}執行時輸入6并按<Enter>鍵,則輸出結果是()。A.6B.8C.7D.5
3.設有以下語句charchl,ch2;scanf("%c%C",&chl,&ch2);若要為變量chl和ch2分別輸入字符A和B,正確的輸入形式應該是()。
A.A和B之間用逗號間隔B.A和B之間不能有任何間隔符C.A和B之間可以用回車間隔D.A和B之間用空格間隔
4.以下是根據文件大小分配存儲空間的一個算法偽代碼,請問其空間復雜度是多少()A.O(n)B.O(n^2)C.O(2^n)D.O(n*log(n))
5.在位運算中,操作數每左移兩位,其結果相當于()。
A.操作數乘以2B.操作數除以2C.操作數除以4D.操作數乘以4
6.下列關于邏輯運算符兩側運算對象的敘述中正確的是()。
A.只能是整數0或1B.只能是整數0或非0整數C.可以是結構體類型的數據D.可以是任意合法的表達式
7.以下正確的字符串常量是()。
A."\\\"B.abcC.OlympicGamesD.""
8.下列程序的運行結果是()。#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,5C.2,2,2,2D.5,5,5,5
9.
10.以下程序的輸出結果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
11.表達式“a+=a-=a=9”的值是()。
A.18B.-9C.0D.9
12.設a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=m=2,n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為()
A.0B.1C.2D.3
二、2.填空題(12題)13.設二進制數A是00101101,若想通過異或運算ab使A的高4位取反,低4位不變,則二進制數B應是【】。
14.以下程序運行后的輸出結果是【】。
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
15.以下程序段的輸出結果是【】。
inti=9;
printf("%o\n",i);
16.若有如下定義,doublea[100];,則a數組元素的下標上限是【】。
17.以下程序運行后的輸出結果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
18.以下程序的運行結果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
19.已有定義如下:
structnode
{intdata;
structnode*next;
}*p;
以下語句調用malloc函數,使指針p指向一個具有structnode類型的動態存儲空間。請填空。
p=(structnode*)malloc(【】);
20.性結構中,隊列的操作順序是先進先出,而棧的操作順序是______。
21.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。
22.若有定義floatb[15],*p=b;,且數組b的首地址為200H,則p+13所指向的數組元素的地址為______。
23.下面程序的功能是根據公式e=1+1/1!+1/2!+1/3!+1/4!+...計算e的近似值,精度要求為10-5。請填空。
main()
{intn;
doublee=1.0,t=1.0;
for(n=1;【】n++);
{【】e+=t;}
printf("%f\n",e);}
24.在關系模型中,把數據看成一個二維表,每一個二維表稱為一個______。
三、3.程序設計題(10題)25.程序定義了NxN的二維數組,并在主函數中賦值。請編寫函數fun,函數的功能是:求出數組周邊元素的平均值并作為函數值返給主函數中的s。
例如:a數組中的值為:
則返回主程序后s的值應為:3.375。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
26.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是:把低于平均分的學生數據放在b所指的數組中,低于平均分的學生人數通過形參n傳回,平均分通過函數值返回。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio,h>
#defineN8
typedefstruct
{charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
main()
{
STRECs[N]={{"GA05",85},{"GA03",76}
{"GA02",69},{"GA04",85}
{"GA01",91}{"GA07",72},{"GA08",64}
{"GA06",87}};
STSCh[N],t;
FILE*out;
int.i,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichis
lowerthan%7.3f:\n"n,ave);
for(i=0;i<n;i++)
/*輸出成績低平均值的學生記錄*/
printf("%s%4lf\n"h[i]num,
h[i].s);
printf("\n");
ut=fopen("out71dat","w"
fprintf(out,"%d\n%7.3f\n",nave);
/*輸出平均值/
for(i=0;i<n-1;i++)
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{t=h[i];h[i]=h[j];h[j]=t;}
/*將成績由低至高排列*/
for(i=0;i<n;i++)
fprintf(out,"%4lf\n"h[i]s);
fclose(out);
}
27.請編寫函數fun,函數的功能是:移動一維數組中的內容:若數組中有n個整數,要求把下標從0到p(含p,p小于等于n-1)的數組元素平移到數組的最后。
例如,一維數組中的原始內容為:1,2,3,4,5,6,7,8,9,10:p的值為3。移動后,一維數組中的內容應為:5,6,7,8,9,10,1,2,3,4。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
28.請編寫一個函數fun,它的功能是:根據以下公式求π的值(要求滿足精度0.0005,即某項小于0.0005時停止迭代):
程序運行后,如果輸入精度0.0005,則程序輸出為3.140578。
注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
29.請編寫函數fun,其功能是:計算并輸出下列多項式的值:
例如,在主函數中從鍵盤給n輸入50后,輸出為:s=1.718282。
注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
30.假定輸入的字符串中只包含字母和*號。請編寫函數fun(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。
例如,若字符串中的內容為****A*BC*DEF*G*******刪除后,字符串中的內容則應當是****A*BC*DEF*G。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數6ln的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio,h>
#include<conio.h>
voidfun(char*a)
{
}
main()
{
chars[81];
printf("Enterastring:\n");
gets(s);
fun(s);
printf("Thestringafterdeleted:\n");
puts(s);
}
31.請編寫函數fun,其功能是:計算并輸出
例如,在主函數中從鍵盤給n輸入20后,輸出為:s=534.188884。
注意:要求n的值大于1但不大于100。
部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
32.編寫一個函數,該函數可以統計一個長度為2的字符串在另一個字符串中出現的次數。例如,假定輸入的字符串為asdasasdfgasdaszx67asdmklo,子字符串為as,則應當輸出6。
注意:部分源程序給出如下。
請勿改動主函數main和具他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(char*str,char*substr)
{
}
main()
{
charstr[81],substr[3];
intn;
clrscr();
printf("輸入主字符串");
gets(str);
printf("輸入子字符串");
gets(substr);
puts(str);
puts(substr);
n=fun(shr,substr);
printf("n=%d\n",n);
}
33.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:按分數的高低排列學生的記錄,高分在前。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
34.請編寫函數fun,其功能是求出數組的最大元素在數組中的下標并存放在k所指的存儲單元中。
例如,輸入如下整數:87667589610l30l401980431451777則輸出結果為:6,980
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.設有定義:charpE]={’1’,‘2’,’3’},*q=p;,以下不能計算出一個char型數據所占字節數的表達式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
五、單選題(0題)36.對n個關鍵字的序列進行快速排序,平均情況下的空間復雜度為_______
A.O(1)B.O(logn)C.O(n)D.O(nlogn)
六、單選題(0題)37.使用堆排序方法排序(45,78,57,25,41,89),初始堆序列()
A.78,45,57,25,41,89
B.89,78,57,25,41,45
C.89,78,25,45,41,57
D.89,45,78,41,57,25
參考答案
1.C
2.C后綴自增運算“t++”表示先運算,再自加。語句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值為6,則“t++<6”,條件為假,t自增至7,執行“printf(“%d\\n”,t--);”,此時t=7,輸出t值為7,之后進行自減操作t=6。因此輸出的結果為7。故本題答案為C選項。
3.Bscanf輸入函數中,格式控制J必須嚴格按照函數中的要求進行輸入,在scanf("%c%c",&chl,&ch2)的格式控制語句中沒有任何字符進行間隔,所以在輸入時也不能使用任何字符進行間隔,所以答案選擇B。
4.C
5.D解析:本題主要考查左移、右移對數據值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。
6.D解析:邏輯運算符兩側的運算對象可以是任意合法的表達式。邏輯表達式的運算結果或者為1(“真”),或者為0(“假”)。
7.D選項A中“\\\”為轉義字符,故選項A錯誤,選項B和C顯然不是字符串常量。選項D是一個字符串常量,稱為空串。
8.A依據fun函數,可知其要實現的功能是將S中第(t+1)個元素以前的元素逆置賦給數組P。由于fun中函數定義了靜態變量t=3,因此,main函數中調用函數fun(a,&x)時,就是要將數組a中前4個元素逆置賦給數x,最后輸出x數組。
9.A
10.B解析:字符數組元素作函數參數是單向的值傳遞。函數cchar的功能是將大寫字母轉換為小寫字母。主函數中while循環語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調用函數cchar,即主函數中通過循環語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉換為小寫字母,因此printf的輸出結果為選項B。
11.C首先計算表達式“a=9”;再計算表達式“a-=9”;即“a=a-9”,結果為0;最后計算表達式“a+=0”,即“a=a+0”,所以最終結果為0。故本題答案為C選項。
12.C
13.1111000011110000解析:按位異或運算的一個重要應用是讓某個整型變量的二進制位取反,0變成1,而1變成0。這只要設計這樣一個位串信息,讓要變反的位為1,不要改變的位為0,用這個位串信息與整型變量按位加就能得到希望的結果。要使字節的高4位取反,低4位不變,則需要位串信息是11110000。
14.123056009123\r\n056\r\n009解析:本題中,定義了一個元素類型為整型的二維數組a[][3]={1,2,3,4,5,6,7,8,9},它是一個3*3的矩陣,“for(i=0;i<3;i++)for(j=i=1;j<3;j++)a[j][i]=0;”將列下標i小于行下標j的元素a[1][0]、a[2][0]、a[2][1]賦值為0,最后“for(j=0;j<3;j++)printf('%n',a[i][j]);printf('\\n');”進行換行輸出,所以輸出結果為:
123
056
009
15.1111解析:本題考核的知識點是printf()函數的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,9的八進制數的表示為11。
16.9999解析:數組的下標是從0開始存放數據的,而不是1,當數組大小為n時,其下標從0開始,到n-1,所以本題的答案為99。
17.4334
18.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函數main()中定義了一個變量i,并賦初值4,調用fun()函數將i的初值傳遞給形參m,進行fun()函數后的運算,輸出結果為m=4,k=4。將k值輸出后自行增加1,k=5,此時全局變量k的值變為5。主函數中調用fun()函數后,i再自行增加1,i=5,所以主函數輸出的結果為“i=5k=5”。
19.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是開辟一個長度為sizeof(struetnode)的內存區。(structnode*)的作用是使malloc返回的指針轉換為指向structnode類型數據的指針。
20.先進后出先進后出解析:隊列和棧都是線性結構,但是不同之處在于隊列的操作順序是先進先出,而棧的操作順序是先進后出。
21.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
22.252H252H解析:要解答本題,首先要明白在對指針進行加,減運算時,數字“1”不是十進制數的“1”,而是指“1”個存儲單元長度。1個存儲單元長度占存儲空間的多少,應該視具體情況而定,如果存儲單元的基類型是血型,則移動1個存儲單元的長度就是位移2個字節;如果存儲單元基類型是float型,則移動1個存儲單元的長度就是位移4個字節。所以p+13所指向的數組元素的地址為:200H+(13*4)H=252H。
23.t>=le-5;t=t/n;
24.關系關系解析:關系模型用;維表表示,則每個;維表代表一種關系。
25.
解析:該程序功能是求出數組周邊元素的平均值。其中周邊元素是指第一行的元素的行下標為0,或者第n行的元素行下標為n-1,或者第一列元素的元素列下標為0,或者第n列的元素的列下標為n-1。
26.doublefun(STREC*aSTREC*bint*n){intij=0;doubleay=0.0;for(i=0;i<N;i++)av=av+a[i].s;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(a[i].s<av)b[j++]=a[i];/*將低于平均值的學生記錄存入結構體b中*/*n=j;/*指針傳回低于平均值的學生人數//returnav;/*返回平均值*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti,j=0;\r\ndoubleay=0.0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<av)b[j++]=a[i];/*將低于平均值的學生記錄存入結構體b中*/\r\n*n=j;/*指針傳回低于平均值的學生人數//\r\nreturnav;/*返回平均值*/\r\n}解析:很明顯,本題應該使用循環語句和條件判斷語句來實現目的,第1個循環是求出總分,然后求出平均分av。第2個循環的作用是將分數低于平均分的學生記錄存入數組b中。
27.
解析:該程序功能是移動一維數組中的內容。解題思路首先將字符串拷貝到一個臨時的數組,然后將字符串進行前移操作,最后將由于前移覆蓋掉的字符,由臨時數組中拷貝到指定字符串。
28.
解析:進入fun函數,根據前面的分析:(1)根據題意,需要把每一項累加起來;若每一累加項的值放在t中,后一項等于前一項累加項的值乘以n/(2*n+1)來求得。
(2)根據公式將求到的π/2的值放到變量pi中,每累加一次,n的值就增加1,以便求下一個累加項,不斷重復,直到滿足題目中的精度要求。
29.
解析:該程序功能是計算并輸出多項式值。根據題干中給出的數列,首先推出每一項的表達式,然后再對多項式進行累加求和。
30.voidfun(char*a){while(*a!='\0')a++;a--;/*指針a指向字符串的尾部*/while(*a=='*')a--/*指針a指向最后一個字母*/*(a+l)='\0';/*在字符串最后加上結束標志位*/}voidfun(char*a)\r\n{\r\nwhile(*a!='\\0')\r\na++;\r\na--;/*指針a指向字符串的尾部*/\r\nwhile(*a=='*')\r\n\u3000\u3000\u3000a--/*指針a指向最后一個字母*/\u3000\u3000\u3000\r\n*(a+l)='\\0';\u3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物肥施工合同協議
- 2025至2030年中國硬質合金鍵槽銑刀數據監測研究報告
- 2025至2030年中國電子加濕器數據監測研究報告
- 2025至2030年中國電力電纜保護導管數據監測研究報告
- 2025至2030年中國環柱式旋轉門數據監測研究報告
- 2025至2030年中國爐臺數據監測研究報告
- 2025至2030年中國清爽暈車貼數據監測研究報告
- 2025至2030年中國漿紗潤滑劑數據監測研究報告
- 2025至2030年中國月餅餡料定量切割機數據監測研究報告
- 2025至2030年中國護板膜數據監測研究報告
- 浙教版七年級下冊數學期中試卷-2
- 2024年江蘇省宿遷市中考生物真題卷及答案解析
- T∕HGJ 12400-2021 石油化工儀表線纜選型設計標準
- 2023年四川省遂寧市經開區社區工作人員(綜合考點共100題)模擬測試練習題含答案
- 測繪高級工程師答辯題庫
- 化工原理天大版5.1蒸發
- 中考英語高頻單詞(背誦版)
- 《冷鏈物流管理》教學大綱
- 中華護理學會團體標準-氣管切開非機械通氣患者氣道護理
- 礦山地質環境監測信息平臺
- GB/T 44562-2024航空用鈦合金100°沉頭大底腳螺紋抽芯鉚釘
評論
0/150
提交評論