2022年山東省濟南市全國計算機等級考試C語言程序設計測試卷一(含答案)_第1頁
2022年山東省濟南市全國計算機等級考試C語言程序設計測試卷一(含答案)_第2頁
2022年山東省濟南市全國計算機等級考試C語言程序設計測試卷一(含答案)_第3頁
2022年山東省濟南市全國計算機等級考試C語言程序設計測試卷一(含答案)_第4頁
2022年山東省濟南市全國計算機等級考試C語言程序設計測試卷一(含答案)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2022年山東省濟南市全國計算機等級考試C語言程序設計測試卷一(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.有下列程序:#include<stdio.h>#include"string.h"voidtim(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的運行結果是()。A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

2.

3.以下程序的主函數(shù)中調用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項中錯誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

4.下列敘述中正確的足

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結束

D.軟件維護是指修復程序中被破壞的指令

5.對一個算法的評價,不包括()方面的內容。

A.健壯性和可讀性B.并行性C.正確性D.時空復雜度

6.有如下程序:main(){intx=1,a=0,b=0;switch(x){case0:b++;casel:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

7.若要求從鍵盤讀入含有空格字符的字符串,應使用函數(shù)

A.getc()B.gets()C.getehar()D.scanf()

8.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運行后的輸出結果是()。A.9,18B.8,11C.7,11D.10,14

9.有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;Main(){inta=1,b=2;printf("%4.1f\n",S(a+b));程序運行后的輸出結果是()。A.7.5B.31.5C.程序有錯無輸出結果D.14.0

10.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序運行的結果是()。A.9B.61490C.61D.5

11.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運行后的輸出結果是()。A.1,2B.3,4C.5,6D.123,456

12.

二、2.填空題(12題)13.在宏定義#defineP13.14159中,用宏名PI代替一個______。

14.下列程序的輸出結果是______。

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

15.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結束標志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

16.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

17.以下程序輸出的結果是【】。

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

18.與二維表中的“行”的概念最接近的概念是()。

19.黑盒測試是從【】觀點的測試。

20.已有定義:intx;,執(zhí)行以下語句后的輔出結果是【】。

x=11/3;y=5;

printf("%%d,%%%d\n",x,y);

21.用下面語句調用庫函數(shù)malloc,使單精度型指針p指向具有40個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>

p=(float*)【】;

22.設y為int型變量,請寫出描述“y是偶數(shù)”的表達式______。

23.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

printf("%d\n"k);}

24.設y為血型變量,請寫出描述“y是偶數(shù)”的表達式______。

三、3.程序設計題(10題)25.函數(shù)fun的功能是:將s所指字符串中除了下標為偶數(shù)、同時ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應當刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內容應是:“246”。

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

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

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

例如,若x中的值為24,則有6個數(shù)符合要求,它們是2,4,6,8,12,24。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intPP[],int*n)

{

}

main()

{

intx,aa[1000],n,i;

clrscr();

printf("\nPleaseenteranintegernumber:

\n");

scanf("%d",&X);

fun(x,aa,&n);

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

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

printf("\n");

}

27.請編寫函數(shù)fun(),它的功能是:判斷字符串是否是回文?若是,函數(shù)返回1,主函數(shù)中輸出:YES,否則返回0,主函數(shù)輸出NO?;匚氖侵疙樧x和倒讀都一樣的字符串。

例如,字符串LEVEL是回文,而字符串12312就不是回文。

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

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

[試題源程序]

#include<stdio.h>

#defineN80

intfun(char*str)

{

}

main()

{

chars[N];

printf("Enterastring:")"gets(s);

printf("\n\n");puts(s);

if(fun(s))

printf("YES\n");

else

printf("NO\n");

NONO();

}

NONO()

{

/*請在此函數(shù)內打開文件,輸入測試數(shù)據(jù),調用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/

FILE*rf,*wf;

inti;chars[N];

rf=fopen("K:\\k06\\24010001\\in.dat","r");

wf=fopen("K:\\k06\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,"%s",s);

if(fun(S))

fprintf(wf,"%sYES\n",s);

else

fprintf(wf,"%sNO\n",s);

}

fclose(rf);

fclose(wf);

}

28.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。

請編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

例如:若n的值為3,a數(shù)組中的值為

a=254

169

537

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

554

499

8610

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

fun(inta[][N],intn)

{

}

main()

{

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

clrscr();

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

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

/*產(chǎn)生—個隨機5*5矩陣*/

{

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

{

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

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

}

printf("\n");

}

do

n=rand()%10;

/*產(chǎn)生一個小于5的隨機數(shù)n*/

while(n>=5);

printf("n=%4d\n",n);

fun(a,n);

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

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

{

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

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

printf("\n");

}

}

29.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。

例如,當a=45,b=12。調用該函數(shù)后,c=4251。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

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

30.編寫函數(shù)fun,函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,函數(shù)返回所求出的素數(shù)的個數(shù)。

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

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

31.請編寫函數(shù)fun(),其功能是:計算并輸出給定10個數(shù)的方差。

其中

例如,給定的10個數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。

注意;部分源程序給出如下.

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

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(doublex[10])

{

}

main()

{

doubles,x[i0]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

inti;

printf("\nTheoriginaldatais:\n");

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

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

printf("s=%f\n\n",s);

}

32.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學生人數(shù)通過形參n傳回,低于平均分的學生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubleS;

}STREC;

doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)

{

}

main()

{

STRECs[N]={{“GA05”,65},{“GA03”,86},

{“GA02”,76},{“GA04”,95},{“GA01”,93},

{“GA07”,78},{“GA08”,68},{“GA06”,88},

{“GA09”,60},{“GAll”,54},{“GAl2”,56},

{“GAl0”,98}};

STRECh[N],l[N],t;

FILE*out;

inti,j,m,n;

doubleave;

ave=fun(S,h,l,&n,&m);

printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);

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

printf("%s%4.lf\n",h[i].num,

h[i].s);

printf("\n");

printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);

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

printf("%s%4.1f\n",l[i].num,l[i].s);

printf("\n");

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

fprintf(out,"%d\n%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=h[i];h[i]=h[i];h[j]=t;}

/*分數(shù)從現(xiàn)到低排列*/

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

fprintf(out,“%4.1f\n",h[i].s);

fprintf(out,"%d\n%7.3f\n",m,ave);

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

for(j=i+1;i<m;j++)

if(l[i].s<l[j].s)

{t=l[i];l[i]=l[j];l[j]=t;}

/*分數(shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",l[i].s);

fclose(out);

}

33.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值;請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如a數(shù)組中的值為

a=197

238

456

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

097

008

000

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

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

試題程序:

#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)生—個隨機的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;j<N;j++)

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

printf("\n");

}

}

34.請編寫函數(shù)fun(),其功能是:將s所指字符串中除了下標為偶數(shù)、同時ASCII值也為偶數(shù)的字符外,其余的全部刪除,串中剩余字符所形成的一個新中放在t所指的數(shù)組中。

例如,若s所指字符串中的內容為ABCDEFG123456,其中字符A的ASCII碼值為奇數(shù),因此應當刪除;其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內容應是246。

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

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

試題程序:

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

}

四、單選題(0題)35.

五、單選題(0題)36.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是________。

A.23B.26C.33D.36

六、單選題(0題)37.下列結構體的定義語句中錯誤的是()。

A.structord{intx;inty;intz;}structorda;

B.structord{intx;inty;intz;};structorda;

C.structord{intx;inty;intz;}a;

D.struct{intx;inty;intz;}a;

參考答案

1.A解析:從main函數(shù)入手,定義了指向字符串的指針數(shù)組,并賦予了初始值,調用fun()函數(shù),函數(shù)的功能是:比較數(shù)組中各個元素的長度,按元素長度從小到大排列數(shù)組元素,所以執(zhí)行fun(ss,5)函數(shù)后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},所以調用printf函數(shù)輸出ss[0],ss[4]的值分別為xy,aaaacc。

2.B

3.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。

4.A解析:本題考核軟件維護的概念.維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段,在軟件交付使用后,還需要進行維護。軟件維護通常有以下四類:為糾正使用中出現(xiàn)的錯誤而進行的改正性維護;為適應環(huán)境變化而進行的適應性維護;為改進原有軟件而進行的完善性維護;為將來的可維護和可靠而進行的預防性維護。軟件維護不僅包括程序代碼的維護,還包括文檔的維護。綜上所述,本題的正確答案是A,其余選項的說法錯誤。

5.B

6.A當X為1時,執(zhí)行case1,a自加等于1,因為case1后沒有break,接著執(zhí)行case2,此時a的值為2,b自加為1,故選擇A選項。

7.B解析:scanf()語句用“空格”區(qū)別不同的字符串;getc()與getchar()語句不能用于字符串的讀入。

8.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

9.C宏定義不是C語句,末尾不需要有分號。所以語句Printf("%4.1f\\n",,S(a+b));展開后為printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序會出現(xiàn)語法錯誤。

10.C在fun函數(shù)中,while循環(huán)的功能是逐個取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個數(shù)保存到變量n中,并返回變量n的值。

11.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據(jù)程序循環(huán)寫入和寫出.可知答案為C。

12.C

13.本題考查字符替換格式:#define標識符字符串。

14.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。

15.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。

16.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

對應的C語言的表達式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。

17.00解析:本題的關鍵在于對變量c的賦值運算:

d=(a>b>c)

d=(5>4>3)

先算5>4,為真,得1,即:d=(1>3),此時1>3,為假,得0。

18.元組元組解析:在關系模型中,數(shù)據(jù)結構用單一的二維表結構來表示實體及實體間的聯(lián)系。一個關系對應一個二維表。二維表中的列稱為屬性,屬性值的取值范圍稱為值域。二維表中的一行稱為一個元組。

19.用戶用戶解析:黑盒測試又稱為功能測試,黑盒測試是把程序看作一個黑盒子,完全不考慮程序內部的結構和處理過程。測試者只考慮該程序輸入和輸出的關系,或只考慮程序的功能。黑盒測試是一種從用戶觀點出發(fā)的測試。

20.%d%3

21.malloc(40)malloc(40)解析:庫函數(shù)malloc()只有一個參數(shù),就是所需分配內存的字節(jié)數(shù),然后返回一個void*指針。本題要求分配40個字節(jié),故直接調用malloc(40)就可以了。

22.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達式是(y%2)==0。

23.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

24.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達式是(y%2)==0。

25.

解析:該程序功能是將字符串中除了下標為偶數(shù)、ASCII值也為偶數(shù)的字符外,其余的全都刪除。解題過程利用if條件判斷表達式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。

26.voidfun(intxintpp[]int*n){intij=0for(i=2;i<=x;i=i+2)/*i的初始值為2步長為2確保i為偶數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)細pp中*/pp[j++]=i*n=j/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(intx,intpp[],int*n)\r\n{\r\ninti,j=0\r\nfor(i=2;i<=x;i=i+2)/*i的初始值為2,步長為2,確保i為偶數(shù)*/\r\nif(x%i==0)/*將能整除x的數(shù)存入數(shù)細pp中*/\r\npp[j++]=i\r\n*n=j/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:本題題干信息是;能整除x且不是奇數(shù)的所有整數(shù)。循環(huán)語句中i從2開始且每次增2,所以i始終是偶數(shù)。

27.intfun(char*str){intin=0fg=1;char*p=str;while(*p){n++;P++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else{fg=0;break;}returnfg;}intfun(char*str)\r\n{\r\ninti,n=0,fg=1;\r\nchar*p=str;\r\nwhile(*p)\r\n{\r\nn++;\r\nP++;\r\n}\r\nfor(i=0;i<n/2;i++)\r\nif(str[i]==str[n-1-i]);\r\nelse\r\n{\r\nfg=0;\r\nbreak;\r\n}\r\nreturnfg;\r\n}解析:本題的設計思路是:(1)定義一個int型變量flag用做返回值,定義一個字符指針代替原串遍歷,求字符串的長度;(2)利用循環(huán)及if條件語句判斷字符串首尾對應字符是否相等;(3)如果為回文數(shù),修改flag的值;(4)返回flag

28.fun(inta[][N]intn){intij;for(i=0;i<N;i++)for(j=0;j<i;j++)a[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/}fun(inta[][N],intn)\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<i;j++)\r\na[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/\r\n}解析:首先從數(shù)組中找出要被加上n的那部分元素,找的過程其實就是找出將被挑出的那部分元素在原數(shù)組中的分布規(guī)律的過程。通過觀察得出,要被處理的那部分元素的下標值的范圍是每行中從第一個元素開始,直到列數(shù)等于該行行數(shù)時為止。找到這個規(guī)律后,依次從數(shù)組中取得合乎要求的元素,然后再加上n。

29.*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);解析:該程序功能是將正整數(shù)a、b合并形成一個新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。

30.

解析:該程序功能是求一定范圍內的素數(shù)。素數(shù)是只能被1和自身除盡的數(shù)。判斷i是不是素數(shù)最簡單的方法就是用2~(i/2)去除i,只要能除盡就不是素數(shù)。

31.doublefun(doublex[10]){doublexl=0.0s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10個數(shù)的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10個數(shù)的方差*/}doublefun(doublex[10])\r\n{\r\ndoublexl=0.0,s=0.0;\r\ninti;\r\nfor(i=0;i<10;i++)\r\nxl=xl+x[i];\r\nxl-xl/10;\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10個數(shù)的平均值*/\r\nfor(i=0;i<l0;i++)\r\ns=s+(x[i]-xl)*(x[i]-x1);\r\nreturnsqrt(s/l0);\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10個數(shù)的方差*/\r\n}解析:又是一道算式表達題,程序中用第1個循環(huán)來完成求10個數(shù)的總和,接著再用x1=x1/10來求出平均值。

32.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學生存從所指存儲單元中并統(tǒng)計人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學生存入c所指存儲單元中并統(tǒng)計人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m

溫馨提示

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

評論

0/150

提交評論