2023年海南省??谑腥珖嬎銠C等級考試C語言程序設計預測試題(含答案)_第1頁
2023年海南省??谑腥珖嬎銠C等級考試C語言程序設計預測試題(含答案)_第2頁
2023年海南省海口市全國計算機等級考試C語言程序設計預測試題(含答案)_第3頁
2023年海南省??谑腥珖嬎銠C等級考試C語言程序設計預測試題(含答案)_第4頁
2023年海南省??谑腥珖嬎銠C等級考試C語言程序設計預測試題(含答案)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年海南省??谑腥珖嬎銠C等級考試C語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.下面的程序可列指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

2.以下程序運行后的輸出結果是______。

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

}

3.在面向對象方法中,【】描述的是具有相似屬性與操作的一組對象。

4.數(shù)據(jù)的______結構在計算機存儲空問中的存放形式稱為數(shù)據(jù)的存儲結構或物理結構。

5.下面程序的運行結果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}

6.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p;則對數(shù)組元素的錯誤引用是

7.下列程序的輸出結果是【】。

main()

{inti;

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

{if(i>4)

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

break;}

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

8.已定義charch=′$′;inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為【】。

9.數(shù)據(jù)流的類型有______和事務型。

10.最簡單的交換排序方法是______。

二、單選題(10題)11.下列敘述中錯誤的是()。

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

12.

13.以下選項中可作為C語言合法常量的是_____。A.-80B.-080C.-8e1.0D.-80.Oe

14.設有定義“intx,y,z;”,且各變量已經(jīng)賦正整數(shù)值,則以下能正確表示代數(shù)式“”的C語言表達式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

15.設有定義inta=2,b=3,c=4;,則以下選項中值為0的表達式是______。A.(!a==1&&(!b==0)

B.(a<b)&&!c||1

C.a&&b

D.a||(b+b)&&(c-a)

16.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一特定的圖符構成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

17.

18.數(shù)據(jù)結構若采用鏈式存儲結構,要求內存中可用存儲單元的地址()。

A.必須是連續(xù)的B.部分地址必須是連續(xù)的C.一定是不連續(xù)的D.連續(xù)不連續(xù)都可以

19.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯誤的是()。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.sl="ABCDE";

D.for(i=0;i<6;i++)sl[i]=s2[i]

20.在一個有頭結點的鏈隊列中,假設f和r分別為隊首和隊尾指針,則插入s所指的結點的運算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

三、程序設計題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的百位和個位上,b中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上。例如,當a=45,b=12,調用該函數(shù)后c=1425。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

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

23.請編寫函數(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()的花括號中填入所編寫的若干語句。

試題程序:

24.編寫函數(shù)proc(),它的功能是求m以內(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

例如,m為100時,函數(shù)值應為s=7.416198。

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

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

試題程序:

25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內容應該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

26.編寫函數(shù)fun,其功能是:求出1~1000之間能被7或11整除,但不能同時被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。

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

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

27.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。

例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。

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

注意:m的值要大于2但不大于100。部分源程序給出如下。

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(intm)

{}

voidmain

{

intm;

doubles;

FILE*out:

printf("\n\nInputm:");

scanf("%d",&m);

s=fun(m);

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

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

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

fprintf(out,"%f\n",fun(m+80));

felose(out);

}28.m個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是:將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分數(shù)放在up所指的數(shù)組中。例如,當score數(shù)組中的數(shù)據(jù)為100,80,76,60,59,48,43,35,59時,函數(shù)返回的人數(shù)應該是4,up中的數(shù)據(jù)應為100,80,76,95。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

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

30.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),其功能是求出數(shù)組周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為0127919745238314568259141則返回主程序后s的值應為3.375。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構成一個新數(shù)放在沖。高位仍在高位,低位仍在低位。例如,當s中的數(shù)為87653142時,t中的數(shù)為8642。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(longs,long*t)

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

{intd;

longs1=l;

*t=0;

while(s>0)

{d=s%10;

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

if(d%2=0)

{*t=d*sl+*t;

sl*=10

}

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

s\=10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

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

}

32.下列給定程序中,函數(shù)fun()的功能是;將s所指字符串中的字母轉換為按字母序列的后續(xù)字母(但Z轉化為A,z轉化為a),其他字符不變。

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

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

試題程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

voidfun(char*s)

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

{while(*s!='@')

{if(*s>='A'&*s<='z'||*s>='a'&&*s<='z')

{if(*s=='Z')*S='A';

elseif(*S=='z')*s='a';

else*s+=1;

}

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

(*s)++;

}

}

main()

{chars[80];

clrscr();

printf("\nEnterastringwithlength<80:\n\n");gets(s);

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

fun(s);

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

}

33.下列給定程序中,函數(shù)fun()的功能是:用冒泡法對6個字符串按由大到小的順序進行排序。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineMAXLINE20

voidfun(char*pstr[6])

{

inti,j;

char*p;

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

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

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

if(strcmp((pstr+i),(pstr+j))<0)

{

p=*(pstr+i);

*(pstr+i)=*(pstr+j);

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

*(pstr+j)=*p;

}

}

main()

{

inti;

char*pstr[6],str[6][MAXLINE];

clrscr();

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

pstr[i]=str[i];

printf("/nEnter6string(1stringateachline):\n");

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

scanf("%s",pstr[i]);

fun(pstr);

printf("Thestringsaftersorting:\n");

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

printf("%s\n",pstr[i]);

}

34.下列給定程序中,函數(shù)fun()的功能是:刪除字符串s中所有空白字符(包括Tab字符、回車符及換行符)。輸入字符串時用’#’結束輸入。

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

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

試題程序:

#include<string.h>

#include<stdio.h>

#include<ctype.h>

fun(char*p)

{int!i,t;charc[80];

for(i=0,t=0;p[i];i++)

if(!isspace(*(p+i)))c[t++]=p[i];

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

c[t]='\0';

strcpy(p,c);

}

main()

{charc,s[80];

inti=0;

printf("Inputastring:");

c=getchar();

while(c!='#')

(s[i]=c;i++;c=getchar();}

s[i]="\0";

fun(s);

puts(s);

}

35.給定程序MODll.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復制到b中,要求每復制三個字符之后插入一個空格。

例如,在調用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調用函數(shù)之后,字符數(shù)組b中的內容則為:ABCDEFGHIJK。

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

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

36.給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串中的字母轉換為按字母序列的后續(xù)字母(但z轉換為A,z轉換為a),其他字符不變。

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

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

37.下列給定程序中,函數(shù)fun()的功能是:統(tǒng)計字符串substr在字符串srt中出現(xiàn)的次數(shù)。例如,若字符串為aaas1kaaas,子字符串為as,則應輸出2。

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

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

試題程序:

#include<stdio.h>

fun(char*str,char*substr)

{inti,j,k,num=0;

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

for(i=0,str[i],i++)

for(j=i,k=O;substr[k]==str[j];k++,j++)

if(substr[k+l]=='\0')

{num++;

break;

}

returnnum;

}

main()

{charstr[80],substr[80];

printf("Inputastring:");

gets(str);

printf("Inputasbustring:");

gets(substr);

printf("%d\n",fun(str,substr));

38.下列給定程序中,函數(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));

}

39.N個有序整數(shù)數(shù)列已放在一維數(shù)組中,給定下列程序中,函數(shù)fun()的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,則返回其下標值:反之,則返回-1。

折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(low<high),然后把m與中間位置(mid)中元素的值進行比較。如果m的值大于中間位置元素中的值,則下一次的查找范圍放在中間位置之后的元素中;反之,下次查找范圍落在中間位置之前的元素中。直到low>high,查找結束。

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

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

試題程序:

#include<stdio.h>

#defineN10

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

voidfun(inta[],intm)

{intlow--0,high=N-l,mid;

while(low<=high)

{mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

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

elseif(m>=a[mid])

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;

printf("a數(shù)組中的數(shù)據(jù)如下:");

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

printf("Enterm:");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!\n");

}

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

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

例如,若輸入5,則應輸出0.783333。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

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

intfun(intm)

{

doublet=1.0,j=1.0;

inti;

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

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

{j=-1*j;t+=j/i;}

returnt;

}

main()

{

intm;

clrscr();

printf("\nPleaseenter1integernumber:");

scanf("%d",&m);

printf("/nTheresultis%If\n",fun(m));

}

五、程序改錯題(2題)41.下列給定程序中,函數(shù)fun的功能是:從整數(shù)l0-55,查找能被3整除且有一位上的數(shù)值是5的數(shù),把這些:故放在b所指的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放位數(shù),a2放十位數(shù)。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:

42.下列給定程序中,函數(shù)proc()的功能是:從m個學生的成績中統(tǒng)計出低于平均分的學生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學生的成績:6070809065758595則低于平均分的學生人數(shù)為4(平均分為77.5)。實際輸入時學生數(shù)以“Enter”鍵作為結束,成績與成績之間也與Enter鍵作為分隔。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、操作題(2題)43.使用VC++打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(shù)值為NULL。例如,當字符串中的內容為“abcdabfabcdx”,t中內容為“ab”時,輸出結果應是“abcdx”。當字符串中的內容為“abcdabfabcdx”,t中內容為“abd”時,則程序輸出未找到信息“Notfound!”。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}

44.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

while(s[length])

【】;

-i;

j=i

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

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

s[j]='\0';

}

參考答案

1.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應填:str[i],第二空應填:str[i+l]。最終打印輸出得到的字符串str,所以第三空應填:'%s',str。

2.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實現(xiàn)的功能簡單來說就是將字符串s下標為p+2~k范圍的字符整體復制到字符串s下標為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。

3.類類解析:在面向對象方法中,類描述的是具有相似屬性與操作的一組對象。

4.邏輯邏輯解析:數(shù)據(jù)的邏輯結構在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結構或物理結構。

5.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1的12個字母,函數(shù)sub(shar*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。

6.C

7.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結束for循環(huán)直接跳出循環(huán)體外。當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)。

8.11解析:在執(zhí)行邏輯表達式'j=!ch&&i++'時,首先判斷j=!ch的值,因為'ch=\'$\''不為0,所以'j=!ch=0',編譯系統(tǒng)便不再計算表達式'i++'的值,i的值不變,仍為1。

9.變換型變換型

10.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。

11.BB。【解析】組合框和列表框都沒有selected屬性。

12.D

13.A解析:C語言的常量分為整型常量、實型常量和字符型常量。選項A屬于實型常量中的十進制小數(shù)形式的表示法,是合法的。

14.A代數(shù)式“”的結果為小數(shù),轉為C語言的表達式必須是浮點數(shù)。A選項由于1.0為浮點數(shù),計算結果自動轉換為浮點數(shù)。選項B、C、D的表達式均為0,因此只有選項A正確。故本題答案為A選項。

15.A解析:選項A中(!a==1)&&(!b==0)→(!2==1)&&(!b==0)→(0==1)&&(!b==0)→0&&(!b==0)→0(&&右邊表達式(!b==0)被“短路”):選項B中(a<b)&&!c||1→(2<3)&&!4||1→1&&0||1→0||1→1;選項C中a&&b→2&&3→1;選項Da||b+b)&&(c-a)→2||(b+b)&&(c-a)→1(||右邊表達式(b+b)&&(c-a)被“短路”)。所以本題選A。

16.A解析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭。

17.D

18.D

19.C數(shù)組名sl是代表sl數(shù)組首地址的地址常量,因為“=”左邊不能出現(xiàn)常量,所以s1="ABCDE"的方法是錯誤的。

20.B21.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}本題主要考核如何取出變量a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應的位數(shù)。由于變量a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用變量c時要進行指針運算。

22.

【解析】要找出學生的最高分,就要比較所有學生的成績。定義一個變量max用來存放學生的最高分,初始化為第一個學生的成績,依次與其后的學生成績相比較,最后將得到的最高分返回主函數(shù)。

23.

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

24.

【解析】按照題目中要求求m以內(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,需要判斷m以內的所有整數(shù)是否能同時被5與11整除,首先求出同時能被5與

11整除的所有自然數(shù)之和,然后再求和的平方根,最后返回到主函數(shù)當中。

25.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過指針返回元素個數(shù)*/8}本題可以用兩個循環(huán)來處理。由于是按行的順序取出,因此第1個for循環(huán)用于控制行下標,第2個循環(huán)用于控制列下標。若改成按列的順序取出,則循環(huán)應改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標,不能用s[i][j]。若按行取出則列下標變化較快,若按列取出則行下標變化較快,即循環(huán)嵌套時,越在內層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)

26.

【考點分析】

本題考查:if語句,用來判斷能被7整除或者能被11整除,但是又不能同時被7和11整除的數(shù),在這里充分理解”邏輯與”和”邏輯或”的區(qū)別;for循環(huán)語句的循環(huán)變量用來控制取值范圍。

【解題思路】

該題需要運用循環(huán)判斷結構來實現(xiàn),其中循環(huán)語句比較容易,只要確定循環(huán)變量的范圍即可,下面來看判斷語句,題目要求找出能被7或11整除,但不能同時被7和11整除的所有整數(shù)。能同時被7和ll整除的整數(shù)一定能被77整除,且不能被

77整除的數(shù)不一定就是能被7或11整除的數(shù),所以可得出程序中的if語句。注意:(i%7==0||i%11==0)兩邊必須要有小括號。27.\r\n\tintn,k,i;

doublesum=0.0;

for(n=3;n<=m;n++)//判斷n是否為素數(shù)

{

k=sqrt(n);//求n平方根

for(i=2;i<=k:i++)

if(n%i==0)break;//如果n不是素數(shù),跳出

if(i>=k+1)

sum+=sqrt(n);//求平方根的和

}

returnsum;

【解析】首先判斷循環(huán)中n是否為素數(shù),如果不是素數(shù),求其平方根的累加和,并返回計算結果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt函數(shù)。

28.

【解析】要找出低于平均分數(shù)的學生記錄,首先應該算出所有學生的平均成績,然后將每一個學生的成績與平均成績相比較,將低于平均成績的學生記錄放入數(shù)組below中,最后將低于平均分的人數(shù)返回給主函數(shù)。

29.

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

30.1doublefun(intw[][n])2{3inti,j,k=0;4doublesum=0.0;5for(i=0;i<n;i++)6for(j=0;j</n;i++)<n;i++)<n;j++)7if(i==0||i==N-1||j==0||j==N-l)/*只要下標中有一個為0或N-1,則它一定是周邊元素*/</n;j++)</n;i++)<n;i++)<n;j++)8{sum=sum+w[i][j];/*將周邊元素求和*/</n;j++)</n;i++)<n;i++)<n;j++)9k++;</n;j++)</n;i++)<n;i++)<n;j++)10}</n;j++)</n;i++)<n;i++)<n;j++)11returnsum/k;/*求周邊元素的平均值*/</n;j++)</n;i++)<n;i++)<n;j++)12}</n;j++)</n;i++)<n;i++)<n;j++)本題要求計算二維數(shù)組周邊元素的平均值,for循環(huán)語句控制循環(huán)過程,if條件語句根據(jù)數(shù)組元素的下標判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標中有一個是0或N-1,所以只要下標中有一個是0或N-1,那么它一定是周邊元素。計算周邊元素個數(shù)的方式是當給sum累加一個值時,k也加1。</n;j++)</n;i++)

31.(1)錯誤:intd;正確longd;(2)錯誤:if(d%2=0)正確:if(d%2==0)(3)錯誤:s\=10;正確:s/=10(1)錯誤:intd;正確longd;\r\n(2)錯誤:if(d%2=0)正確:if(d%2==0)\r\n(3)錯誤:s\\=10;正確:s/=10解析:其實,不論取出偶數(shù)還是奇數(shù),思路應該是一樣的。我們在剛開始學習C語言的時候就學習過強制類型轉換以及運算級別的問題,所以,這里的int就沒有存在的理由。錯誤2中的問題是怎么表達一個偶數(shù)的問題,歸根結底還是“=”和“==”的區(qū)別問題。

32.(1)錯誤:while(*s!='@')正確:while(*s)(2)錯誤:(*s)++;正確:s++;(1)錯誤:while(*s!='@')正確:while(*s)\r\n(2)錯誤:(*s)++;正確:s++;解析:根據(jù)題目要求,可對字符串所有字母進行遍歷。對每一個字母,若該字母為'z'或'Z',將該字母改成'a'或'A',即ASCII碼值減25,當然也可以用題目中的if語句來實現(xiàn)轉換。若該字母不是'z'或'Z',則該字母的ASCII碼值加1;對字符串所有字符重復以上過程即可得到題目要求的結果,可用循環(huán)語句和條件語句來實現(xiàn)。

33.(1)錯誤:if(strcmp((pstr+i)(pstr+j))<0)正確:if(strcmp(*(pstr+i)*(pstr+j))<0)(2)錯誤:*(pstr+j)=*p;正確:*(pstr+j)=p;(1)錯誤:if(strcmp((pstr+i),(pstr+j))<0)正確:if(strcmp(*(pstr+i),*(pstr+j))<0)\r\n(2)錯誤:*(pstr+j)=*p;正確:*(pstr+j)=p;解析:錯誤1:本題旨在考查指針的引用方法。*(pstr+i)指字符串中下標為i的字符。錯誤2:*p是字符類型,而*(pstr+j)是指針類型,二者不能進行賦值運算。

34.錯誤:c[t]="\0"正確:c[t]='\0'錯誤:c[t]='\\0',正確:c[t]=\'\\0\'解析:注意,該程序的if條件中應用了isspace函數(shù),該函

溫馨提示

  • 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

提交評論