2022年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第1頁
2022年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第2頁
2022年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第3頁
2022年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第4頁
2022年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2022年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題一卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.下列程序的輸出結(jié)果是()。

#include<stdio.h>

intb=2;

intfunc(int*A)

{b+=*a;retumb;}

main()

{inta=1,t=2;

t+=func(&A);

printf("%d\n",t);

}

A.4B.5C.6D.8

2.與單鏈表相比,雙向鏈表的優(yōu)點(diǎn)之一是()。

A.插入、刪除操作更加簡(jiǎn)單B.可以隨機(jī)訪問C.可以省略表頭指針或表尾指針D.順序訪問相鄰結(jié)點(diǎn)更加靈活

3.設(shè)有遞歸算法如下試問計(jì)算x(x(8))時(shí)需要計(jì)算()次x函數(shù)。A.8B.9C.16D.18

4.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序

5.關(guān)于排序算法的以下說法,錯(cuò)誤的是()

A.歸并排序的平均時(shí)間復(fù)雜度O(nlogn),最壞時(shí)間復(fù)雜度O(n^2)

B.堆排序平均時(shí)間復(fù)雜度O(nlogn),最壞時(shí)間復(fù)雜度O(nlogn)

C.冒泡排序平均時(shí)間復(fù)雜度O(n^2),最壞時(shí)間復(fù)雜度O(n^2)

D.快速排序的平均時(shí)間復(fù)雜度O(nlogn),最壞時(shí)間復(fù)雜度O(n^2)

6.采用深度優(yōu)先搜索或拓?fù)渑判蛩惴梢耘袛喑鲆粋€(gè)有向圖中是否有環(huán)(回路)()

A.對(duì)B.錯(cuò)

7.以下敘述中正確的是()。

A.結(jié)構(gòu)體變量中的成員可以是簡(jiǎn)單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時(shí),其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時(shí),類型不同的成員項(xiàng)之間可以用逗號(hào)隔開

8.

9.若有定義語句“doublea,*p=&a;”,下列敘述中錯(cuò)誤的是()。

A.定義語句中的“*”是一個(gè)間址運(yùn)算符

B.定義語句中的“*”是一個(gè)說明符

C.定義語句中的“p”只能存放double類型變量的地址

D.定義語句中*p=&a”把變量a的地址作為初值賦給指針變量p

10.程序運(yùn)行中需要從鍵盤上輸入多于一個(gè)數(shù)據(jù)時(shí),各數(shù)據(jù)之間應(yīng)使用()符號(hào)作為分隔符。

A.空格或逗號(hào)B.逗號(hào)或回車C.逗號(hào)或分號(hào)D.空格或回車

11.

12.算法的時(shí)間復(fù)雜度取決于()

A.問題的規(guī)模B.待處理數(shù)據(jù)的初態(tài)C.A和B

二、2.填空題(12題)13.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

14.下列程序的運(yùn)行結(jié)果為【】。

main()

{intx=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

printf("%d,",x);

K=y==Z;

printf{"%d\n",x);

}

15.在關(guān)系模型中,二維表的行稱為______。

16.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{intx=15;

while(x>10&&x<50)

{x++;

if(x/3){x++;break;}

elsecontinue;

}

printf(“%d\n”,x);

}

17.下面程序有兩個(gè)printf語句,如果第一個(gè)printf語句輸出的是194,則第二個(gè)printf語句的輸出結(jié)果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n,p+9);

}

18.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

19.以下程序的輸出結(jié)果是【】。

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

20.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對(duì)數(shù)據(jù)的操作運(yùn)算。

21.strcat函數(shù)的作用是【】。

22.寫出下列程序的輸出結(jié)果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

23.若從鍵盤輸入58,則以下程序的輸出結(jié)果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

24.閱讀下列程序,則程序的輸出結(jié)果為【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,'x'};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c='y';}

三、3.程序設(shè)計(jì)題(10題)25.下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是使數(shù)組右上半三角元素中的值全部置成0。例如a數(shù)組中的值為

a=456

179

326,

則返回主程序后a數(shù)組中的值應(yīng)為

000

100

320

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#defineN5

intfun(inta[][N])

{

}

main()

{

inta[N][N],i,j;

clrscr();

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

/*產(chǎn)生—個(gè)隨機(jī)的5*5矩陣*/

{for(j=0;j<N;j++)

{a[i][j]=rand()%10;

printf(“%4d”,a[i][j]);

}

printf(“\n”);

}

fun(a);

printf(“THERESULT\n”);

for(i=0;i<N;i++)

{for(j=0;i<N;j++)

printf(“%4d”,a[i][j]);

printf(“\n”);

}

}

26.m個(gè)人的成績(jī)存放在score數(shù)組中,請(qǐng)編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。

例如,當(dāng)score數(shù)組中的數(shù)據(jù)為:10、20、30、40、50、60、70、80、90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為:10、20、30、40。

注意:部分源程序在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

27.請(qǐng)編一個(gè)函數(shù)floatfun(doubleh),函數(shù)的功能是對(duì)變量h中的值保留兩位小數(shù),并對(duì)第三位進(jìn)行四舍五入(規(guī)定h中的值為正數(shù))。

例如:若h值為8.32433,則函數(shù)返回8.32:若h值為8.32533,則函數(shù)返回8.33。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)。fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

floatfun(floath)

{

}

main()

{

floata;

clrscr();

printf("Entera:");

scanf("%f",&a);

printf("Theoriginaldatais:");

printf("%f\n\n",a);

printf("Theresult:%f\n",fun(a));

}

28.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)己在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#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);

/*輸出最低分學(xué)生的學(xué)號(hào)和成績(jī)*/

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);

}

29.請(qǐng)編寫函數(shù)fun(),其功能是:將s所指字符串中下標(biāo)為奇數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。

例如,當(dāng)s所指字符串中的內(nèi)容為siegAHdied,則在t所指數(shù)組中的內(nèi)容應(yīng)是seAde。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*S,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%S",S);

fun(S,t);

printf("\nTheresultis:%s\n",t);

}

30.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面。

例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

inti,p,n=15;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)

printf("%3d",a[i]);

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,p,n);

printf("\nThedataaftermoving:\n");

for(i=0;i<n;i++)

printf("%3d",a[i]);

printf("\n\n");

}

31.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun(),它的功能是:刪除字符串中所有的*號(hào)。在編寫函數(shù)時(shí),不得使用C語言中提供的字符串函數(shù)。

例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是ABCDEFG。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio,h>

#include<stdio,h>

voidfun(char*a)

{

}

main()

{

chars[81];

printf("Enterastring:\n");

gets(s);

fun(s);

printf("Thestringafterdeleted:\n");

puts(s);

}

32.請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

注意:部分源程序存在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

33.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

注意:部分源程序在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

34.請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:求出一個(gè)2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。

注意:部分源程序存在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

四、單選題(0題)35.以下關(guān)于C語言數(shù)據(jù)類型使用的敘述中錯(cuò)誤的是A.若要準(zhǔn)確無誤差的表示自然數(shù),應(yīng)使用整數(shù)類型

B.若要保存帶有多位小數(shù)的數(shù)據(jù),應(yīng)使用雙精度類型

C.若要處理如“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型

D.若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型

五、單選題(0題)36.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。

A.0B.1C.2D.3

六、單選題(0題)37.下列敘述中錯(cuò)誤的是()。

A.C語言函數(shù)中定義的自動(dòng)變量,系統(tǒng)不自動(dòng)賦確定的初值

B.在C語言的同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限于本復(fù)合語句內(nèi)

C.C語言函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù)為其賦一次初值

D.C語言函數(shù)的形參不可以說明為static型變量

參考答案

1.B解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。在執(zhí)行函數(shù)func時(shí),由于全局定義了一個(gè)變量b,所以在函數(shù)體中執(zhí)行時(shí)b=2+1=3,最終t=2+3=5。

2.D

3.D

4.A解析:以下幾種算法的時(shí)間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當(dāng)排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。

5.A

6.A

7.A結(jié)構(gòu)體變量中的成員可以是簡(jiǎn)單變量、數(shù)組、指針變量或者結(jié)構(gòu)體變量,選項(xiàng)A正確;不同結(jié)構(gòu)體成員名可以相同,選項(xiàng)B錯(cuò)誤;結(jié)構(gòu)體定義時(shí),其成員的數(shù)據(jù)類型不能是本結(jié)構(gòu)體類型,選項(xiàng)C錯(cuò)誤;結(jié)構(gòu)體定義時(shí),類型不同的成員項(xiàng)之間使用分號(hào)隔開,選項(xiàng)D錯(cuò)誤。本題答案為A選項(xiàng)。

8.D

9.A變量定義語句“doublea,*p=&a;”,“*”是一個(gè)指針運(yùn)算符,而非間址運(yùn)算符。故本題答案為A選項(xiàng)。

10.D

11.B

12.C

13.3535解析:函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個(gè)數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

14.8141

15.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。

16.1717解析:bteak語句只能在循環(huán)體和switch語句體內(nèi)使用,當(dāng)break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時(shí),其作用只是跳出該switch語句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時(shí),則在執(zhí)行break后,跳出本層循環(huán)體。而continue語句的作用時(shí)結(jié)束本次循環(huán);即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。本題中首先定義了一個(gè)變量x并賦初值15,然后判斷循環(huán)條件“x>5&&x<50”,即“x>5&&x<50”,為真,執(zhí)行循環(huán)體。語句“x++;”執(zhí)行后,x的值變?yōu)?6,“x/3”的值為5為真,執(zhí)行其后的語句“x++;”,x的值變?yōu)?7,執(zhí)行語句“break”,退出循環(huán),輸出x的值為17。

17.1a61a6解析:對(duì)于指針變量的運(yùn)算,就是對(duì)地址的運(yùn)算。本題中由于指針指向的是整型變量,所以,使指針變量移動(dòng)9個(gè)位置也就是移動(dòng)18個(gè)字節(jié)。注意,本題是以十六進(jìn)制輸出的。

18.3535解析:考查swap()函數(shù)。函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個(gè)數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

19.1616解析:首先用j和MCRA(i)替換MCRB(n,m)中的參數(shù)n和m,變成2*MCRA(j)+MCRA(i),再用j和i替換MCRA(m)中的參數(shù)m,變成2*2*j+2*i=2*2*3+2*2=16。

20.存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個(gè)方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)及對(duì)數(shù)據(jù)的操作運(yùn)算。

21.連接兩個(gè)字符數(shù)組中的字符連接兩個(gè)字符數(shù)組中的字符解析:strcat函數(shù)的作用是連接兩個(gè)字符數(shù)組中的字符串。

22.333,3解析:本題在while(n++<=1)語句后,直接加了分號(hào),說明如果while()的條件為真時(shí),該循環(huán)什么都不做:n++是先取n的當(dāng)前值和1做比較,然后再將n加1。第一次循環(huán),n=0時(shí),循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時(shí),循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時(shí),循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時(shí)仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個(gè)printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加l,即程序結(jié)束后得到n=4,但輸出的是3。

23.585858585858解析:在程序中,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個(gè)if語句,因?yàn)椋琣=58>50,執(zhí)行第一個(gè)if語句后面的輸出語句,輸出58;接著執(zhí)行第二個(gè)if語句,因?yàn)?,a=58>40,執(zhí)行第二個(gè)if語句后面的輸出語句,輸出58;接著執(zhí)行第三個(gè)if語句,因?yàn)?,a=58>30,執(zhí)行第三個(gè)if語句后面的輸出語句,輸出58,所以最后的輸出為585858。

24.30x30x解析:本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。

25.intfun(inta[][N)){intij;for(i=0;i<N;i++)for(j=i;j<N;j++)a[i][j]=0;/*將數(shù)組右上半三角元素中的值全部置成0*/}intfun(inta[][N))\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=i;j<N;j++)\r\na[i][j]=0;/*將數(shù)組右上半三角元素中的值全部置成0*/\r\n}解析:本題旨在考查控制數(shù)組中右上半三角元素的算法,也就是兩個(gè)千篇一律的循環(huán)語句,希望學(xué)習(xí)者能夠掌握消化。

26.

解析:(1)該程序功能是返回低于平均分的人數(shù)。它的解題思路可以分解為以下幾步:求總分一求平均分一逐個(gè)元素與平均分比較一統(tǒng)計(jì)低于平均分的人數(shù)。

(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)fun(score,9,below)中的參數(shù)由題目可知,score存放著m個(gè)人的成績(jī),below存放低于平均分的分?jǐn)?shù)。另外,根據(jù)score的定義,可知9為score數(shù)組中元素的個(gè)數(shù),傳給函數(shù)fun中的參數(shù)m。

27.floatfun(floath){longt;t=(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5相當(dāng)十對(duì)h中的第三位小數(shù)進(jìn)行四舍五入除以10后將其賦給一個(gè)長(zhǎng)整型數(shù)時(shí)就把第三位小數(shù)后的數(shù)全部截去*/return(float)t/100;/*除以100保留2位小數(shù)*/floatfun(floath)\r\n{\r\nlongt;\r\nt=(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5,相當(dāng)十對(duì)h中的第三位小數(shù)進(jìn)行四舍五入\r\n除以10后將其賦給一個(gè)長(zhǎng)整型數(shù)時(shí)就把第三位小數(shù)后的數(shù)全部截去*/\r\nreturn(float)t/100;/*除以100,保留2位小數(shù)*/解析:注意本題要求h的值真正發(fā)生了四舍五入,而不是為了輸出,即不能用printf(“%7.2f”,h)來直接得到結(jié)果。由于單精度數(shù)h乘以1000后再加5,此時(shí)相當(dāng)于對(duì)h中的第三位小數(shù)進(jìn)行四舍五入,再將其賦給一個(gè)長(zhǎng)整型數(shù)時(shí)就把第三位小數(shù)后的數(shù)全部截去。注意在return中要將其中一個(gè)數(shù)轉(zhuǎn)成浮點(diǎn)型數(shù)。

28.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];/*找出成績(jī)與min相等的學(xué)生的記錄存入結(jié)構(gòu)體b中*/returnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/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];/*找出成績(jī)與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/\r\nreturnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/解析:該程序使用循環(huán)嵌套,第1個(gè)for語句的作用是找出最小值。第2個(gè)循環(huán)的作用是找出與min相等的成績(jī),也即最低成績(jī)的學(xué)生記錄,并存入b中。

29.voidfun(char*Schart[]){intij=0k=strlen(s);/*k為字符串的長(zhǎng)度*/for(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/t[j++]=s[i];t[j]='\0';/*在字符串最后加上結(jié)束標(biāo)志*/}voidfun(char*S,chart[])\r\n{\r\ninti,j=0,k=strlen(s);/*k為字符串的長(zhǎng)度*/\r\nfor(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/\r\nt[j++]=s[i];\r\nt[j]='\\0';/*在字符串最后加上結(jié)束標(biāo)志*/\r\n}解析:本題使用了一種i永遠(yuǎn)是偶數(shù)的循環(huán)方法,即for(i=0;i<k;i=i+2),因?yàn)殚_始時(shí)i的值為0,當(dāng)i+2循環(huán)時(shí),此值永遠(yuǎn)是偶數(shù)。

30.voidfun(int*wintpintn){inti.jt;for(i=p;i<=n-1;i++)/*循環(huán)右移n-p次*/{t=w[n-11;for(j=n-2;j>=0;j--)/*實(shí)現(xiàn)循環(huán)右移*/w[j+1]=w[j];w[0]=t;}voidfun(int*w,intp,intn)\r\n{\r\ninti.j,t;\r\nfor(i=p;i<=n-1;i+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論