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

下載本文檔

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

文檔簡介

2021年江西省上饒市全國計算機等級考試C語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.若從鍵盤輸入58,則以下程序的輸出結果是【】。

main()

{inta;

scanf(“%d”,&A);

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

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

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

}

2.耦合和內聚是評價模塊獨立性的兩個主要標準,其中______反映了模塊內各成分之間的聯(lián)系。

3.下面程序的功能是用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>

#include"stdio.h"

main()

{longcount=OL;

FILE*fp=【】("text.dat","r");

if(fp==0)

{printf("Openerror\n");

exit(0);

}

while(【】)

{

fgetc(fp);

count++;

}

fclise(fp);

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

}

4.x、y、x均為int型變量,描述“x、y和z中至少有兩個為正數(shù)”的表達式是______。

5.在面向對象的程序設計中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【】。

6.由25人圍坐成圓圈,先由任意一人開始順時針沿用1~25依次編號,然后從1號開始順時針報數(shù)(1、2、3…),凡報5的倍數(shù)者出圈,剩下者繼續(xù)報數(shù),求出最后出圈者的編號。

#include

main()

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{

if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",,j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

7.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁誣_____。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

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

for(max=a[row][0],col=1;col<N;col++)

if()max=a[row][col];

if(row==0)min=max;

elseif()min=max;

returnmin;

}

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

#include<atdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

9.若已定義inta[10],i;以下fun函數(shù)的功能是,在第一個循環(huán)中給前10個數(shù)組元素依次賦1,2,3,4,5,6,7,8,9,10;在第二個循環(huán)中使a數(shù)組前10個元素中的值對稱拆疊,變成1,2,3,4,5,5,4,3,2,1。請?zhí)羁铡?/p>

fun(inta[])

{inti;

for(i=1;i<=10;i++)【】=i;

for(i=0;i<5;i++)【】=a[i];

}

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptrl+k));}

二、單選題(10題)11.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關系

12.在下列幾種排序方法中,要求內存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

13.就平均查找速度而言,下列查找速度從慢至快的關系是()

A.順序折半哈希分塊B.順序分塊折半哈希C.分塊折半哈希順序D.順序哈希分塊折半

14.順序結構的本質特點是()。

A.數(shù)據(jù)元素存儲在地址連續(xù)的內存空間

B.數(shù)據(jù)元素緊鄰

C.數(shù)據(jù)元素在內存中的相對位置表示數(shù)據(jù)之間的邏輯關系

D.不使用指針

15.有以下程序(函數(shù)fun只對下標為偶數(shù)的元素進行操作):#include<stdio.h>voidfun(int*n){inti,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;t[a[i];a[i]=a[k];a[k]=t;}}main{intaa[lO]=[1,2,3,4,5,6,7],a;fun(aa,7);for(i=0;i<7;i++)printf("%d,",aa[i]);printf("n");}程序運行后的輸出結果是()。A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

16.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。

A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1

17.

18.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內說明語句后的復合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內有效

B.為局部變量,只在該函數(shù)內有效

C.為局部變量,只在該復合語句中有效

D.定義無效,為非法變量

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

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

20.

三、程序設計題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是統(tǒng)計s所指字符串中的數(shù)字字符個數(shù),并將其作為函數(shù)值返回。例如,s所指字符串中的內容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

22.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”?;匚淖址侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無紙化考武題庠請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];10FILE*out;11char*test[]={"1234321","123421","123321","abcdCBA"};12inti;13printf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf("YES\n");19else20printf("NO\n");21/******************/22out=fopen("out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26else27fprintf(out,"NO\n");28fclose(out);29/******************/30}

23.請編寫函數(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ù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

24.請編寫一個函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標,最大值和它所在的下標通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

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

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

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

試題程序:

25.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。

xn+1=COS(xn)

迭代步驟如下:

(1)取x1初始值為0.0;

(2)x0=x1,把?X1的值賦給x0;

(3)x1=cos(xO),求出一個新的x1;

(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟

(5),否則執(zhí)行步驟(2);

(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。

程序將輸出結果root=0.739085。

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

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

試題程序:

26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內容為“****A*BC*DEF*G*******”,刪除后,字符串中的內容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){ chars[81]; printf(“Enterastring:\n”); gets(s); fun(s); printf(“Thestringafterdeleted:\n”); puts(s);}

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

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

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

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

試題程序:

28.請編寫函數(shù)proc,其功能是:將str所指字符串中除下標為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內容為ABCDEFGl2345,其中字符B的ASCIl碼值為偶數(shù),所在元素的下標為奇數(shù),因此必須刪除;而字符A的ASCIl碼值為奇數(shù),所在數(shù)組中的下標為偶數(shù),因此不應當刪除。依此類推,最后t所指的數(shù)組中的內容應是ACEG。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*str,chart[])

{

}

voidmain

{

charstr[100],t[100];

system("CLS");

printf("\nPleaseenterstringstr:");

scanf("%S",str);

proc(str,t);

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

29.M名學生的成績已在主函數(shù)中放入一個帶頭結點的鏈表結構中,h指向鏈表的帶頭結點。請編寫函數(shù)proc(),它的功能是:找出學生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

30.有一個一維數(shù)組,內放10個學生成績,寫一個函數(shù),求出平均分。

四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。

請改正函數(shù)fun()中的錯誤,使它能得出正確的結果。

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*s)

{inti,j;

for(i=0,j=0;s[i]!='\0';i++)

if(s[i]>='0'&&s[i]<='9')

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

s[j]=s[i];

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

s[j]="\0";

}

main()

{charitem[80];

clrscr();

printf("\nEnterastring:");gets(item);

printf("\n\nThestringis:\%s\n",item);

fun(item);

printf("\n\nThestringofchangingis:

\%s\n",item);

}

32.下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。

例如:當給n輸入5時,函數(shù)值為240;當給n輸入3時,函數(shù)值為60。

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

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<stdio.h>

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

fun(intn);

{

intc;

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

if(n=1)

c=15;

else

c=fun(n-1)*2;

return(c);

}

main()

{

intn;

printf("Entern:");

scanf("%d",&n);

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

}

33.下列給定的程序中,函數(shù)fun()的功能是:計算并輸出k以內最大的6個能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為2925。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intk)

{

intm=0,mc=0,j;

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

while(k>=2)&&(mc<6)

{

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

if((k%7=0)||(k%ll=0))

{

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

m=k;

mc++;

}

k--;

}

returnm;

}

main()

{

clrscr();

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

}

34.下列給定程序中,函數(shù)fun()的功能是:利用插入排序法對字符串中的字符按從大到小的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入到前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入到前3個字符中,待排序的字符串已在主函數(shù)中賦予。

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

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

試題程序:

#include<string.h>

#include<stdio.h>

#defineN80

voidinsert(char*aa)

{

inti,j,n;charch;

n=strlen(aa);

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

{

ch=aa[i];

j=i-1;

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

while((j>=0)||(ch>aa[j]))

{

aa[j+1]=aa[j];

j--;

}

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

aa[j]=ch;

}

}

main()

{

chara[N]="JRTYDFKLIOPQWEGHMNBVCUASXZ";

inti;

printf("Theoriginalstring:%S\n",a);

insert(a);

printf("Thestringaftersorting:%S\n\n",a);

}

35.下列給定程序中,函數(shù)fun()的功能是計算并輸出high以內的素數(shù)之和。high由主函數(shù)傳給fun()函數(shù)。若high的值為100,則函數(shù)的值為1060。

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

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

試題程序:

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

}

36.下列給定程序中,函數(shù)fun()的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長的剩余字符接在c所指數(shù)組的尾部。例如,當a所指字符串中的內容為abcdefg,b所指字符串中的內容為1234時,c所指數(shù)組中的內容應該為a4b3c2dlefg;而當a所指字符串中的內容為1234,b所指字符串中的內容為abcdefg時,c所指數(shù)組中的內容應改為1g2f3e4dcba。

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

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

試題程序

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*a,char*b,char*c)

{

inti,j;charch;

i=0;j=strlen(b)-1;

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

while(i>j}

{ch=bill;b[i]=b[j];b[j]=ch;

i++;j--;

}

while(*a||*b)

{if(*a){*c=*a;c++;a++;}

if(*b){*c=*b;c++;b++;}

}

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

*c=0;

}

main()

{

chars1[100],s2[100],t[200];

clrscr();

printf("\nEnters1string:");

scanf("%s",s1);

printf("\nEnters2string:");

scanf("%s",s2);

fun(s1,s2,t);

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

}

37.給定程序MODll.C中函數(shù)fun的功能是:將長整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當s中的數(shù)為:87653142時,t中的數(shù)為:7531。

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

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

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

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

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

試題程序:

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

}

39.下列給定的程序中,函數(shù)fun()的功能是:計算并輸出k以內最大的10個能被13或17整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intk)

{intm=0,mc=0,j;

while((k>=2)&&(mc<10))

{

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

if((k%13=0)||(k%17=0))

{m=m+k;mc++;}

k--;

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

returnm;

}

main()

{clrscr();

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

}

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

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

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

試題程序:

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

}

}

main()

{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("排序后的順序:");

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

printf("\n");

}

五、程序改錯題(2題)41.下列給定的程序中,proc()函數(shù)的功能是:將str所指字符串中每個單詞的最后一個字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。

例如,若輸人:Howdoyoudo,則輸出:HoWdOyoUd0。

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

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

試題程序:

42.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有小寫字母c。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、操作題(2題)43.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。

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

13233343

14243444

15253545

則一維數(shù)組中的內容應該是132333431424344415253545。

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

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

試題程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

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

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

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

printf("\n\n");

}

44.有以下語句段:

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值:

n1=10

n2=20

每個輸出行從第一列開始,請?zhí)羁铡?/p>

參考答案

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

2.內聚內聚

3.fopen!feof(fp)fopen\r\n!feof(fp)解析:第一空從右邊的括號中可以看出,這里應該填入一個fopen,整條語句用來打開一個名為text.dat的文件。第二空是一個while循環(huán)的循環(huán)條件表達式,循環(huán)體每次讀取一個字符,并讓count增1,所以循環(huán)條件應該是“如果文件還沒結束”,故應該填!feof(fp)。

4.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:題目要求“x、y和z中至少有兩個為正數(shù)”,即x、y和x這3個數(shù)中必須有兩個是正數(shù),且這3個數(shù)中的哪兩個數(shù)都有可能是正數(shù),所以它們之間是或的關系。

5.消息消息解析:消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

6.0a[j]=0count<25

7.a[iow][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[iow][col]max<min或min>maX或max<=min或min>=maxa[iow][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[iow][col]\r\nmax<min或min>maX或max<=min或min>=max解析:本題有兩層for循環(huán),主函數(shù)中定義了整型變量iow、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內循環(huán)中的次數(shù),max記錄每行中的最大值;min記錄所有行中最大值中的最小值。在內循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進行比較。如果大于max則將其值賦給max,當每一行循環(huán)結束,max記錄了每一行的最大值。所以第一個空應該填a[row][col]>max或a[row][col]=max.退出內循環(huán),在第一次退出內循環(huán)時,將min賦初值為第0行的max,然后在每次退出內循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應該填max<min或min>max,當退出外循環(huán)時,min為所有行中的最大值的最小值。

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

9.a[i-1]或a[-1+i]a[9-i]或a[-i+9]a[i-1]或a[-1+i]\r\na[9-i]或a[-i+9]

10.gaga解析:用字符指針處理字符串,首先要使指針指向這個字符串,即題中的ptr1=a和ptr2=b。然后就是通過指針的移動可以引用到字符串中的每一個字符。題中的*(ptr1+k)是使指針ptr1向后移動k個位置,然后取出指向的字符。注意:用字符數(shù)組作為字符串和用指針指向的一個字符串之間的區(qū)別。

11.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

12.D解析:快速排序的基本思想是,通過一趟排序將排序記錄分割成獨立的兩部

分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,再分別對這兩部分記錄繼

續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。

13.B

14.C

15.A對下標為偶數(shù)的元素進行降序排序,下標為奇數(shù)元素保持不變。

16.C解析:棧是一種后進先出表,選項C中,先出棧的是3,說明此時棧內必然有1,2,由于1先于2進淺,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。

17.C

18.C

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

20.C

21.intfun(char*s)2;{intn=0;3char*p;4:;for(p=s;*p!=,\\0';p丄+)if((*p≥’o’)&&(≤’9’))6n++;7returnn;8}要統(tǒng)計字符串中數(shù)字字符的個數(shù),首先應定義變量n,并將其初始化為0,然后遍歷字符串,逐個判斷字符是否為數(shù)字字符,判斷條件為該元素的ASCII值在字符o和9的ASCII值之間,若判斷條件成立,則使n的值加1,否則,繼續(xù)判斷下一個字符,直到字符串結束。

22.1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p指向字符串末尾,并統(tǒng)計字符數(shù)*/6{7n++8P++;10}10for(i=0;i23.

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

24.

【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個元素。首先將最大值賦值為數(shù)組中的第一個元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標賦值給變量d。

25.

【解析】本題比較簡單,因為題目中已經(jīng)給出了算法,只要把題目中的說法轉換成C語言表達式基本上就出來了,本題最好用do-while循環(huán)來做,但要注意循環(huán)終止的條件。

26.voidfun(char*a){ inti,j=0; for(i=0;a[i]!=‘\0’;i++) if(a[i]!=‘\*’) a[j++]=a[i];/*若不是要刪除的字符‘*’則保留*/ a[j]=‘\0’;/*最后加上字符串結束標志‘\0’*/}該題考核的是刪除字符串中所有*,需用循環(huán)語句遍歷字符串,用判斷語句判斷字符是否為*,由此可以決定該程序應使用循環(huán)判斷結構。用循環(huán)操作從字符串開始向后逐個進行比較,若不是要刪除的字符(用if(a[i]!=‘*’)來控制)則保留。變量i和j用來表示原字符串的下標和刪除*后新字符串的下標。注意,下標變量j要從0開始,最后還要加上字符串結束標志‘\\0’。

27.

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

28.voidproc(char*str。chart[3])

\n{

\ninti,j=0;

\nfor(i=0;str[i]!=\\O;i++)//從數(shù)組的第一個元素開始,到其最后一個

\n{if(i%2==0str[i]%21=o)//下標為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符

\nt[j++]=str[i];}//如果成立,則把它放到t數(shù)組中

\nt[i]=\\o;//字符串結束標志為\\0

\n}

\n【解析】題目中要求將字符串str中下標為偶數(shù),同時ASCIl碼值為奇數(shù)的字符放在數(shù)組t中。首先,需要檢查字符串str中下標為偶數(shù)的字符其ASCIl碼值是否為奇數(shù),將符合要求的字符放在數(shù)組t中。最后,為新的字符串數(shù)組添加結束符。

\n

29.

【解析】要得到學生的最高分,需要將每一個學生的成績進行比較。學生的成績存儲在鏈表中,其結束標志為最后一個結點的next指針即NULL。比較每一個學生的成績,將最高分返回給主函數(shù)。

30.\nfloataverage(floatarray[],intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=1;Isum=sum+array[I];

\naver=sum/n;

\nreturn(aver);}

\nmain

\n{floatave,score[10];

\nintI;

\nfor(I=0;I<10;I++)

\nscanf('%f',&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n

31.(1)錯誤;s[j]=s[i];正確:s[j++]=s[i];(2)錯誤:s[j]="\0";正確:s[j]='\0';(1)錯誤;s[j]=s[i];正確:s[j++]=s[i];\r\n(2)錯誤:s[j]='\\0';正確:s[j]=\'\\0\';解析:有循環(huán)條件if(s[i]>=\'0\'&&s[i]<=\'9\')以及題目要求“依次取出字符串中所有的數(shù)字字符”可知,s[j]=s[i];表述錯誤。s[j]='\\0';中是一個常識性語法錯誤,學習者只要在平時訓練的時候注意一下就可以了。

32.(1)錯誤:fun(intn);正確:fun(intn)(2)錯誤:if(n=1)正確:if(n==1)(1)錯誤:fun(intn);正確:fun(intn)\r\n(2)錯誤:if(n=1)正確:if(n==1)解析:錯誤1:該行是函數(shù)的首部,不是一條語句,因此不能以分號結束。錯誤2:if垢面應該緊跟一個條件判斷表達式,若寫成“if(n=1)”,則說明該表達式的值永遠為真,也就是說這個條件永遠成立,沒有遞歸執(zhí)行。

33.(1)錯誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))(2)錯誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11=0))(3)錯誤:m=k正確:m=m+k;(1)錯誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))\r\n(2)錯誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11=0))\r\n(3)錯誤:m=k正確:m=m+k;解析:錯誤1:C語言規(guī)定while語句后的表達式兩側必須要有圓括號。錯誤2:if語句的判斷條件應用關系運算符,而不是賦值運算符。錯誤3:根據(jù)題意,將滿足條件的數(shù)求累加和。

34.(1)錯誤:while((j>=0)||(ch>aa[j]))正確:while((j>=0)&&(ch>aa[j]))(2)錯誤:aa[j]=ch;正確:aa[j+1]=ch;(1)錯誤:while((j>=0)||(ch>aa[j]))正確:while((j>=0)&&(ch>aa[j]))\r\n(2)錯誤:aa[j]=ch;正確:aa[j+1]=ch;解析:錯誤1:此處的兩個條件要同時滿足,是“與”的關系,而不是“或”的關系。錯誤2:對長度為n的數(shù)組元素進行排列,可先對數(shù)組的前m-1項進行排序,之后再對前m項進行排序,如此循環(huán)直到數(shù)組全部元素完成排序。對前m項的子數(shù)列進行排序的方法是,將該子數(shù)列的末尾元素與前m-1項的元素相比較,由于前m-1項已經(jīng)完成排序,可以找到某一位置,使得將該末尾元素插入該位置之后,前m項仍然保持降序。這樣循環(huán)后,就可以得到全部元素的排序。掌握了這個方法,這行的錯誤就很容易找出來了。

35.(1)錯誤:i

溫馨提示

  • 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

提交評論