2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。

2.軟什是程序、數(shù)據(jù)和______的集合。

3.下面能正確進行字符串賦值操作的是

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

main()

{inti;

for(i=1;i+1;i++)

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

5.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

6.設(shè)有以下定義和語句,則*(*(P+2)+1)的值為【】。

int[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

7.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(______);

ch=fSetc(fp);

while(!feof(fp)){putchar(ch);ch=fSetc(fp);}

putchar('\n');fclose(fp);

}

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

#include<stdio.h>

#deftneJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

9.一個模塊直接訪問另一個模塊的內(nèi)容,稱為【】藕合。

10.若輸入Ihaveatest.#,則以下程序的運行結(jié)果為【】。

#include<stdio.h>

main()

{FILE*fp;

charstr[100],filename[10];

inti=0;

if((fp=fopen("test","w"))==NULL)

{printf("cannotopenthefile!\n");

exit(0);

}

getchar();

gets(str);

while(str[i]!='#')

{if(str[i]>='a'&&str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}

二、單選題(10題)11.有以下程序段當(dāng)執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

12.

13.

14.下列能正確進行字符串賦值的是()。A.B.C.D.

15.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

16.堆的形狀是一棵_______。

A.二叉排序樹B.滿二叉樹C.完全二叉樹D.平衡二叉樹

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

A.預(yù)處理命令行必須位于C源程序的起始位置

B.在C語言中,預(yù)處理命令行都以“#”開頭

C.每個C程序必須在開頭包含預(yù)處理命令行:#include

D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能

18.當(dāng)用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

19.對于n個元素,下列哪種操作時間復(fù)雜度不是O(nlogn)()

A.凸包計算B.LC搜索C.有序序列數(shù)字查找D.基于比較的排序

20.軟件設(shè)計中劃分模塊的一個準(zhǔn)則是()。A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合

三、程序設(shè)計題(10題)21.編寫函數(shù)proc(),它的功能是:根據(jù)公式求p的值,結(jié)果由函數(shù)值帶回。m與n為兩個正數(shù)且要求m>;n。p=m!/(n!(m-n)!),例如,m=20,n=10時,運行結(jié)果為184756.000000。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

22.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時.不得使用C語言提供的字符串函數(shù).

23.請編寫函數(shù)proc(),該函數(shù)的功能是:計算n門課程的平均分,計算結(jié)果作為函數(shù)值返回。例如,有6門課程的成績是90.5,72,80,61.5,55,60,則函數(shù)的值為69.83。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

24.程序定義了M×M的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。例如,a數(shù)組中的值為:

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

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

25.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標(biāo)。

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

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

試題程序:

26.有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信息,包括學(xué)號、性別、姓名和平均成績。

27.請編一個函數(shù)fun(ohlr*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。

例如,字符串中原有的字符串為asdf9,則調(diào)用該函數(shù)后,串中的內(nèi)容為9fdsa。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。

試題程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a(chǎn));

fclose(out);

}

28.請編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x的值為30,則有3個數(shù)符合要求,它們是15,5,3。

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

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

29.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

30.四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計substr所指子字符串在str所指字符串中出現(xiàn)的次數(shù)。

例如,若字符串為aaaslkaaas,子字符串為as,則應(yīng)輸出2。

請改正程序中的錯誤,使它能計算出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

32.下列給定程序中,函數(shù)fun()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:

例如,2的平方根為1.414214。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<math.h>

#include<stdio.h>

/*************found**************/

fun(doublea,doublex0)

{doublexl,y;

xl=(x0+a/x0)/2.0;

/*************found**************/

if(fabs(xl-x0)>0.00001)

y=fun(a,xl);

elsey=x1;

returny;

}

main()

{doublex;

printf("Enterx:");scanf("%1f",&x);

printf("Thesquarerootof%1fis%1f\n",

x,fun(x,l.O));

}

33.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,然后求兩條對角線上的各元素之和,返回此和數(shù)。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM5

/**********************************/

ihtfun(intn,intxx[][])

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:\n",M,M);

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

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

/**********************************/

printf("%4f",xx[i][j]);

printf("\n");

}

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

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

clrscr();

printf("\nThesumofallelementson2

diagnalsis%d",fun(M,aa));

}

34.已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODll.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。

例如,當(dāng)n=10時,程序的輸出結(jié)果應(yīng)為:23.197745。

請改正程序中的錯誤,使程序能輸出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

35.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計算如下公式的值。

y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)

例如:m中的值為5,則應(yīng)輸出0.838611。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

/**********found*************/

intj=1;

inti;

for(i=2;i<=m;i++)

{

j=-1*j;

/****************found*******+******/

y+=1/(i*i);

}

return(y);

}

main()

{

intn=5;

clrscr();

printf("\nTheresultis%lf\n",fun(n));

}

36.下列給定程序中,函數(shù)fun()的功能是:用選擇法對數(shù)組中的n個元素按從小到大的順序進行排序。

請改正程序中的錯誤,使它能得到正確結(jié)果。

[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdio.h>

#defineN20

voidfun(inta[],intn)

{

inti,j,t,p;

for(j=0;j<n-1;j++){

/***********found***********/

p=j

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

if(a[i]<a[p])

/***********found***********/

p=j;

t=a[P];

a[p]=a[j];

a[j]=t;

}

}

msin()

{

inta[N]=(9,6,8,3,-1),i,m=5;

printf("排序前的數(shù)據(jù):”);

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

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

printf("\n");

fun(a,m);

printf("排序后的數(shù)據(jù):");

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

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

printf("\n");

}

37.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m的值,計算如下公式的值。

例如,若m中的值為:5,則應(yīng)輸出:0.536389。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

38.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計算斐波拉契級數(shù)列中第n項的值。從第一項起,斐波`拉契級數(shù)序列為1,1,2,3,5,8,13,21,……例如,若給n輸入7,

該項的斐波拉契級數(shù)值為13。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

longfun(intg)

{

/*************found**************/

switch(g);

{case0:return0;

switch(g)

case1;case2:return1;

}

return(fun(g-1)+fun(g-2));

}

main()

{

longfib;intn;

printf("Inputn:");scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\D\n",fib);

}

39.給定程序中函數(shù)fun的功能是:將一個由八進制數(shù)字字符組成的字符串轉(zhuǎn)換為與其值相等的十進制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進制數(shù)字字符。

例如,若輸入:77777,則輸出將是:32767。

請改正程序中的錯誤,使它能得到正確結(jié)果。

[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

intfun(char*p)

{

intn;

/**********found**********/

n=*p-'o';

p++;

while(*p!=0){

/**********found**********/

n=n*8+*p-'o';

p++;

}

returnn;

}

main()

{

chars[6];inti;intn;

printf("Enterastring(Ocataldigits):");

gets(s);

if(strlen(s)>5)

{

printf("Error:Stringtoolonger!\n\n");

exit(0);

}

for(i=0;s[i];i++)

if(s[i]<'0'||s[i]>'7')

{

printf("Error:%cnotisocataldigits!\n\n",s[i]);

exit(0);

}

printf("Theoriginalstring:");

puts(s);

n=fun(s);

printf("\n%siSconveredtointegernumber:%d\n\n",s,n);

}

40.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其插在申的最后。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

/*************found**************/

voidfun(charstr,charch)

{while(*str&&*str!=ch)str++;

/*************found**************/

if(*str==ch)

{str[0]=ch;

/*************found**************/

str[1]='0';

}

}

main()

{chars[81],c;

clrscr();

printf("\nPleaseenterastrzng:");

gets(s);

printf("\nPleaseenterthecharacterto

search:");

c=getchar();

fun(s,c);

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

}

五、程序改錯題(2題)41.寫出下列程序的運行結(jié)果。

#include“stdio.h”

Main

{inta[]={1,2,3,-4,5};

intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);

printf(“%d%d%d”,*p,m,n);}

42.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如果這個數(shù)是負(fù)數(shù),則取它的絕對值,并顯示出來。例如,輸入:-123456,結(jié)果為:123456。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達(dá)式或語句。試題程序:

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

#include<string.h>

voidfun(char*s,intP,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s)

}

參考答案

1.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。

2.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

3.C

4.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當(dāng)i=1時,因為if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出1,同時i自加1;執(zhí)行第二次for循環(huán)時,i=3;同樣的if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出3,同時i自加1;執(zhí)行第三次for循環(huán)時,i=5,if語句條件滿足,所以執(zhí)行printf('%d\\n',i),輸出5,然后break語句跳出了for循環(huán)。

5.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。

6.6060解析:本題定義了一個3行2列的二維數(shù)組a,并定義了一個指向兩個元素的一維數(shù)組指針p,讓p指向二維數(shù)組a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。

7.解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。

8.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。

9.內(nèi)容內(nèi)容

10.IHAVEATEST.

11.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

12.B

13.A

14.C選項A、B的空間不夠;選項D中字符串存儲要有結(jié)束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。

15.D本題考查邏輯運算符的使用。當(dāng)“&&”的兩個運算對象都是邏輯1時,表達(dá)式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

16.C

17.B本題是對基本知識點的理解,預(yù)處理命令行的位置沒有規(guī)定,只是習(xí)慣寫在起始位置而已,當(dāng)需要時才用#include<stdio.h>頭文件,預(yù)處理的作用就是實現(xiàn)宏定義和條件編譯。

18.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認(rèn)將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應(yīng)該選擇C。

19.C

20.B一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。

21.

【解析】由題目中所給公式,首先求出整數(shù)m的階乘,然后求出m的階乘除以n的階乘,最后再求出整個表達(dá)式的值。將整個表達(dá)式的值返回到主函數(shù)當(dāng)中。

22.

程序設(shè)計題解析:

【考點分析】

本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件

表達(dá)式;字符串結(jié)束標(biāo)識‘\0’。

【解題思路】

函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他+號全部刪除。

【解答本題】

(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符‘、O’。

【解題寶典】

要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠?,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。

23.

【解析】要計算n門課程的平均分,首先可以求得n門課程的總分,然后除以n得到其平均分,最后將其平均分返回到主函數(shù)中。

24.

【解析】使數(shù)組左下半三角元素中的值加上n,首先要找出數(shù)組中下半三角元素。數(shù)組中下半三角元素的特點是,其列下標(biāo)小于等于行下標(biāo)。根據(jù)這個特點找出所有的下半三角元素再加上n放在原來的位置上。

25.

【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標(biāo)i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。

26.\n#include'stdio.h'

\n#defineN3

\nstructstudent

\n{longstu_num;charsex;

\ncharname[15];intscore[4];

\nfloataverage;};

\nmain

\n{intI,j,index;floatsum,max;

\nstructstudentstuarr[N];

\nfor(I=0;I{printf('pleaseinput%dstudentinformation:\\n',I+1);

\nscanf('%ld,%c,%s',&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);

\nfor(j=0;j<4;j++)

\nscanf('%d',&stuarr[I].score[j]);}

\nfor(I=0;I{sum=0.0;

\nfor(j=0;j<4;j++)

\nsum+=stuarr[I].score[j];

\nstuarr[I].a(chǎn)verage=sum/4.0;}

\nmax=stuarr[0].a(chǎn)verage;

\nindex=0;

\nfor(I=1;Iif(stuarr[I].a(chǎn)verage>max)

\n{max=stuarr[I].a(chǎn)verage;

\nindex=I;}

\nprintf('總平均成績最高的學(xué)生信息是學(xué)號=%ld,性別=%c,姓名=%s,平均成績=%4.1f\\n',stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].a(chǎn)verage);

\n}\n27.\n\tcharch;

\ninti,m,n;

\ni=0:

\nm=n=strlen(str)-1;//求字符串str長度

\nwhile(i<(n+1)/2)//循環(huán)逆置交換

\n{

\nch=str[i];

\nstr[i]=str[m];

\nstr[m]=ch:

\ni++;

\nm--;

\n}

\n【解析】在fun函數(shù)中,首先求行字符串的長度,然后通過循環(huán)進行字符交換。要注意的是,如果字符串長度是奇數(shù),則最中間的元素在逆置前后的位置是沒有改變的。\n

28.

【解析】按照題目中要求,求出能整除x且不是偶數(shù)的各整數(shù)。首先判斷小于等于整數(shù)x的所有奇數(shù)是否能被x整除,將能被x整除的奇數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個數(shù)返回到主函數(shù)中。

29.

【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)來完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=ˊ*ˊ)”“a[j++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。

30.

31.(1)for(i=0;str[i];i++)(2)if(substr[k+1]==‘\O’)(1)for(i=0;str[i];i++)(2)if(substr[k+1]==‘\O’)解析:本題中函數(shù)的功能是統(tǒng)計子字符串substr在字符串str中出現(xiàn)的次數(shù)。解題過程是在str中查找指定的子串,并且統(tǒng)計子串出現(xiàn)的次數(shù)。

32.(1)錯誤:fun(doubleadoublex0)正確:doublefun(doubleadoublex0)(2)錯誤:if(fabs(x1-x0)>0.00001)正確:if(fabs(x1-x0)>=0.00001)(1)錯誤:fun(doublea,doublex0)正確:doublefun(doublea,doublex0)\r\n(2)錯誤:if(fabs(x1-x0)>0.00001)正確:if(fabs(x1-x0)>=0.00001)解析:用C語言求平方根的方法一般有兩種經(jīng)典的算法,它們分別是迭代法和遞歸法,本題要求用遞歸法。該程序采用了if語句,錯誤在于if語句的判斷條件,程序的含義是當(dāng)?shù)Y(jié)果差小于誤差時進行循環(huán),故正確的應(yīng)該是if(fabs(x1-x0)>=0.00001)。

33.(1)錯誤:intfun(ihtnintxx[][])正確:intltm(ihtmintr.x[][M])(2)錯誤:printf("%4ff'xx[i]fj]);正確:printf("%4d"xx[i][j]);(1)錯誤:intfun(ihtn,intxx[][])正確:intltm(ihtmintr.x[][M])\r\n(2)錯誤:printf('%4f,f\',xx[i]fj]);正確:printf('%4d',xx[i][j]);解析:該題錯誤比較隱蔽,一般的C語言上機考試很少涉及printf順數(shù)中的錯誤,在這里,我們只要明白“d”和“f”的區(qū)別就OK了。格式字符d表示:以帶符號的十進制形式輸出整數(shù)(正整數(shù)不輸出符號);格式字符f表示;以小數(shù)形式輸出單、雙精度,隱含輸出6位小數(shù)。

34.(1)doublefun(intn)(2)returnsum;(1)doublefun(intn)(2)returnsum;解析:本題中函數(shù)的功能是計算并輸出該數(shù)列前n項的平方根之和sum。解題思路首先根據(jù)題干求得每一項的值,然后再計算數(shù)列前n項的平方根之和。

35.(1)錯誤:intj=1正確:doublej=1.0;(2)錯誤:y+=1/(i*i);正確:y+=j/(i*i);(1)錯誤:intj=1正確:doublej=1.0;\r\n(2)錯誤:y+=1/(i*i);正確:y+=j/(i*i);解析:錯誤1:為了做后面的除法運算,j要定義為實型數(shù),否則除得的結(jié)果將為整數(shù)。錯誤2:題中公式是加減相間的運算,通過來實現(xiàn)。

36.(1)錯誤:p=j正確:p=;(2)錯誤:p=j;正確:p=i;(1)錯誤:p=j\r\n正確:p=;\r\n(2)錯誤:p=j;\r\n正確:p=i;解析:題中提到按“從小到大”的順序排序,這類題目都可以用選擇排序法,即從后N個比較過程中,選擇一個最小的與第一個元素交換,以此類推,即用第二個元素與后N-1個進行比較,并進行交換。

錯誤1:此處錯誤比較明顯,p=j后面應(yīng)加分號。

錯誤2:根據(jù)選擇排序法的思路,此處應(yīng)將i賦給p。

37.(1)for(i=2;i<=m;i++)(2)y-=1.0/(i*i);(1)for(i=2;i<=m;i++)(2)y-=1.0/(i*i);解析:該程序功能是根據(jù)題目要求計算公式。從已給定源程序的main主函數(shù)開始入手,“

溫馨提示

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

評論

0/150

提交評論