2023年安徽省淮北市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第1頁
2023年安徽省淮北市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第2頁
2023年安徽省淮北市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第3頁
2023年安徽省淮北市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第4頁
2023年安徽省淮北市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年安徽省淮北市全國計算機等級考試C語言程序設(shè)計真題(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù)且要求m>n。

例如:m=12,n=8時,運行結(jié)果應(yīng)該是495.000000。請在題目的空白處填寫適當?shù)某绦蛘Z句,將該程序補充完整。

#include<conio.h>

#include<stdio.h)

floatfun(intm,intn)

{inti;

doublep=1.0;

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

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

for(i=1;i<=m-n;i++)p=p/i;

returnP;}

main()

{clrscr();

printf("p=%f\n",fun(12,8));}

2.以下程序的運行結(jié)果是【】。

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

3.有以下程序:

#include<stdio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運行時,如果從鍵盤輸入Y?N?<回車>,則輸出結(jié)果為【】。

4.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是【】。

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

5.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素的最大值。請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{

inta[3][4]={{12,41,36,28},{19,33,15,27),{3,27,19,1}},b[3],i;

fun(3,4,a,B);

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

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{

x=ar[i][0];

for(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=X;

}

}

6.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計有多少個單詞,單詞間用空格分隔。補充所缺語句。

#include<stdio.h>

main()

{charss[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=s[i-1];

if(【】)num++;

i++;

}

printf("Thereare%dwords,\n",num);

}

7.下列程序段中循環(huán)體的執(zhí)行次數(shù)是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

8.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,(),SEEK_END;f1+ftell(myf);

fclose(myf);

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

9.下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

10.數(shù)據(jù)模型是用來描述數(shù)據(jù)庫的結(jié)構(gòu)和語義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】

二、單選題(10題)11.

12.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是()。

A.3B.6C.8D.12

13.若有定義floata=25,b,*p=&b;,則下列對賦值語句*p=a;和p=&a;的正確解釋為()。

A.兩個語句都是將變量a的值賦予變量p

B.*p=a是使p指向變量a,而p=&a是將變量a的值賦予變量指針p

C.*p=a是將變量a的值賦予變量b,而p=&a是使p指向變量a

D.兩個語句都是使p指向變量a

14.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

15.以下四個選項,不能看作一條語句的是()。

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

16.若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4

17.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型

D.函數(shù)定義時形參的類型

18.

19.下面程序運行后的輸出結(jié)果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}

A.5B.6C.7D.8

20.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0:elsey=-1;

三、程序設(shè)計題(10題)21.請編寫函數(shù)proc(),該函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值為4。移動后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

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

23.從鍵盤上輸出10個整數(shù)存入一維數(shù)組中,按由大到小的順序輸出。

24.編寫函數(shù)fun,其功能是:實現(xiàn)兩個字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到

pl所指的字符串的后面。

例如,分別輸入下面兩個字符串:

程序輸出:

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

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

25.編寫函數(shù)intproc(intlim,intaa[M]),該函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素數(shù)。例如,若輸入12時,則輸出:235711。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

26.某學生的記錄由學號、8門課成績和平均分組成,學號和8門課的成績已在主函數(shù)中給出。請編寫proc()函數(shù),它的功能是:求出該學生的平均分并放在記錄的ave成員中。請自己定義正確的形參。例如,若學生的成績是65.5,75,88,90,90.5,66,64.5,89.5,則他的平均分應(yīng)當是78.625。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

27.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。此程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是將數(shù)組下三角元素中的值全部置成0。如a數(shù)組中的值為注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>#defineN5voidfun(inta[][N]){}voidmain(){ inta[N][N],i,j; system(“CLS”); printf(“****Thearray****\n”); for(i=0;i<n;i++)<p=""></n;i++)<>/*產(chǎn)生一個隨機的5×5矩陣*/ { for(j=0;j<=""p=""> { a[i][j]=rand()%10; printf(“%4d”,a[i][j]); } printf(“\n”); } fun(a); printf(“TheResult\n”); for(i=0;i<n;i++)<p=""></n;i++)<> { for(j=0;j<=""p=""> printf(“%4d”,a[i][j]); printf(“\n”); }}

28.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)

29.函數(shù)fun的功能是:將S所指字符串中除下標為偶數(shù)同時ASCIl碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl23456”,其中字符A的ASCIl碼值為奇數(shù),因此應(yīng)當刪除;字符8的ASCIl碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應(yīng)當刪除;字符2的ASCIl碼值為偶數(shù),在數(shù)組中的下標也為偶數(shù),因此不應(yīng)當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是‘'246”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:

30.規(guī)定輸入的字符串中只包含字母和+號。編寫函數(shù)fun,其功能是:除了字符串前導和尾部的母號外,將其他的*號全部刪除。形參h已指向字符串中第一個字母,形參P指向字符串中最后一個字母。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:計算并輸出下列級數(shù)的的N項之和SN,直到SN+1大于q為止,q的值通過形參傳入。

SN=2/1+3/2+4/3+(N+1)/N

例如,若q的值為50.0,則函數(shù)值為49.394948。

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

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

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

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

{

t=s

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

s=s+(n+1)/n;

n++;

}

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

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

returns;

}

main()

{clrscr();

printf("%f\n",fun(50));

}

32.下列給定程序中,函數(shù)fun()的功能是;求S的值。設(shè)S=(22/1*30))*(42/(3*5))*(62/(5*7))*…*(2k)2/((2k-1)*(2k+1))

例如,當k為10時,函數(shù)的值應(yīng)為1.533852。

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

注童;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

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

fun(intk)

{ihtn;floats,w,p,q;

n=1;

s=1.0;

while(n<=k)

{w=2.0*n;

p=w-1.0;

q=w+1.0;

s=s*w*w/p/q;

n++;

}

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

returns

}

main()

{clrscr();

printf("%f\n",fun(10));

}

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

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

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

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

34.已知一個數(shù)列從0項開始的前3項:0,0,1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)fun()的功能是:計算并輸出該數(shù)列前。項的平方根之和sum。n的值通過形參傳入。例如,當n=10時,程序的輸出結(jié)果應(yīng)為23.197745。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

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

fun(intn)

{doublesum,s0,s1,s2,s;intk;

sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;sl=0.0;s2=1.0;

for(k=4;k<=n;k++)

{s=s0+s1+s2;

sum+=sqrt(s);

s0=s1;s1=s2;s2=s;

}

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

returnsum

}

main()

{intn;

clrscr();

printf("InputN=");

scanf("%d",&n);

printf("%f\n",fun(n));

}

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

#inClude<coMo.h>

#inClude<stdio.h>

#dehneM5

/************fOUnd************/

intfun(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++)

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

printf("%f",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("\nThesumOfallelementsOn2diagnalsis%d."fun(M,aa));

}

36.下列給定程序中函數(shù)fun()的功能是;先將在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序連接到t串的后面。例如:當s中的字符串為ABCDE時,則t中的字符串應(yīng)為EDCBAABCDE。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,char*t)

{

inti,sl;

sl=strlen(s);

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

t[i]=s[sl-1];

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

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

t[sl+i]=s[i];

t[2*sl]-'\0';

}

main()

{chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

fun(s,t);

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

}

37.下列給定程序中,函數(shù)fun()的功能是;求出兩個數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若給num1和num2輸入49和21,則輸出的最大公約數(shù)為7:若給num1和num2分別輸入27和81,則輸出最大公約數(shù)為27。

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

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

試題程序:

#include<stdio.h>

intfun(inta,intb)

{intr,t;

if(a<b)

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

{t=a;b=a;a=t;}

r=a%b;

while(r!=0)

{a=b;b=r;r=a%b;}

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

return(a);

}

main()

{intnum1,num2,a;

printf("Inputnum1num2:");scanf("%d%d",&num1,&num2);

printf("num1=%dnum2=%d\n\n",num1,num2);

a=fun(num1,num2);

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

}

38.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有大寫字母'F'。

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

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

試題程序:

#include<stdio.h>

voidfun(char*s)

{

inti,j;

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

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

if(s[i]!='F')

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

s[j]=s[i];

s[j]='\0';

}

main()

{

chars[80];

printf("\nEnterastring:");

gets(s);

printf("Theoriginalstring:");

puts(s);

fun(s);

printf("Thestringafterdeleted:");

puts(s);

printf("\n\n");

}

39.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函數(shù)fun()的功能是:刪除數(shù)列中值為X的元素。N中存放的是數(shù)列中元素的個數(shù)。

請改正程序中的錯誤,使它能夠得出正確的結(jié)果。

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

試題程序:

#include<stdio.h>

#defineN20

fun(int*a,intn,intx)

{intp=0,i;

a[n]=x;

while(x!=a[p])

p=p+1;

if(p==n)return-1;

else

{for(i=p;i<n;i++)

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

a[i+1]=a[i];

returnn-1;

}

}

main()

{intw[N]={-3,0,1,5,7,99,10,15,30,90},

x,n,i;

n=10;

printf("Theoriginaldata:\n");

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

printf("\nInputx(todelete):");

scanf("%d",&x);

printf("Delete:%d\n",x);

n=fun(w,n,x);

if(n==-1)printf("***Nobefound!

***\n\n");

else

{printf("Thedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%5d",

w[i]);printf("\n\n");

}

}

40.以下程序可把輸入的十進制數(shù)以十六進制數(shù)的形式輸出。

請在橫線上填上適當?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。

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

試題程序;

main()

{

charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

scanf("%ld",&n);

do{

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

c[i]=______;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

for(--i;i>=0;--i)

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

{d=c[i];printf("%c",b______);}

printf("\n");

}

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:求S的值。

例如,當n為100時,函數(shù)的值應(yīng)為1.566893。

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

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

試題程序:

42.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,j,x;

for(j=4;j>0;j--)

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

{x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

}

44.某學生的記錄由學號、8門課成績和平均分組成,學號和8門課的成績已在主函數(shù)中給出。請編寫fun()函數(shù),它的功能是:求出該學生的平均分放在記錄的ave成員中。請自己定義正確的形參。

例如,若學生的成績是85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)當是78.875。

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

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

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun()

{

}

main()

{

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);

inti;

fun(&s);

printf("The%s'sstudentdata:\n",s.num)//*輸出學號*/

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

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

/*輸出各科成績*/

printf("\nave=%7.3f\n",s.ave);

/*輸出平均分*/

}

參考答案

1.p=p*Ip=p/ip=p*I\r\np=p/i解析:本題中,欲求p的值,需要先求m,n,m-n的階乘值,可用循環(huán)語句實現(xiàn)。

2.2002Shanxian2002Shanxian解析:本題中第一個if語句將結(jié)構(gòu)體變量a.name和結(jié)構(gòu)體變量b.name中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量c.name和結(jié)構(gòu)體變量d.name較大的那個賦給結(jié)構(gòu)體變量d。通過函數(shù)strcmp比較。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標準是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。本程序中第一個if語句strcmp(a.name,b.name)>0為真,故將b的值賦給d,第二個if語句strcmp(c.name,d.name)>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此d.sno和p->name的值為2002Shangxian。

3.XX解析:程序是從鍵盤緩沖區(qū)循環(huán)接收字符,并輸出接收到的字符在ASCII碼表中的前一個字符,直到接收到‘?’為止。

4.22

5.br[i]或*(br+i)br[i]或*(br+i)解析:求最大值算法要求輸入的一般是一系列數(shù),例如一個數(shù)組,而輸出只有一個值。計算時通常的做法是,首先將這一系列數(shù)的笫1個值保存到結(jié)果變量中,然后用一個指針或循環(huán)變量從頭(或從第2個值)至尾遍歷這一系列數(shù),每次比較結(jié)果變量和被遍歷的值,如果該值比結(jié)果大,則將該值保存到結(jié)果中。本題中,3行4列二維數(shù)組a顯然是算法的輸入值,而傳給函數(shù)fun()的3和4在函數(shù)中起到限制循環(huán)次數(shù)的作用,所以它們代表輸入數(shù)據(jù)的行列數(shù).而傳遞給函數(shù)的一維數(shù)組b即沒有初始化,最后又要輸出它,所以數(shù)組b肯定是用來保存每行的最大值。在函數(shù)中是一個二重循環(huán),外循環(huán)首先將ar[i][0]賦給x,然后內(nèi)循環(huán)中比較x和ar[il剛,若x比較小就讓x=ar[i][j],這就說明x是保存結(jié)果的臨時變量.最后應(yīng)該將x的值輸出到數(shù)組b中,也就是形參br的相應(yīng)位置。故在空格處應(yīng)該填的內(nèi)容為br[i]或者寫成指針方式*(br+i)。

6.c1!==''&&c2==''

7.33解析:本題考查do…while語句形式:

do循環(huán)體

while表達式

首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。第1次循環(huán):b+=2,b=2,a-=2+b,a=11;第2次循環(huán):b=4,a=5;第3次循環(huán):b=6,a=-3,此時再判斷循環(huán)條件不滿足,退出循環(huán)。

8.fopenfopen解析:C語言中的文件分為:ASCII文件與二進制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen(“文件名”,“使用文件方式”);關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp);其中fp為文件指針。

9.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個程序中a、b、c的值沒做任何改變。

10.概念數(shù)據(jù)模型概念數(shù)據(jù)模型

11.A

12.Bfun函數(shù)的功能是獲取2個數(shù)的平均值,注意平均值是整型數(shù),小數(shù)會被截斷。調(diào)用函數(shù)“fun(2*4,fun(5,6))”相當于調(diào)用函數(shù)“fun(8,5)”,平均值是6。故本題答案為B選項。

13.C解析:“p”是指針變量,指向一個地址:“*p”,為p指針所指向地址的內(nèi)容。

14.D本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

15.D解析:在if后面只能有一條語句,或一條復(fù)合語句,即用花括號將多條語句括起來。選項D)中沒有將兩條語句括起來,不能看成一條語句。

16.C本題考查三目運算符a<b?a:c<d?c:d也可寫成a<b?a:(c<d?c:d),所以根據(jù)優(yōu)先級,先算括號內(nèi)的,c小于d為真取C的值,再看a小于b為假,所以取C的值。

17.A解析:在C語言中,應(yīng)當在定義函數(shù)時指定函數(shù)值的類型。凡不加類型說明的函數(shù),默認按整型處理。在定義函數(shù)時對函數(shù)值說明的類型一般應(yīng)該和return語句中的表達式類型一致。如果函數(shù)值的類型和return語句中的表達式類型不一致,則以函數(shù)值的類型為準,由系統(tǒng)自動進行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。

18.B

19.B解析:在main函數(shù)中定義了一個structabc類型的數(shù)組,同時分別利用{1,2,3}及{4,5,6}對數(shù)組中兩個元素進行初始化。在該結(jié)構(gòu)體,依次對其中的a,b,c三個變量進行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。

20.C解析:選項A的意思是:在x>O情況下,y為1,否則,在x=O時,y為0,剩下x<O時,y為-1,滿足本題中函數(shù)的要求。選項B描述的意思是:初始化y的值為0,在x>O時,給y重新賦值為1,否則,在x<O時,給y重新賦值為-1,滿足本題中函數(shù)的要求。選項C描述的意思是:在x>=0情況下,如果x>O,則y為1,否則,即x==0時,y為-1;剩下的x<O時,y為0??梢姶鸢窩實現(xiàn)的結(jié)果不是給定的表達式。選項D中描述的意思是:在x>=0的情況下,如果x>O,就給y賦值為1,否則即x==0時給y賦值為0,在不是x>=0的其他情況下,就給y賦值為-1,滿足本題中函數(shù)的要求。所以4個選項中C為所選。

21.

【解析】題目中要求把下標從p到n-1的數(shù)組元素平移到數(shù)組的前面,可以通過每一次循環(huán)將最后一個元素放在第一個位置上,使其成為第一個元素,其余元素后移一個位置。通過n-1-p次循環(huán)實現(xiàn)將從p到n-1的數(shù)組元素平移到數(shù)組的前面。

22.

【解析】根據(jù)題目中要求刪除字符串中所有的*號,需要檢查字符串中的每一個字符,將不是*號的字符放入原來的字符串中,形成新的字符串,最后在新的字符串的末尾加上結(jié)束符。

23.\n#include'stdio.h'

\nmain

\n{inti,j,a[10];

\nfor(i=1;i<=10;i++)

\nscanf('%d',&a[i]);

\nfor(i=0;i<9=;i++)

\nfor(j=9;j>i;j--)

\nif(a[j-1]{t=a[j-1];

\na[j-1]=a[j];

\na[j]=t;}

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

\nprintf('%d',a[i]);

\n}

\n24.

【考點分析】

【解題思路】

本題用兩個循環(huán)完成操作,第1個循環(huán)的作用是求出第1個字符串的長度,即將i指到第1個字符串的末尾。第2個循環(huán)的作用是將第2個字符串的字符連到第1個字符串的末尾。

25.

【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素數(shù)。然后將一個素數(shù)放入數(shù)組aa中,最后將素數(shù)的個數(shù)返回給主函數(shù)。

26.

【解析】要求該學生的平均成績,首先要求出其各科成績之和,然后求出其平均成績并放在成員變量ave中。

27.voidfun(inta[][n]){ inti,j; for(i=0;i<=""p=""> for(j=0;j<=i;j++) a[i][j]=0; /*將數(shù)組下三角元素中的值全部置成0*/}對于N×N二維數(shù)組,表示其下三角元素,可以通過以下語句實現(xiàn)。for(i=0;i<n;i++)<p=""></n;i++)<>\tfor(j=0;j<=i;j++)外層循環(huán)用來控制矩陣的行下標,內(nèi)層循環(huán)用來控制矩陣的列下標。注意列下標的取值范圍,因為要表示下三角元素,所以j的范圍是0~i。

28.\n#include”stdio.h”

\nmain

\n{intI,n;

\nfor(n=0,I=1900;I<=2000;I++)

\n{if(I%4==0I0!=0||I@0==0)

\n{printf(“%d”,I);n++;}

\nif(n%3==0)

\nprintf(“\\n”);}}}

\n

29.

30.

31.(1)錯誤:doublefun(doubleq)正確:doublefun(intq)(2)錯誤:s=s+(n+1)/n;正確:s=s+(double)(n+1)/n;(3)錯誤:returns;正確:returnt;(1)錯誤:doublefun(doubleq)正確:doublefun(intq)\r\n(2)錯誤:s=s+(n+1)/n;正確:s=s+(double)(n+1)/n;\r\n(3)錯誤:returns;正確:returnt;解析:該程序中多次出現(xiàn)了函數(shù)調(diào)用過程中定義混亂的錯誤,關(guān)于類似問題,我們在前面的試題中已經(jīng)做過比較詳細的解釋,主要是對基礎(chǔ)知識的把握。在這里我們再對函數(shù)調(diào)用規(guī)則做一簡單說明。

C語言規(guī)定,在以下幾種情況下可以不在調(diào)用函數(shù)前對被調(diào)用函數(shù)做類型說明。

(1)如果函數(shù)的值(函數(shù)的返回值)是整型或字符型,可以不必進行說明,系統(tǒng)對它們自動按整型說明。但為清晰起見,建議都加以說明為好。

(2)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,可以不必加以說明。因為編譯系統(tǒng)已經(jīng)先知道了已定義的函數(shù)類型,會自動處理的。也就是說,將被調(diào)用的函數(shù)的定義放在主調(diào)函數(shù)之前,就可以不必另加類型說明。

(3)如果已在所有函數(shù)定義之前,在文件的開頭,在函數(shù)的外部已說明了函數(shù)類型,則在各個主調(diào)函數(shù)中不必對所調(diào)用的函數(shù)再做類型說明。

除了以上3種情況外,都應(yīng)該按上述介紹的方法對所調(diào)用函數(shù)的返回值做類型說明,否則編譯時就會出現(xiàn)錯誤。

32.(1)錯誤:fun(intk)正確:doublefun(intk)(2)錯誤:returns正確:returns;(1)錯誤:fun(intk)正確:doublefun(intk)\r\n(2)錯誤:returns正確:returns;解析:這樣一道數(shù)學題要是用C程序來實現(xiàn),真的挺簡單,但我們還是需要注意細節(jié)問題上出的錯誤,該題便是如此。一個是簡單的函數(shù)調(diào)用的定義,另一個是語法錯誤。

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

34.(1)錯誤:fun(intn)正確:doublefun(intn)(2)錯誤:returnsum正確:returnsum;(1)錯誤:fun(intn)正確:doublefun(intn)\r\n(2)錯誤:returnsum正確:returnsum;解析:ANSI新標準允許使用這樣一種方法對形參類型做說明,即在列出“整型表列”時,同時說明參數(shù)類型。如:

intmax(intx,inty)

{...}

相當于:

intmax(x,y)

intx,y;

{...}

又如:

floatfun(array,n)

intarray[10],n;

可以寫成

floatfun(intarray[10],intn)

35.intfun(intnintxx[][])改為intfun(intnintxx[][M))printf("%fxx[i][j]);改為printf("%d"xx[i][j]);intfun(intn,intxx[][])改為intfun(intn,intxx[][M))\r\nprintf('%f,xx[i][j]);改為printf('%d,'xx[i][j]);解析:二維數(shù)組作為函數(shù)形參時,二維長度不可缺省,只能省略一維的長度。在格式輸出函數(shù)中,血型數(shù)據(jù)輸出時對應(yīng)的控制符是%d.

36.錯誤:t[i]=s[s1-1];正確:t[i]=s[s1-1-i];錯誤:t[i]=s[s1-1];正確:t[i]=s[s1-1-i];解析:該題也是幾個循環(huán)語句的嵌套使用,難度并不大,重要的足要讀懂程序,題目中賦值語句t[i]=s[]s1-1;并不能完成累計循環(huán),所以正確的應(yīng)該是t[i]=s[s1-1-i];。

37.(1)錯誤:{t=a;b=a;a=t;}正確:{t=a;a=b;b=t;}(2)錯誤:return(a);正確:return(b);(1)錯誤:{t=a;b=a;a=t;}正確:{t=a;a=b;b=t;}\r\n(2)錯誤:return(a);正確:return(b);解析:若求兩個數(shù)的最大公約數(shù),如果b除a的非零余數(shù)能夠整除a,那么該余數(shù)就是最大公約數(shù);若余數(shù)為0,則最大公約數(shù)為a。該題程序中采用了循環(huán)語句,若b除以a的余數(shù)不等于0,則繼續(xù)用a除以所得余數(shù),直至余數(shù)為0,如此可以得到a,b的最大公約數(shù)。關(guān)于“交換原則”我們在前面已經(jīng)講述過了,這里就不再贅述。

38.(1)錯誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\0';i++)(2)錯誤:s[j]=

溫馨提示

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

最新文檔

評論

0/150

提交評論