2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.有以下程序:#include<stdio.h>main(){char*s="[2]34";intk=0,a=0;whil(s[k+1]!=\0){k++;if(k%2=o){a=a+(s[k]-0+1);continue;}a=a+(s[k]-0);printf("k=%da=%d\n",k,a);}程序運行后的輸出結(jié)果是()。A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

2.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)

3.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

4.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

5.設(shè)有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

6.

7.若有定義“intx=10;”,則表達式“x-=x+x”的值為()。

A.0B.-20C.-10D.10

8.設(shè)一組初始記錄關(guān)鍵字序列為(Q,H,C,Y,P,A,M,S,R,D,F,X),則按字母升序的第一趟冒泡排序結(jié)束后的結(jié)果是()

A.F,H,C,D,P,A,M,Q,R,S,Y,X

B.P,A,C,S,Q,D,F,X,R,H,M,Y

C.A,D,C,R,F,Q,M,S,Y,P,H,X

D.H,C,Q,P,A,M,S,R,D,F,X,Y

9.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

10.在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時,花費時間反而最多的是()

A.希爾排序B.堆排序C.冒泡排序D.快速排序

11.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序運行后的輸出結(jié)果是()。

A.y=0B.y=-1C.y=1D.while構(gòu)成無限循環(huán)

12.以下符號中不能作為標(biāo)識符的是()。

A._256B.r32C.intD.e231

二、2.填空題(12題)13.閱讀下列程序,則程序的輸出結(jié)果為______。

#include"stdio.h"

struetty

{intdata;

charc;};

main()

{streettya={30,'x'};

fun(a);

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

fun(structtyb)

{b.data=20;

b.c='y';}

14.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>

for(i=0;i<=______;printf("%d\n",i+=2));

15.數(shù)據(jù)結(jié)構(gòu)分為線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu),帶鏈的隊列屬于()。

16.函數(shù)compare的功能是比較兩個字符串是否相等,若相等則函數(shù)返回1,否則返回o,請?zhí)羁铡?/p>

compare(chars[],chart[])

{

inti=0

while(s[i]==t[i]&&【】)i++;

return(【】?1:0);

}

17.若先后輸入county、side,以下程序的運行結(jié)果為【】。

main()

{chars1[40],s2[20];inti=0,j=0;

scanf("%s",s1);

scanf("%s",s2);

while(s1[i]!='\0')i++;

while(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]='\0';

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

}

18.如下圖所示的二叉樹后序遍歷序列是【】。

19.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

20.執(zhí)行以下程序段后,s的值為【】。

staticcharch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0';

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

22.源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【】。

23.設(shè)有如下宏定義

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a,b內(nèi)容交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】a,b);

24.執(zhí)行以下程序后,輸出‘#’號的個數(shù)是______。

#include<stdio.h>

main()

{

inti,j;

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

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

putchar('#');

}

三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為:

33333333

44444444

55555555

則一維數(shù)組中的內(nèi)容應(yīng)該是33333333444444AA,55555555

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

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

試題程序:

#include<stdio.h>

voidfun(int(*s)[10],int*b,int*n,

intmm,intnn)

{

}

main()

{

intw[10][10]={{33,33,33,33},{44,44,

44,44},{55,55,55,55}},i,j;

inta[100]={0},n=0;

printf("Thematrix:\n");

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

{for(j+0;j<4;j++)

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

printf("\n");

}

fun(w,a,&n,3,4);

printf("TheAarray:In");

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

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

printf("\n\n");

}

26.請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:

例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。

注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。

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

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

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

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

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

28.請編寫函數(shù)fun(),該函數(shù)的功能是:計算并輸出

S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)

例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為

s=534.188884。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\n\nInputn:");

scanf("%d",&n);

s=fun(n)

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

}

29.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。

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

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

30.請編寫函數(shù)fun(),它的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)從0到p(含p,p<n-1)的數(shù)組元素平移到數(shù)組的最后。例如:一維數(shù)組中的原始內(nèi)容為:1,2,3,4,5,6,7,8,9,10;p的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為:5,6,7,8,9,10,1,2,3,4。部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

#include<stdiO.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

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

inti,p,n=15;

printf("Theodginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

printf("\nEnterp:");

scanf("%d",&p);

fun(a,p,n);

printf("\nThedataaftermoving:\n");

for(i=0;i<n;i++)printf("%3d”,a[i]);

}

31.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:使字符串中前部的*號不得多余n個;若多余n個,則刪除多余的*號;若少于或等于n個,則什么也不做,字符串中間和尾部的*號不刪除。

例如,字符串中的內(nèi)容為****A*BC*DEF*G*******,若n的值為2,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是**A*BC*DEF*G*******;若n的值為4,則字符串中的內(nèi)容仍為****A*BC*DEF*G******。n的值在主函數(shù)中輸入。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(charAa,intn)

{

}

main()

{chars[81];intn;

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

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

fun(s,n);

printf("Thestringafterdeleted:\n");

puts(s);

}

32.請編寫函數(shù)fun(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:若二維數(shù)組中的值為

13579

29994

69998

13570

則函數(shù)值為61。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM4

#defineN5

intfun(inta[M][N])

{

}

main()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

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

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

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

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

printf("\n");

}

y=fun(aa);

printf("\nThesun:%d\n",y);

printf("\n");

}

33.程序定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返給主函數(shù)中的s。

例如:a數(shù)組中的值為:

則返回主程序后s的值應(yīng)為:3.375。

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

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

34.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。

S=1+x+x2/2!3/3!+…/xn/n!

例如,當(dāng)n=10,x=0.3時,函數(shù)值為1349859。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0,3,10));

}

四、單選題(0題)35.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運行后的輸出結(jié)果是()

A.15B.120C.34560D.-30976

五、單選題(0題)36.如果有n個節(jié)點用二叉樹來存儲,那么二叉樹的最小深度為()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

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

A.通過指針變量存取某個變量值的方式稱為“直接存取”方式

B.在程序的開頭包含頭文件stdio.h后,可以給指針變量賦NULL值

C.將一個指針變量中的值賦給另一個指針變量,則這兩個指針變量指向同一地址

D.C語言中函數(shù)返回值的類型可以是簡單的數(shù)據(jù)類型,也可以是指針類型

參考答案

1.C輸出結(jié)果:k=1a=2\r\nk=2a=4\r\nk=3a=7\r\nk=4a=12

2.C

3.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對應(yīng)存儲文件中的記錄,列稱為屬性,對應(yīng)存儲文件中的字段,所以本題答案為D。

4.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

5.B解析:本題考查while語句的使用。本題考查邏輯非運算符和不等于運算符的區(qū)別,邏輯非運算符'!'的優(yōu)先級大于不等于運算符'!='的優(yōu)先級。

6.A

7.C算術(shù)運算符“+”的優(yōu)先級高于,且“-=”的結(jié)合方向為自右向左。所以表達式“x-=x+x”可以表示成“x=x-(x+x)=10-(10+10)=-10”。故本題答案為C選項。

8.D

9.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,static變量在函數(shù)調(diào)用結(jié)束后所做的所有變化均保持(即上次調(diào)用結(jié)束時的值)。

在主函數(shù)中,第一次循環(huán),i=0,調(diào)用k-f(a++)=f(2),調(diào)用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環(huán),i=1,調(diào)用k=f(a++)=f(3),調(diào)用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

10.D

11.B執(zhí)行“y--”直到值為0。退出循環(huán)。由于“y--”是后綴自減運算,先使用再自減,因此退出循環(huán)時,y的值為-1。故本題答案為B選項。

12.C

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

14.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。

15.線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)解析:隊列的鏈?zhǔn)酱鎯ΨQ為鏈隊列,它屬于線性數(shù)據(jù)結(jié)構(gòu)。

16.s[i]&&t[i]或s[i]!='\0'&&t[i]!='\0'!(s[i]-t[i])s[i]&&t[i]或s[i]!='\\0'&&t[i]!='\\0'\r\n!(s[i]-t[i])解析:while后括號中的判斷條件為兩個字符串相同位置上的字符相等,且兩個字符串都沒有結(jié)束,則循環(huán)。故第一空應(yīng)該填s[i]&&t[i]或其他等價表達式。如果兩個字符串完全相等,則while循環(huán)退出時s[i]和t[i]的值同時為0,否則s[i]和t[i]不相等。故表達式s[i]-t[i]在字符串相等時為0,不相等時為非0,所以第二空應(yīng)該填!(s[i]-t[i])就滿足題意了。

17.countryside

18.GDBHIEFCAGDBHIEFCA解析:后序遍歷二叉樹的順序為:后序遍歷左子樹→后序遍歷右子樹→訪問根結(jié)點。按照定義,后序遍歷序列是GDBHIEFCA。

19.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。

20.600600解析:程序中for循環(huán)的條件是當(dāng)前字符大于或等于字符\'0\'且小于或等于字符\'9\'的ASCII碼值,則s=10*s+ch[a]-\'0\'。計算結(jié)果是將字符串'600'轉(zhuǎn)換為整型數(shù)600。

21.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。

22.功能性注釋功能性注釋解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,它給出程序的整體說明;功能性注釋的位置一般嵌在源程序體之中戶主要描述其后的語句或程序做什么。

23.cc解析:該題考查以下兩個知識點:

(1)用一個指定的標(biāo)識符(即名字)來代表一個字符串,它的一般形式為#define標(biāo)識符字符串

(2)在MYSWAP宏定義中,利用中間變量z來交換x和y的值,所以要實現(xiàn)a和b的交換,只需通過中間變量即可,所以,此處應(yīng)填c。

24.66解析:本題中,i,j分別為外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量,外層循環(huán)共執(zhí)行了四次.當(dāng)i=1時,由于內(nèi)層循環(huán)判斷條件(2<=1)為假不執(zhí)行內(nèi)層循環(huán).當(dāng)i=2時,執(zhí)行內(nèi)層循環(huán),輸出一個#當(dāng)i=3時,內(nèi)層循環(huán)循環(huán)兩次,輸出兩個#,當(dāng)i=4時,內(nèi)層循環(huán)循環(huán)三次,輸出三#。當(dāng)i=5時,循環(huán)判斷條件不成立,退出外層循環(huán)。所以一共輸出6個#。

25.voidfun(int(*s)[10]int*bint*nintmmintnn){intijk=0;for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/for(j=0;j<nn;j++)b[k++]=s[i][j];/*通過指針返回元素個數(shù)*/*n=k}voidfun(int(*s)[10],int*b,int*n,intmm,intnn)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/\r\nfor(j=0;j<nn;j++)\r\nb[k++]=s[i][j];/*通過指針返回元素個數(shù)*/\r\n*n=k\r\n}解析:我們可以用兩個循環(huán)來處理問題,由于是按行的順序取出,所以第1個循環(huán)用于控制行下標(biāo),第2個循環(huán)用于控制列下標(biāo);若改成按列的順序取出,則循環(huán)應(yīng)改成:

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

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

b[k++]=s[j][i];

要注意s[j][i]的下標(biāo),不能用s[i][j]。

若按行取出則列標(biāo)變化最快,若按列取出則行標(biāo)變化最快。再根據(jù)循環(huán)嵌套時,越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。上題程序中只有當(dāng)j從頭到尾變化完時,i才變化一次(即加1);由于二數(shù)組的第1個下標(biāo)為行下標(biāo),第2個下標(biāo)為列下標(biāo),所以第1個程序列變化最快、第2個程序行變化最快。

26.

解析:該程序功能是計算并輸出多項式的值。該題的解題思路是。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達式,然后再對多項式進行累加求和。

27.

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

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

28.doublefun(intn){inti;doubles=0.0s1=0.0;for(i=1;i<=n;i++){s1=s1+pow(i0.5);/*求每—項*/s=s+s1;/*按公式求出s*/}returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0,s1=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+pow(i,0.5);/*求每—項*/\r\ns=s+s1;/*按公式求出s*/\r\n}\r\nreturns;\r\n}解析:我們先用數(shù)學(xué)的思路讀懂該程序,并用1個字符表示“()”內(nèi)的值。在本程序中用s1來表示題中每個小括號內(nèi)的值,第1項相當(dāng)于有1個10.5次方(它還是1),第2項相當(dāng)于第1項的值加上200.5次方,第3項相當(dāng)于第2項的值加上30.5次方,…,依次類推。函數(shù)pow(x,y)的功能是求出x的y次方,該函數(shù)已在庫函數(shù)<math.h>中定義(即可直接使用)。要程序中用s來表示總的結(jié)果,每1次循環(huán)加1次s1即加1項。

29.

解析:該程序功能是求最低分數(shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進行比較,求得最小值。

30.voidfun(int*wintpintn){intiJ;inta[N];for(i=0;i<=p;i++)a[i]=w[i]for(i=p+1j=0;i<n;i++j++)w[j]=w[i];for(i=0;i<=p;i++)w[n-p-1+i]=a[i];}voidfun(int*w,intp,intn)\r\n{inti,J;\r\ninta[N];\r\nfor(i=0;i<=p;i++)a[i]=w[i]\r\nfor(i=p+1,j=0;i<n;i++,j++)w[j]=w[i];\r\nfor(i=0;i<=p;i++)w[n-p-1+i]=a[i];\r\n}解析:將數(shù)組后面的元素向前平移,肯定會將前面的元素覆蓋。因此,可以定義一個數(shù)組用來暫時存放前面的元素??梢韵葘[0]~w[p]依次賦給a[0]~a[p];然后將w[p]~w[n—1)

移到數(shù)組的前面:再將a[0]~a[p)依次賦給w[n-p-1+i]~w[n—1]。

31.voidfun(char*aintn){inti=0k=0;char*p*t;p=t=a;/*開始時p與t同時指向數(shù)組的首地址*/while(*t==‘*’)/*用k來統(tǒng)計前部星號的個數(shù)*/{k++;t++;}if(k>n)/*如果k大于n則佼p的前部保留n個星號其后的字符依次存入數(shù)組a中*/{while(*P){a[i]=*(p+k-n);i++p++;}a[i]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)志位*/}}voidfun(char*a,intn)\r\n{\r\ninti=0,k=0;\r\nchar*p,*t;\r\np=t=a;/*開始時,p與t同時指向數(shù)組的首地址*/\r\nwhile(*t==‘*’)/*用k來統(tǒng)計前部星號的個數(shù)*/\r\n{k++;t++;}\r\nif(k>n)/*如果k大于n,則佼p的前部保留n個星號,其后的字符依次存入數(shù)組a中*/\r\n{while(*P)\r\n{a[i]=*(p+k-n);\r\ni++\r\np++;\r\n}\r\na[i]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)志位*/\r\n}\r\n}解析:while()循環(huán)的作用是計算出前部星號的個數(shù);if()的作用是判斷星號個數(shù)是否多于n個,若是則只保留n個星號,即從字符串前部的倒數(shù)第n個星號開始,到最后一個字符都存入數(shù)組a中,最后記得在字符串最后加上結(jié)束標(biāo)志位。

32.intfun(inta[M][N]){intijsum=0;for(i=0;i<M;i++)for(j=0;i<N;j++)if(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個為0或M-1或N-1則它一定是周邊元素*/sum=sum+a[i][j];/*將周邊元素相加*/returnsum;}intfun(inta[M][N])\r\n{\r\ninti,j,sum=0;\r\nfor(i=0;i<M;i++)\r\nfor(j=0;i<N;j++)\r\nif(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個為0或M-1或N-1,則它一定是周邊元素*/\r\nsum=sum+a[i][j];/*將周邊元素相加*/\r\nreturnsum;\r\n}解析:本題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個是0或M-1或N-1,且只要下標(biāo)中有一個為0或M-1或N-1,則它一定是周邊元素。

33.

解析:該程序功能是求出數(shù)組周邊元素的平均值。其中周邊元素是指第一行的元素的行下標(biāo)為0,或者第n行的元素行下標(biāo)為n-1,或者第一列元素的元素列下標(biāo)為0,或者第n列的元素的列下標(biāo)為n-1。

34.doublefun(doublexintn){inti;doubles=1.0.s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項中的階乘*/s=s+pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti;\r\ndoubles=1.0.s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1*i;/*各項中的階乘*/\r\ns=s+pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項的分母(即各項中的階乘),要注意本程序中s和s1的初值都為1。

35.B

36.A

37.A通過指針變量存取某個變量值的方式稱為“間接存取”方式,選項A錯誤;頭文件stdio.h中定義了NULL,在程序的開頭包含stdio.h后,可以給指針變量賦NULL值,表示一個空指針,選項B正確;將一個指針變量中的值賦給另一個指針變量,這兩個指針變量指向同一地址,選項C正確;C語言中函數(shù)返回值的類型可以是簡單的數(shù)據(jù)類型,也可以是指針類型,選項D正確。故本題答案為A選項。2022-2023學(xué)年四川省雅安市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.有以下程序:#include<stdio.h>main(){char*s="[2]34";intk=0,a=0;whil(s[k+1]!=\0){k++;if(k%2=o){a=a+(s[k]-0+1);continue;}a=a+(s[k]-0);printf("k=%da=%d\n",k,a);}程序運行后的輸出結(jié)果是()。A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

2.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)

3.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個學(xué)生信息的數(shù)據(jù)單位是()。

A.文件B.數(shù)據(jù)庫C.字段D.記錄

4.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

5.設(shè)有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

6.

7.若有定義“intx=10;”,則表達式“x-=x+x”的值為()。

A.0B.-20C.-10D.10

8.設(shè)一組初始記錄關(guān)鍵字序列為(Q,H,C,Y,P,A,M,S,R,D,F,X),則按字母升序的第一趟冒泡排序結(jié)束后的結(jié)果是()

A.F,H,C,D,P,A,M,Q,R,S,Y,X

B.P,A,C,S,Q,D,F,X,R,H,M,Y

C.A,D,C,R,F,Q,M,S,Y,P,H,X

D.H,C,Q,P,A,M,S,R,D,F,X,Y

9.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

10.在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時,花費時間反而最多的是()

A.希爾排序B.堆排序C.冒泡排序D.快速排序

11.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序運行后的輸出結(jié)果是()。

A.y=0B.y=-1C.y=1D.while構(gòu)成無限循環(huán)

12.以下符號中不能作為標(biāo)識符的是()。

A._256B.r32C.intD.e231

二、2.填空題(12題)13.閱讀下列程序,則程序的輸出結(jié)果為______。

#include"stdio.h"

struetty

{intdata;

charc;};

main()

{streettya={30,'x'};

fun(a);

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

fun(structtyb)

{b.data=20;

b.c='y';}

14.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>

for(i=0;i<=______;printf("%d\n",i+=2));

15.數(shù)據(jù)結(jié)構(gòu)分為線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu),帶鏈的隊列屬于()。

16.函數(shù)compare的功能是比較兩個字符串是否相等,若相等則函數(shù)返回1,否則返回o,請?zhí)羁铡?/p>

compare(chars[],chart[])

{

inti=0

while(s[i]==t[i]&&【】)i++;

return(【】?1:0);

}

17.若先后輸入county、side,以下程序的運行結(jié)果為【】。

main()

{chars1[40],s2[20];inti=0,j=0;

scanf("%s",s1);

scanf("%s",s2);

while(s1[i]!='\0')i++;

while(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]='\0';

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

}

18.如下圖所示的二叉樹后序遍歷序列是【】。

19.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

20.執(zhí)行以下程序段后,s的值為【】。

staticcharch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0';

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

22.源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【】。

23.設(shè)有如下宏定義

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通過宏調(diào)用實現(xiàn)變量a,b內(nèi)容交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】a,b);

24.執(zhí)行以下程序后,輸出‘#’號的個數(shù)是______。

#include<stdio.h>

main()

{

inti,j;

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

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

putchar('#');

}

三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為:

33333333

44444444

55555555

則一維數(shù)組中的內(nèi)容應(yīng)該是33333333444444AA,55555555

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

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

試題程序:

#include<stdio.h>

voidfun(int(*s)[10],int*b,int*n,

intmm,intnn)

{

}

main()

{

intw[10][10]={{33,33,33,33},{44,44,

44,44},{55,55,55,55}},i,j;

inta[100]={0},n=0;

printf("Thematrix:\n");

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

{for(j+0;j<4;j++)

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

printf("\n");

}

fun(w,a,&n,3,4);

printf("TheAarray:In");

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

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

printf("\n\n");

}

26.請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:

例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。

注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。

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

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

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

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

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

28.請編寫函數(shù)fun(),該函數(shù)的功能是:計算并輸出

S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)

例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為

s=534.188884。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\n\nInputn:");

scanf("%d",&n);

s=fun(n)

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

}

29.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。

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

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

30.請編寫函數(shù)fun(),它的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)從0到p(含p,p<n-1)的數(shù)組元素平移到數(shù)組的最后。例如:一維數(shù)組中的原始內(nèi)容為:1,2,3,4,5,6,7,8,9,10;p的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為:5,6,7,8,9,10,1,2,3,4。部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

#include<stdiO.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

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

inti,p,n=15;

printf("Theodginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

printf("\nEnterp:");

scanf("%d",&p);

fun(a,p,n);

printf("\nThedataaftermoving:\n");

for(i=0;i<n;i++)printf("%3d”,a[i]);

}

31.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:使字符串中前部的*號不得多余n個;若多余n個,則刪除多余的*號;若少于或等于n個,則什么也不做,字符串中間和尾部的*號不刪除。

例如,字符串中的內(nèi)容為****A*BC*DEF*G*******,若n的值為2,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是**A*BC*DEF*G*******;若n的值為4,則字符串中的內(nèi)容仍為****A*BC*DEF*G******。n的值在主函數(shù)中輸入。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(charAa,intn)

{

}

main()

{chars[81];intn;

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

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

fun(s,n);

printf("Thestringafterdeleted:\n");

puts(s);

}

32.請編寫函數(shù)fun(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:若二維數(shù)組中的值為

13579

29994

69998

13570

則函數(shù)值為61。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM4

#defineN5

intfun(inta[M][N])

{

}

main()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

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

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

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

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

printf("\n");

}

y=fun(aa);

printf("\nThesun:%d\n",y);

printf("\n");

}

33.程序定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返給主函數(shù)中的s。

例如:a數(shù)組中的值為:

則返回主程序后s的值應(yīng)為:3.375。

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

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

34.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。

S=1+x+x2/2!3/3!+…/xn/n!

例如,當(dāng)n=10,x=0.3時,函數(shù)值為1349859。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0,3,10));

}

四、單選題(0題)35.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運行后的輸出結(jié)果是()

A.15B.120C.34560D.-30976

五、單選題(0題)36.如果有n個節(jié)點用二叉樹來存儲,那么二叉樹的最小深度為()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

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

A.通過指針變量存取某個變量值的方式稱為“直接存取”方式

B.在程序的開頭包含頭文件stdio.h后,可以給指針變量賦NULL值

C.將一個指針變量中的值賦給另一個指針變量,則這兩個指針變量指向同一地址

D.C語言中函數(shù)返回值的類型可以是簡單的數(shù)據(jù)類型,也可以是指針類型

參考答案

1.C輸出結(jié)果:k=1a=2\r\nk=2a=4\r\nk=3a=7\r\nk=4a=12

2.C

3.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對應(yīng)存儲文件中的記錄,列稱為屬性,對應(yīng)存儲文件中的字段,所以本題答案為D。

4.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

5.B解析:本題考查while語句的使用。本題考查邏輯非運算符和不等于運算符的區(qū)別,邏輯非運算符'!'的優(yōu)先級大于不等于運算符'!='的優(yōu)先級。

6.A

7.C算術(shù)運算符“+”的優(yōu)先級高于,且“-=”的結(jié)合方向為自右向左。所以表達式“x-=x+x”可以表示成“x=x-(x+x)=10-(10+10)=-10”。故本題答案為C選項。

8.D

9.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,static變量在函數(shù)調(diào)用結(jié)束后所做的所有變化均保持(即上次調(diào)用結(jié)束時的值)。

在主函數(shù)中,第一次循環(huán),i=0,調(diào)用k-f(a++)=f(2),調(diào)用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環(huán),i=1,調(diào)用k=f(a++)=f(3),調(diào)用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

10.D

11.B執(zhí)行“y--”直到值為0。退出循環(huán)。由于“y--”是后綴自減運算,先使用再自減,因此退出循環(huán)時,y的值為-1。故本題答案為B選項。

12.C

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

14.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。

15.線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)解析:隊列的鏈?zhǔn)酱鎯ΨQ為鏈隊列,它屬于線性數(shù)據(jù)結(jié)構(gòu)。

16.s[i]&&t[i]或s[i]!='\0'&&t[i]!='\0'!(s[i]-t[i])s[i]&&t[i]或s[i]!='\\0'&&t[i]!='\\0'\r\n!(s[i]-t[i])解析:while后括號中的判斷條件為兩個字符串相同位置上的字符相等,且兩個字符串都沒有結(jié)束,則循環(huán)。故第一空應(yīng)該填s[i]&&t[i]或其他等價表達式。如果兩個字符串完全相等,則while循環(huán)退出時s[i]和t[i]的值同時為0,否則s[i]和t[i]不相等。故表達式s[i]-t[i]在字符串相等時為0,不相等時為非0,所以第二空應(yīng)該填!(s[i]-t[i])就滿足題意了。

17.countryside

18.GDBHIEFCAGDBHIEFCA解析:后序遍歷二叉樹的順序為:后序遍歷左子樹→后序遍歷右子樹→訪問根結(jié)點。按照定義,后序遍歷序列是GDBHIEFCA。

19.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。

20.600600解析:程序中for循環(huán)的條件是當(dāng)前字符大于或等于字符\'0\'且小于或等于字符\'9\'的ASCII碼值,則s=10*s+ch[a]-\'0\'。計算結(jié)果是將字符串'600'轉(zhuǎn)換為整型數(shù)600。

21.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。

22.功能性注釋功能性注釋解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,它給出程序的整體說明;功能性注釋的位置一般嵌在源程序體之中戶主要描述其后的語句或程序做什么。

23.cc解析:該題考查以下兩個知識點:

(1)用一個指定的標(biāo)識符(即名字)來代表一個字符串,它的一般形式為#define標(biāo)識符字符串

(2)在MYSWAP宏定義中,利用中間變量z來交換x和y的值,所以要實現(xiàn)a和b的交換,只需通過中間變量即可,所以,此處應(yīng)填c。

24.66解析:本題中,i,j分別為外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量,外層循環(huán)共執(zhí)行了四次.當(dāng)i=1時,由于內(nèi)層循環(huán)判斷條件(2<=1)為假不執(zhí)行內(nèi)層循環(huán).當(dāng)i=2時,執(zhí)行內(nèi)層循環(huán),輸出一個#當(dāng)i=3時,內(nèi)層循環(huán)循環(huán)兩次,輸出兩個#,當(dāng)i=4時,內(nèi)層循環(huán)循環(huán)三次,輸出三#。當(dāng)i=5時,循環(huán)判斷條件不成立,退出外層循環(huán)。所以一共輸出6個#。

25.voidfun(int(*s)[10]int*bint*nintmmintnn){intijk=0;for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/for(j=0;j<nn;j++)b[k++]=s[i][j];/*通過指針返回元素個數(shù)*/*n=k}voidfun(int(*s)[10],int*b,int*n,intmm,intnn)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/\r\nfor(j=0;j<nn;j++)\r\nb[k++]=s[i][j];/*通過指針返回元素個數(shù)*/\r\n*n=k\r\n}解析:我們可以用兩個循環(huán)來處理問題,由于是按行的順序取出,所以第1個循環(huán)用于控制行下標(biāo),第2個循環(huán)用于控制列下標(biāo);若改成按列的順序取出,則循環(huán)應(yīng)改成:

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

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

b[k++]=s[j][i];

要注意s[j][i]的下標(biāo),不能用s[i][j]。

若按行取出則列標(biāo)變化最快,若按列取出則行標(biāo)變化最快。再根據(jù)循環(huán)嵌套時,越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。上題程序中只有當(dāng)j從頭到尾變化完時,i才變化一次(即加1);由于二數(shù)組的第1個下標(biāo)為行下標(biāo),第2個下標(biāo)為列下標(biāo),所以第1個程序列變化最快、第2個程序行變化最快。

26.

解析:該程序功能是計算并輸出多項式的值。該題的解題思路是。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達式,然后再對多項式進行累加求和。

27.

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

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

28.doublefun(intn){inti;doubles=0.0s1=0.0;for(i=1;i<=n;i++){s1=s1+pow(i0.5);/*求每—項*/s=s+s1;/*按公式求出s*/}returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0,s1=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+pow(i,0.5);/*求每—項*/\r\ns=s+s1;/*按公式求出s*/\r\n}\r\nreturns;\r\n}解析:我們先用數(shù)學(xué)的思路讀懂該

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論