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

下載本文檔

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

文檔簡介

2022年江西省贛州市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.若有下列定義和語句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結果為______。

2.在宏定義#defineP13.14159中,用宏名PI代替一個______。

3.下面程序的運行結果是【】。

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

4.注釋一般分為序言性注釋和______注釋。

5.下面程序的輸出結果是()。

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

6.執(zhí)行以下程序的輸出結果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

7.有以下程序:

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)puts(ps);

}

執(zhí)行后的輸出結果是【】。

8.下列程序的運行結果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

9.關系操作的特點是______操作。

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

#include<stdio.h>

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

二、單選題(10題)11.算法能正確地實現預定功能的特性稱為算法的()。

A.正確性B.易讀性C.健壯性D.高效率

12.在ASC算法team日常開發(fā)中,常常面臨一些數據結構的抉擇,令人糾結。目前大家在策劃一個FBI項目(FastBinaryIndexing),其中用到的詞匯有6200條,詞匯長度在10-15之間,詞匯字符是英文字母,區(qū)分大小寫。請在下面幾個數據結構中選擇一個使檢索速度最快的()

A.二叉搜索樹,比較函數開銷:1次運算/每字符

B.哈希表,hash算法開銷:10次運算/每字符

C.鏈表,比較函數開銷:1次運算/每字符

D.TRIE樹,尋找子節(jié)點開銷:1次運算/每字符

13.某完全二叉樹有256個節(jié)點,則該二叉樹的深度為()。

A.7B.8C.9D.10

14.設x是一個int型的,y的值為10,則表達式x&&y的值為()。

A.1B.0C.與x值相同D.與x值相反

15.執(zhí)行下述程序后,輸出的結果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

16.某線性表中最常用的操作是在最后一個元素之后插入一個元素和刪除第一個元素,則采用()存儲方式最節(jié)省運算時間。

A.單鏈表B.僅有頭指針的單循環(huán)鏈表C.雙鏈表D.僅有尾指針的單循環(huán)鏈表

17.在單鏈表中,增加頭結點的目的是______。

A.方便運算的實現B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性表的鏈式存儲實現

18.若執(zhí)行下面的程序時,從鍵盤上輸入5和2,則輸出結果是______。main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}

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

19.若定義下列結構體,結構體變量p的出生年份賦值正確的語句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

20.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。

A.直接插入排序B.直接選擇排序C.快速排序D.二路歸并排序

三、程序設計題(10題)21.學生的記錄由學號和成績組成,M名學生的數據已在主函數中放入結構體數組stu中,請編寫函數proc(),該函數的功能是:把高于等于平均分的學生數據放在b所指的數組中,高于等于平均分的學生人數通過形參n傳回,平均分通過函數值返回。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

22.假定輸入的字符串中只包含字母和*號。請編寫函數proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

23.編寫函數fun(),其功能是:實現兩個字符串的連接(不要使用庫函數strcat),即把p2所指的字符串連接到p1所指的字符串的后面。例如,分別輸入下面兩個字符串:“FirstString——”“SecondString”程序輸出:“FirstString——SecondString”注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:

24.25.編寫函數fun(),其功能是計算:

s作為函數值返回。

在C語言中可調用log(n)函數求1n(n)。log函數的引

用說明為:doublelog(doublex)。

例如,若m的值為20,則fun()函數值為6.506583。

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

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

試題程序:

26.編寫函數fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和ll整除的所有整數,并將其放在a所指的數組中,通過n返回這些數的個數。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數fun()的花括號中填入所編寫的若干語句。試題程序:

27.請編寫函數proc(),它的功能是:求出1~1000中能被5或13整除,但不能同時被5和13整除的所有整數,并將它們放在arr所指的數組中,通過n返回這些數。注意:部分源程序給H{如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

28.請編寫一個函數,用來刪除字符串中的所有空格。例如,輸入abcdefgh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

29.請編寫一個函數proc(),它的功能是:求出一個4×N整型二維數組中最大元素的值,并將此值返回調用函數。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:

30.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數fun(),其功能是將M行N列的二維數組中的數據,按列的順序依次存放到一維數組中,將一維數組中數據的個數存放在形參n所指的存儲單元中。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數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:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}

四、2.程序修改題(10題)31.下列給定程序中,函數fun()的功能是計算并輸出high以內的素數之和。high由主函數傳給fun()函數。

例如:若high的值為100,則函數的返回值為1060。

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

[注意]不要改動main函數,不得增行或刪行,也不得更改程序的結構。

[試題源程序]

#include<conio.h>

#include<stdio.h>

#include<math.h>

intfun(inthigh)

{

intsum=0,n=0,j,yes;

while(high>=2)

{

yes=1;

for(j=2;j<=high/2;j++)

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

ifhigh%j==0

{

yes=0;

break;

}

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

if(yes==0)

{

sum+=high;

n++;

}

high--;

}

returnsum;

}

main()

{

clrscr();

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

}

32.給定程序MODll.C中函數fun的功能是;從低位開始取出長整型變量s中偶數位上的數,依次構成一個新數放在t中。高位仍在高位,低位仍在低位。

例如,當s中的數為:7654321時,t中的數為:642。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

33.給定程序MODll.C中函數fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,若輸入:edcba,則應輸出:abcde。

請改正程序中的錯誤,使它能統(tǒng)計出正確的結果。

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

34.給定程序MODl1.C中函數fun的功能是:從低位開始取出長整型變量s中奇數位上的數,依次構成一個新數放在t中。高位仍在高位,低位仍在低位。例如:當s中的數為2736598時,t中的數為:2358。

#include<conio.h>

#include<stdio.h>

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

voidfun(longs,longt)

{longs1=10;

*t=S%10;

while(s>0)

{s=s/l00;

*t=S%10*s1+*t;

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

s1=s1*100;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:”);

scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

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

A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))

例如,若p=10,則應輸出0.617977。

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

注意:不要改動mah函數,不得增行或刪行,也不得更改程序的蛄構.

試題程序:

#include<conio.h>

#include<stdio.h>

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

ihtfun(ihtn)

{floatA=l;inti;

/**************foudn********************/

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

A=1.0/(i+A);

returnA;

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

$canf("%d",&n);

printf("A%d=%lf\n",n,fun(n));

}

36.給定程序MODll.C中函數fun的功能是:計算小于形參k的最大的10個能被13或17整除的自然數之和。k的值由主函數傳入,若k的值為500,則函數值為4622。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

37.給定程序MODll.C中函數fun的功能是:根據形參m的值(2≤m≤9),在m行m列的二維數組中存放如下所示規(guī)律的數據,由main函數輸出。

例如,若輸入2|若輸入4

則輸出:|則輸出:

12|1234

24|2468

|36912

|481216

請改正程序函數中的錯誤,使它能得出正確的結果。

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

38.給定程序MODII.C中函數fun的功能是:將長整型數s中每一位上為偶數的數依次取出,構成一個新數放在t中。高位仍在高位,低位仍在低位。

例如,當s中的數為:87653142時,t中的數為:8642。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

39.給定程序中函數fun的功能是:從低位開始取出長整型變量s中偶數位上的數,依次構成一個新數放在t中。高位仍在高位,低位仍在低位。

例如,當s中的數為:7654321時,t中的數為:642。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。

[試題源程序]

#include<stdio.h>

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

voidfun(longs,longt)

{

longs1=10;

s/=10;

*t=s%10;

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

while(s<0)

{

s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

mein()

{

longs,t;

printf("\nPleaseenters:");

scanf("%1d",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

40.下列給定程序中,函數fun()的功能是:用下面的公式求π的近似值,直到最后一項的絕對值小于指定的數(參數num)為止。

π/4≈1-1/3+1/5-1/7+…

例如,程序運行后,輸入0.0001,則程序輸出3.1414。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<math.h>

#include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=1;pi=0;n=1;s=1;

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

while(t>=num)

{

pi=pi+t;

n=n+2;

s=-s;

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

t=s%n;

}

pi=pi*4;

returnpi;

}

main()

{floatn1,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f",&n1);

n2=fun(n1);

printf("%6.4f\n",n2);

}

五、程序改錯題(2題)41.下列給定程序中函數fun的功能是。用遞歸算法計算斐波拉契數列中第n項的值。從第l項起,斐波拉契數列為:1、1、2、3、5、8、l3、21、……

例如,若給n輸入7,則該項的斐波拉契數值為l3。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構。

42.下列給定程序中,函數proc()的功能是:根據整型參數m,計算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,則應輸出0.000162。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、操作題(2題)43.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,已知學生的記錄由學號和學習成績構成,N名學生的記錄已存入a結構體數組中。請編寫函數fun(),該函數的功能是找出成績最高的學生記錄,通過形參將其返回主函數(規(guī)定只有一個最髙分)。已給出函數的首部,請完成該函數。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#defineN10typedefstructss/*定義結構體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printf(“****Theoriginaldata****”);for(i=0;i<N;i++)printf(“No=%sMark=%d\n”,a[i].num,a[i].s);fun(a,&m);printf(“****THERESULT****\n”);printf(“Thetop:%s,%d\n”,m.num,m.s);}

44.請補充函數fun(),該函數的功能是:把一個字符串中的字符(字母)按從小到大排序,并把這個全部由字母組成的字符串保存在原串中,函數返回這個字符串的長度。例如;輸入“cixbr2.3”,如果為bcirx,字符串長度為5。

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

請勿改動主函數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達式或語句。

#include<stdio.h>

#defineN20

intfun(char*str)

{

inti=0,j=0,k=-0,m=0;

chart;

char*p=str;

while(*p)

{

if((*p>='A'&&*p<='Z')||(*p>='a'

&&*p<='z'))

【】

p++;

}

*(str+i)='\0';

【】;

while(*(p+j))

{

k=j;

【】;

while(*(p+k))

{

if(*(p+k)<*(str+m)

{

t=*(str+m);

*(str+m)=*(p+k);

*(p+k)=t;

}

k++;

}

j++;

}

returni;}

main()

{

charstr[81];

ihtn;

clrscr();

printf("Inputtheoriginalstring");

gets(str);

printf("***TheOriginalstring***In");

puts(str);

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

n=fun(str);

puts(str);

printf("***Thelengthofnewstringis:

%d***\n",n);

}

參考答案

1.44解析:strcpy(s1,s2)函數的作用是將字符串s2中的內容拷貝到字符串s1中的內容覆蓋。strlen()函數是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。

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

3.1-21,-2解析:題中外層while循環(huán)的循環(huán)條件是y--!=-1,即y>=0;內層do…while循環(huán)的循環(huán)條件是y--即y-->0,y>=1。注意:break和continue語句在循體中的作用。

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

5.3232解析:while(表達式)的功能是:首先計算表達式的值.若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計算表達式的值.若仍為真,則重復執(zhí)行循環(huán)體語句,直到表達式的值為假,結束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句;i=0時滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結束。

6.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時.發(fā)現該標識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。

7.zyzXyzzyzXyz解析:本題考查字符型指針變量的應用。程序中字符指針變量ps指向字符串'xyz',while循環(huán)語句的作用使ps指向字符串結尾,for循環(huán)的執(zhí)行過程如下。

第一次循環(huán):ps指向字符串'z',輸出z。

第二次循環(huán):ps指向字符串'yz',輸出yz。

第三次循環(huán):ps指向字符串'xyz',輸出xyz。

8.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

9.集合集合

10.77解析:程序中經過宏替換后,表達式t=MAX(a+b,c+d)*10變?yōu)閠=(a+b)>(c+d)?(a+b):(c+d)*10。因為(a+b)>(c+d)為真,所以t=(a+b),輸出結果為7。

11.A

12.D

13.C

14.C

15.D本題j=要是考查帶參數的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

16.D

17.A\nA?!窘馕觥款^結點不僅標識了表中首結點的位置,而且根據單鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點的目的是為了便于運算的實現。

\n

18.C解析:本題考查簡單的if...else語句。先執(zhí)行條件if(a<b),顯然不成立,則執(zhí)行else語句。

19.C解析:本題主要考查怎樣為嵌套定義的結構中的成員賦值:由于worker中的birth是一個st型的結構,在給birth賦值時,不能將birth作為一個整體,要用“.”運算再深入一層訪問到最基本的成員x、y、z。

20.C

21.

【解析】要得到成績高于等于平均分的學生數據,首先要得到所有學生的平均分,然后把每個學生的成績與平均分相比較。把符合條件的學生數據放在數組b中,學生個數通過形參中的指針變量返回,平均分數由函數值返回。

22.\n\tvoidproc(char*str)\n\n\n\t{\n\n\n\tchar*p=str:\n\n\n\twhile(*p==*)p++;//通過P的移動來達\n\n\n\t到使P指向第一個不是*號的字符\n\n\n\tfor(;*p!=\0

;p++,str++)//把從第一個\n\n\n\t不是*號的字符放到a中‘\n\n\n\t*str=*P:\n\n\n\t*str=\0

;//最后用\0作為字符串結束標志\n\n\n\t}\n\n\n\t【解析】題目中要求將字符串中的前導*號全部刪除首先將指針p移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結束符。\n

23.

【解析】本題考查字符串連接函數的實現。本題通過兩個for循環(huán)完成功能。第一個循環(huán)的作用是計算出字符串的長度,如果p1是ˊ\0ˊ(即此字符是字串尾),退出循環(huán),i中保存的數值即是字串長度。第二個循環(huán)的作用是循環(huán)遍歷字串p2的字符,利用語句“p1[i++]=p2[j];”將p2中的字符逐個插到字串p1后。

24.

25.

【解析】題目要求寫出程序實現數學表達式的功能,需要用for循環(huán)計算累加的結果,調用sqrt函數實現求平方根。循環(huán)變量的范圍是1~m,每次循環(huán)都進行一次累加求和。需要特別注意的是,log函數的形式參數為double型變量,用于循環(huán)的計數變量為整數,所以必須強制轉換。最后返回所求出的平方根。

26.

【解析】根據題意,所寫函數要用for循環(huán)實現對整數1~1000的遍歷;通過if語句找出能被7或11整除,但不能同時被7和11整除的所有整數,因為同時被7和11整除的整數一定能被77整除,且不能被77整除的數不一定就是能被7或11整除,可得出表達式“(i%7==0||i%11==O)&&i%77!=0”;再按題目要求,將找出來的整數放在a所指的數組中,通過n返回這些數的個數即可。

27.

【解析】題目中要求出1~1000中能被5或13整除,但不能同時被5和13整除的所有整數,首先應判斷1~1000的每一個整數是否符合要求,將符合要求的每一個整數放入數組arr中。最后將整數的個數作為形參返回給主函數。

28.

【解析】根據題目中要求刪除字符串中所有的空格,需要檢查字符串中的每一個字符。將不是空格的字符放入原來的字符串中,形成新的字符串。在新的字符串的末尾加上結束符。

29.

【解析】要求出二維數組中最大元素的值,需要比較二維數組中每一個元素的值。首先,定義變量max用來存放最大元素的值,將其初始化為二維數組中第一個元素的值。然后將其與后面的每一個元素進行比較,將二維數組中最大元素的值放到變量max當中,并將其返回給主函數。

30.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數組中的數據按列的順序依次存入一維數組中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個數*/}}題目要求實現將二維數組元素存入一維數組。使用for循環(huán)語句來控制二維數組元素的下標,同時使用指針變量配合操作。可以用兩個循環(huán)來處理問題,由于是按列的順序取出,因此第1個循環(huán)用于控制列下標,第2個循環(huán)用于控制行下標。

31.(1)錯誤:ifhigh%j==0正確:if(high%j==0)(2)錯誤:if(yes==0)正確:if(yes)(1)錯誤:ifhigh%j==0\r\n正確:if(high%j==0)\r\n(2)錯誤:if(yes==0)\r\n正確:if(yes)解析:fun函數的功能是:用while循環(huán)查找high以內的素數;用for循環(huán)判斷一個數是否為素數;用變量n記錄找到的素數的個數:用return返回素數之和sum。

錯誤1:這個錯誤比較明顯,if語句的兩側要加括號。

錯誤2:yes為1時,說明被判斷的數是素數,要累加到sum。

32.(1)voidfun(10ngslong*t)(2)while(s>0)(1)voidfun(10ngs,long*t)(2)while(s>0)解析:該題中函數功能是取出長整型變量s中偶數位上的數,組成新數。從已給定源程序的main主函數開始入手,“fun(s,&t);”語句調用函數fun來實現題目要求。

33.(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])解析:本題中函數的功能是讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。本題思路是利用字符串長度作為循環(huán)的控制條件,然后在循環(huán)過程中將字符按.ASCII碼排序。

34.voidfun(longslongt)改為voidfun(longslong*t)s1=s1*100;改為s1=s1*10;voidfun(longs,longt)改為voidfun(longs,long*t)\r\ns1=s1*100;改為s1=s1*10;解析:從fun函數可以看出,變量t應該是指針變量。因此,在形參表列中,t之前應該加“*”;從s中取出奇數位構建新數是逐位進行,而不是跳位的。因此,s1應該乘以10。

35.(1)錯誤:intfun(intn)正確:floatfun(intn)(2)錯誤:for(i=2;i<n;i++)正確:for(i=2;i<=n;i++)(1)錯誤:intfun(intn)正確:floatfun(intn)\r\n(2)錯誤:for(i=2;i<n;i++)正確:for(i=2;i<=n;i++)解析:該題中fun()函數的作用是計算數列前n項的和,而數列的組成方式是:第n項的分母是功口第n-1項的值,分子為1,如果循環(huán)累加按for(i=2;i<n;i++)執(zhí)行的話,當我們輸入n=2的時候會是什么結果?循環(huán)會怎么執(zhí)行呢?循環(huán)不能執(zhí)行,但數學思路絕對正確,這就矛盾了,所以循環(huán)條件應該是for(i=2;i<n;i++)。

36.(1)if((k%13==0)II(k%17==0))(2)}(1)if((k%13==0)II(k%17==0))(2)}解析:該題中函數功能是求能被13或17整除的自然數之和。從已給定源程序的main主函數開始入手,“printf("%d\\n",fun(500));”語句中的fun函數將500傳給n,計算小于500的能被13或17整除的自然數之和。

37.(1)voidfun(inta[][M]intm)(2)a[j][k]=(k+1)*(j+1);(1)voidfun(inta[][M],intm)(2)a[j][k]=(k+1)*(j+1);解析:本題中函數的功能是根據形參m的值(2≤m≤9),在m行m列的二維數組中存放有規(guī)律的數據,規(guī)律就是,i和j代表二維數組的行和列,則a啪[k]=(k+1)*(j+1)。

38.(1)if(d%2==0)(2)s/=10;(1)if(d%2==0)(2)s/=10;解析:本題中函數的功能是將長整型數s中每一位上為偶數的數依次取出,構成一個新數放在t中。首先在函數中對長整型數的每一位來進行截取,然后對其進行判斷,最后根據判斷結果進行操作。

39.(1)錯誤:void

溫馨提示

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

評論

0/150

提交評論