




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年山東省泰安市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.有定義語句intb;charc[10];,則正確的輸入語句是______。A.scallf("%d%s",&b,&c);
B.scallf("%d%s",&b,c);
C.scanf("%d%s",b,c)
D.scanf("%d%s",b,&c);
2.有下列程序:程序執行后的輸出結果是()。
A.0,-1,-1,-1
B.0,-1,-1,0
C.0,-1,-1,0,-1,0
D.0,-1,-1,-1,-1,-1
3.檢查軟件產品是否符合需求定義的過程稱為()。
A.確認測試B.集成測試C.驗證測試D.驗收測試
4.由權值分別為3,8,6,2,5的葉子結點生成一棵哈夫曼樹,它的帶權路徑長度為________。
A.24B.48C.72D.53
5.在一個C語言源程序文件中所定義的全局變量,其作用域為()。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數的全部范圍D.由具體定義位置和extern說明來決定范圍
6.有一個100×90的稀疏矩陣,非0元素有10,設每個整型數占2個字節,則用三元組表示該矩陣時,所需的字節數是()。
A.20B.66C.18000D.33
7.在關系數據庫中,用來表示實體間聯系的是()。
A.網狀結構B.樹狀結構C.屬性D.二維表
8.有以下程序:#include<stdio.h>intfun(){staticintx=1;X*=2:returnx;}main(){inti,S=1;for(i=1;i<=3;i++)S*=fun();printf("%d\n",s);}程序運行后的輸出結果是()。A.0B.10C.30D.64
9.
10.下列對于線性鏈表的描述中正確的是()
A.存儲空間不一定是連續,且各元素的存儲順序是任意的
B.存儲空間不一定是連續,且前件元素一定存儲在后件元素的前面
C.存儲空間必須連續,且前件元素一定存儲在后件元素的前面
D.存儲空間必須連續,且各元素的存儲順序是任意的
11.棧和隊列的共同點是()。
A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同點
12.以下對軟件特點描述錯誤的是()。
A.軟件的使用存在老化問題B.軟件的復雜性高C.軟件是一種邏輯實體,具有抽象性D.軟件的運行對計算機系統具有依賴性
二、2.填空題(12題)13.以下程序的功能是:刪去一維數組中所有相同的數,使相同的數只剩一個。數組中的數已按由小到大的順序排列,函數fun返回刪除后數組中數據的個數。
例如,若一維數組中的數據是:
2223445666677899101010
刪除后,數組中的內容應該是:2345678910。請填空。
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{inti,j=1;
for(i=1;i<n;i++)
if(a[j-1]【】a[i])a[j++]=a[i];
【】;
}
main()
{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\nThedataafterdeleted:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
}
14.以下程序中,for循環體執行的次數是【】。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i=1;i<K;i++)
{…}
…
}
15.若有定義intm=5,y=2,則執行表達式y+=y-=m*=y后,y的值為【】。
16.一般來說,算法可以用順序、選擇和______三種基本控制結構組合而成。
17.數據庫管理系統常見的數據模型有層次模型、網狀模型和【】3種。
18.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結果是()。
19.設inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。
20.設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
21.以下程序運行后的輸出結果是【】。
main()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
22.下列程序的輸出結果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z+0;
elseZ+=1;
primf(“%d\n",z);
}
23.需求分析的最終結果是產生【】。
24.設某循環隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環隊列中共有【】個元素。
三、3.程序設計題(10題)25.請編寫一個函數fun,其功能是:將ss所指字符串中所有下標為奇數位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。
例如,若輸入“abc4EFg”,則應輸出“aBc4EFg”。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
26.請編寫一個函數,用來刪除字符串中的所有空格。
例如:輸入asdafaaz67,則輸出為asdafaz67。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
intfun(char*str)
{
}
main()
{
charstr[81];
intn;
clrscr();
printf("Inputastring:");
gets(str);
puts(str);
fun(str);
printf("***Str:%s\n",str);
}
27.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:按分數的高低排列學生的記錄,高分在前。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
28.請編寫一個函數fun(),它的功能是:將ss所指字符串中所有下標為奇數位置的字母轉換為大寫(若該位置上不是字母,則不轉換)。
例如,若輸入abc4Efg,則應輸出aBc4EFg。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*ss)
{
}
main()
{
chartt[81];
clrscr();
printf("\nPleaseenteranstringwithin80characters:\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n\%s",tt);
fun(tt);
printf("\nbecomes\n\%s\n",tt);
}
29.程序定義了NxN的二維數組,并在主函數中賦值。請編寫函數fun,函數的功能是:求出數組周邊元素的平均值并作為函數值返給主函數中的s。
例如:a數組中的值為:
則返回主程序后s的值應為:3.375。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
30.請編寫函數fun,其功能是:計算并輸出3到n之間(含3和n)所有素數的平方根之和。
例如,在主函數中從鍵盤給n輸入100后,輸出為:sum=148.874270。
注意:要求n的值大于2但不大于100。部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
31.學生的記錄由學號和成績組成,N名學生的數據己在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是:把分數最低的學生數據放在h所指的數組中。注意:分數低的學生可能不只一個,函數返回分數最低學生的人數。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b)
{
}
main()
{
STRECs[N]={{“GA005”,82},{“GA003”,75},
{“GA002”,85},{“GA004”,78},{“GA001”,95},
{“GA007”,62},{“GA008”,60},{“GA006”,85},
{“GA015”,83},{“GA013”,94},{“GA012”,78},
{“GA014”,97},{“GA011”,60},{“GA017”,65},
{“GA018”,60},{“GA016”,74}};
STRECh[N];
inti,n;
FILE*out;
n=fun(S,h);
printf(“The%dlowestscore:\n”,n);
for(i=0;i<n;i++)
printf(“%s%4d\n”,h[i].mum,h[i].s);
/*輸出最低分學生的學號和成績*/
printf(“\n”);
out=fopen("outl9.dat",“w”);
fprintf(out,“%d\n”,n);
for(i=0;i<n;i++);
fprintf(out,“%4d\n”,h[i].s);
fclose(out);
}
32.請編寫一個函數fun,它的功能是:將一個數字字符串轉換為一個整數(不得調用C語言提供的將字符串轉換為整數的函數)。例如,若輸入字符串“-1234”,則函數把它轉換為整數值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
33.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是:按分數的高低排列學生的記錄,高分在前。
注意:部分源程序給出如下.
請勿改動主函數main和其他函數中的任何內容,僅在函數fum的花括號中填入所編寫的若啡:語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行輸出4個學生記錄*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
34.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是:把指定分數范圍內的學生數據放在b所指的數組中,分數范圍內的學生人數由函數值返回。
例如,輸入的分數是60和69,則應當把分數在60到69的學生數據進行輸出,包含60分和69分的學生數據。主函數中把60放在low中,把69放在heigh中。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,int1,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)
{t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*輸出指定分數范圍內的學生記錄*/
printf("\n");
ut=fopen("out74.dat","w")
fprintf(out,"%d\n",n)-
n=fun(s,h,80,98);
for(i=0;i<n-1;i++)
/*分數在80~98之間的學生記錄按他數從低到高排序*/
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{tt=h[i];h[ii=h[j];h[j]=tt;}
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
四、單選題(0題)35.以下選項中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
五、單選題(0題)36.二進制數1110111.11轉換成十進制數是()。
A.119.375B.119.75C.119.125D.119.3
六、單選題(0題)37.有以下定義和語句:structworkers{intnum;charname[20];charC;struct{intday;intmonth;intyear;)S;};structworkersw,*pw;pw=&w;能給w中year成員賦1980的語句是()。A.*pw.year=1980;
B.w.year=1980;
C.pw->year=1980
D.w.S.year=1980;
參考答案
1.B解析:scanf函數中的“格式控制”后面應當是地址,而不是變量名。對于變量,通過地址運算符“&”求出內存中的地址;對于數組c[10],數組名c即為數組在內存中的地址。
2.A程序定義整型變量a和b,初值分別是1,-2。for語句中循環條件式為“a--&&b++”,因為--和++的優先級高于邏輯與運算符&&,所以循環條件式等價于“(a--)&&(b++)”,自左向右運算。第1輪循環,a、b的值為1,-2,首先執行a--,a--的值為1,執行完后a的值為0;繼續執行b++,b++的值為-2,執行完后b的值為-1。整個表達式“a--&&b++”的值為真,程序輸出0,-1。第2輪循環,a、b的值分別為0,-1,首先執行a--,a--的值為0,執行完后a的值為-1,由于a--的值為0,根據邏輯與運算的短路原則,表達式“a--&&b++”的值一定為假,表達式b++不再執行,循環結束,執行循環體外的printf語句,輸出a、b的值分別為:-1,-1。所以本題輸出結果為:0,-1,-1,-1。本題答案為A選項。
3.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統測試。
(1)單元測試是針對每個模塊進行的測試,它可從程序的內部結構出發設計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發現詳細設計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。
(2)集成測試是在單元測試的基礎上,根據模塊結構圖將各個模塊連接起來,必須精心計劃,應提交集成測試計劃、集成測試規格說明和集成測試分析報告。主要目標是發現與接口有關的問題。集成測試可以發現概要設計時犯的錯誤。
(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發現需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應該仔細設計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應參與設計測試用例,通常情況下,主要使用生產中的實際數據進行測試,測試數據通過用戶接口輸入。
(4)系統測試是將已經通過確認測試的軟件,作為整個計算機系統的元素與計算機硬件、外設和網絡等其他因素結合在一起,進行一系列的組裝測試和確認測試。系統測試的目的是通過與系統的需求定義做比較,發現軟件與系統的定義不符合的地方。系統測試可以發現問題定義時犯下的錯誤。
4.D
5.D
\n全局變量是在函數外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結束止。當全局變量定義在后,引用它的函數在前時,應該在引用它的函數中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數末尾。
\n
6.B
7.D單一的數據結構——關系,現實世界的實體以及實體間的各種聯系均用關系來表示。數據的邏輯結構——二維表,從用戶角度,關系模型中數據的邏輯結構是一張二維表。但是關系模型的這種簡單的數據結構能夠表達豐富的語義,描述出現實世界的實體以及實體間的各種關系。
8.D函數fun是2的次方的運算,而s*=fun,所以答案為64。
9.A
10.A本題考查的是線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。\n在鏈式存儲結構中,存儲數據結構的存儲空間可以不連續,各數據結點的存儲順序與數據元素之間的邏輯關系可以不一致,而數據元素之間的邏輯關系是由指針域來確定的。故本題答案為A。
11.C解析:棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區別是:棧只允許在表的一端進行插入或刪除操作,是一種“后進先出”(或“先進后出”)的線性表;而隊列只允許在表的一端進行插入操作,在另一端:進行刪除操作,是一種“先進先出”(或“后進后出”)的線性表。因此棧和隊列的共同點是只允許在端點處插入和刪除元素。
12.A軟件具有以下特點。①軟件是一種邏輯實體,具有抽象性。②軟件沒有明顯的制作過程。③軟件在使用期間不存在磨損、老化問題。④對硬件和環境具有依賴性。⑤軟件復雜性高,成本高。⑥軟件開發涉及諸多的社會因素。本題答案為A選項。
13.!=returnj!=returnj解析:函數fun中,變量j用于控制刪除后剩下的數中的下標,i用于搜索原數組中的元素。j始終是新數組已有元素中最后一個元素的下一個元素的下標,所以訂語句中的條件是a[j-1]!=a[i],其中a[j-1]就是新數組中的最后一個元素,若條件成立則表示出現了不同的值,a[i]要添加到新數組中。該算法只能用于數組已排序的題目中。
14.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環共循環了K-1+1次,即4-1+1共4次。
15.-16-16解析:將賦值運算符右側的“表達式”的值賦給左側的變量,并且賦值運算符按照“自右而左”的結合順序,本題表達式應先算m的值為10,再運算y的值為8,最后計算y=y+(-8)=-8+(-8)=-16。
16.循環循環解析:算法一般由順序,選擇和循環三種基本控制結構組合而成。
17.關系模型關系模型解析:數據庫管理系統是位于用戶與操作系統之間的一層系統管理軟件,是一種系統軟件,是用戶與數據庫之間的一個標準接口。其總是基于某種數據模型,可以分為層次模型、網狀模型和關系模型。
18.66解析:strlen()函數的作用是計算字符串的長度并作為函數的返回值,這里的長度不包括串尾的結束標志\'\\0\'。\'\\t\'是轉義字符,代表橫向跳若干格;\'\\'\'是轉義字符,代表雙引號:\'\\023\'也只代表一個字符,而不管轉義字符后面有幾個符;\'\\xAB\'是以兩位十六進制數AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉義字符,代表回車換行。題中語句中的字符串有5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。
19.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區別。
20.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數的存儲分類的概念。如果沒有特別說明,函數的存儲范圍是從定義函數的位置到文件的結尾,如果其他文件想使用這個函數,需要用ginclude文件包含命令將定義函數的文件包含進來。
21.1371513715解析:本題中,定義了一個整型數組n并初始化,在for循環語句中,再對數組中各元素重新賦值。循環執行第一次時,n[1]=n[0]*2+1=0+1=1,printf函數輸出1,然后i的值加1,比較i<=4成立,繼續執行循環體語句,使后一個數為前一個數的2倍加1。所以最后輸出為1、3、7、15。
22.11解析:ifelse語句的功能:若表達式的值為真,執行語句1,并跳過其他語句,執行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執行printf語句,在整個過程中變量z的值都沒發生變化。
23.需求規格說明書需求規格說明書解析:軟件需求規格說明書是需求分析階段的最后成果,是軟件開發中的重要文檔之一。需求規格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。
24.2424解析:在循環隊列中因為頭指針指向的是隊頭元素的前一個位置,所以是從第6個位置開始有數據元素,所以隊列中的數據元素的個數為29-5=24。
25.
解析:該程序功能是將字符串中所有下標為奇數位置上的字母轉換為大寫。其中,同一英文字母的大寫和小寫的ASCII碼值相差32,因此,要將小寫字母轉換為大寫字母,只要將其對應的ASCII碼值減去32即可。
26.intfun(char*str){intij=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')/*將字符串中的空格刪去*/str[j++]=str[i];/*注意該程序中空格字符的表達方法*/str[j]='\0';/*在字符串最后加上結束標記符*/}intfun(char*str)\r\n{\r\ninti,j=0;\r\nfor(i=0;str[i]!='\\0';i++)\r\nif(str[i]!='')/*將字符串中的空格刪去*/\r\nstr[j++]=str[i];/*注意該程序中空格字符的表達方法*/\r\nstr[j]='\\0';/*在字符串最后加上結束標記符*/\r\n}解析:前面我們接觸到的題是刪除字符,但本題要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用“留下”字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,每走到一個字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個空格),則將其保存str[j]中。注意j的下標變化、初值及最后加串結束符'\\0'。
27.
解析:該程序功能是按分數的高低排列學生的記錄。首先從數組中挑選一個最大的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最大的元素,把它和第二個元素交換,不斷重復以上過程,直到比較完最后兩個元素。
28.voidfun(char*ss){inti;for(i=0;ss[i]!='\0';i++)/*將ss所指字符串中所有下標為奇數位置的字母轉換為大寫*/if(i%2==1&&ss[i]>='a'&&SS[i]<='z')ss[i]=ss[i]-32;}voidfun(char*ss)\r\n{\r\ninti;\r\nfor(i=0;ss[i]!='\\0';i++)/*將ss所指字符串中所有下標為奇數位置的字母轉換為大寫*/\r\nif(i%2==1&&ss[i]>='a'&&SS[i]<='z')\r\nss[i]=ss[i]-32;\r\n}解析:從C語言的學習中我們知道,只要將小寫字母減去32則轉成大寫字母,將大寫字母加上32則轉成小寫字母。該程序是用if語句實現該功能轉化的。
29.
解析:該程序功能是求出數組周邊元素的平均值。其中周邊元素是指第一行的元素的行下標為0,或者第n行的元素行下標為n-1,或者第一列元素的元素列下標為0,或者第n列的元素的列下標為n-1。
30.
解析:函數fun的功能是計算并輸出3到n之間(含3和n)所有素數的平方根之和,首先根據題干中的要求找出3到n之間的素數,并求出素數的平方根,然后求得這些平方根的和。
31.intfun(STREC*aSTREC*b){intij=0min=a[0].s;for(i=0;i<N;i++)if(min>a[i].s)min=a[i].s;/*找出最小值*/for(i=0;i<N;i++):if(min==a[i].s)b[j++]=a[i];/*找出成績與min相等的學生的記錄存入結構體b中*/returnj;/*返回最低成績的學生人數*/intfun\u3000(STREC*a,STREC*b)\r\n{\r\ninti,j=0,min=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(min>a[i].s)\r\nmin=a[i].s;/*找出最小值*/\r\nfor(i=0;i<N;i++):\r\nif(min==a[i].s)\r\nb[j++]=a[i];/*找出成績與min相等的學生的記錄,存入結構體b中*/\r\nreturnj;/*返回最低成績的學生人數*/解析:該程序使用循環嵌套,第1個for語句的作用是找出最小值。第2個循環的作用是找出與min相等的成績,也即最低成績的學生記錄,并存入b中。
32.
解析:該程序功能是將一個數字字符串轉換為一個整數。其中,解題思路是將每位數字字符串的ASCII碼減去48(字符“0”的ASCII碼值),變成數字0~9。然后再不斷進行高位乘以10加低位的運算,或者反過來從低位向高位求,即不斷進行低位加高位乘以10的運算。
33.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數的高低排列學生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數的高低排列學生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個數,則要進行N-1次比較,在每一次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數進行比較并將其中大的數放在前或在后(若要求從小到大排序,則大的數要放在后。反之則對調),即兩兩比較后這兩個數要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數肯定在最后,第2次比較結束后,次最大(或次最小)數肯定在倒數的第2個數,依次類推,所以進行第一次比較時必須比較到最后一個數,而進行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 火花線切割機床項目投資可行性研究分析報告(2024-2030版)
- 中國醫用純化水設備行業發展監測及發展戰略規劃報告
- 中國汽車平衡塊行業市場全景評估及發展戰略規劃報告
- 中國電容器用薄膜市場調查報告
- 2025年中國氣瓶光面環規行業市場發展前景及發展趨勢與投資戰略研究報告
- 2025-2030年中國全鋼中央臺項目投資可行性研究分析報告
- 中國川烏頭行業市場深度評估及投資戰略規劃報告
- 中國回光燈市場發展前景預測及投資戰略咨詢報告
- 早教班老師培訓課件
- 同城配送合同
- 高三家長會班主任發言稿課件
- 學前幼兒園-《快樂的小鼴鼠》教學課件設計
- 3停止間轉法教案
- 2022-2023學年重慶市合川市三下數學期末學業質量監測模擬試題含解析
- 全過程造價咨詢服務實施方案
- 初二生地會考復習資料全
- 里氏硬度法檢測鋼材強度范圍記錄表、鋼材里氏硬度與抗拉強度范圍換算表
- 四川省宜賓市翠屏區中學2022-2023學年數學八年級第二學期期末檢測試題含解析
- 2020-2021成都石室聯合中學蜀華分校小學數學小升初模擬試卷附答案
- 某冶金機械廠供配電系統設計
- 《在中亞細亞草原上》賞析 課件
評論
0/150
提交評論