2022年福建省宁德市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2022年福建省宁德市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2022年福建省宁德市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2022年福建省宁德市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2022年福建省宁德市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年福建省宁德市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、2.填空题(10题)1.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

2.软件是程序、数据和【】的集合。

3.有以下程序:

voidswap1(intc[])

{intt;

t=c[0];c[0]=c[1];c[1]=t;

}

voidswap2(intc0,intc1)

{intt;

t=c0;c0=c1;c1=t;

}

main()

{inta[2]={3,5},b[2]={3,5};

swaplA);swap2(b[0],b[1]);

printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);

}

其输出结果是【】。

4.以下程序的功能是输出字符串。请填空。

main()

{char*a[]={"Pascal","Clanguage","dbase","Cobol"};

char【】;

intj=0;

p=a;

for(;j<4;j++)

print{("%s\n",*【】);

}

5.以下程序的功能是:输出x、y、z三个变量中的最大值,请填空。

main()

{intx,y,z,u;

printf("Enterx,y,x;");scanf("%d%d%d",&x,&y,&z);

if(【】)u=x;

elseu=y;

if(【】)u=z;

printf("u=%d",u);

}

6.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);}

7.一个模块直接调用的其他模块的模块个数称为______。

8.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。

#include<stdio,h>

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

prinff("\n");

}

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

{inti,j,x;

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

{x=ar[i][0];'

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

【】=x;

}

}

9.度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。

10.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotade(inta[][N],intb[][N])

{intI,j;

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

{b[I][N-1]=【】;【】=a[N-1][I];}}

二、单选题(10题)11.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

12.

13.下列程序的输出结果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

14.栈和队列的共同特点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

15.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

printf("%d\n",x++);

}

程序的运行结果是

A.A.331

B.41

C.2

D.1

16.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.退出Windows后重新启动计算机

D.终止当前应用程序的运行

17.以下有关宏的描述不正确的是()。

A.宏定义不做语法检查B.双引号中出现的宏名不进行替换C.宏名无类型D.宏名必须用大写字母表示

18.

19.下列4项说法中,不正确的是______。

A.数据库减少了数据冗余B.数据库中的数据可以共享C.数据库避免了一切数据的重复D.数据库具有较高的数据独立性

20.有以下程序:#include<stdio.h>voidexch(intt[]){t[0]=t[s];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%dl"x[i]);printf("\n");}程序运行后输出的结果是()。A.246810B.13579C.12345D.678910

三、程序设计题(10题)21.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),它的功能是求小于形参n同时能被3与7整除的所有自然数之和的平方根,并将其作为函数值返回。例如,若n为1000时,程序输出应为s=153.909064。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

22.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串“World”,然后输入3,则调用该函数后的结果为“Word”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn){}voidmain(){ charstr1[LEN],str2[LEN]; intn; system(“CLS”); printf(“Enterthestring:\n”); gets(str1); printf(“Enterthepositionofthestringdeleted:”); scanf(“%d”,&n);fun(str1,str2,n); printf(“Thenewstringis:%s\n”,str2);}

23.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为:

WWW

SSS

HHH

III

则字符串中的内容应是WSHIWSHIWSHI。

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

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。

试题程序:

24.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将ss所指字符串中所有下标为奇数的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*ss){}voidmain(void){ chartt[51]; printf(“\nPleaseenterancharacterstringwithin50characters:\n”); gets(tt); printf(“\n\nAfterchanging,thestring\n%s”,tt); fun(tt); printf(“\nbecomes\n%s”,tt);}

25.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符为l,则输出3。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

26.编程计算下列表达式:s=n!(n从键盘上输入)

27.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为70,则程序输出:

7111421222833354244495556636670

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

请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行输出20个数

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

28.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是将a中的十位数和个位数依次放在变量c的百位和个位上,b中的十位数和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数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);}

29.编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串的后面。

例如,分别输人下面两个字符串:FirstString——SecondString

程序运行后的输出结果是:FirstString————SecondString

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

30.M名学生的成绩已在主函数中放人一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

四、2.程序修改题(10题)31.下列给定程序中,函数fun()的作用是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入“edS,dAd”,则输出“EDS,DAD”。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#include<string.h>

#include<conlo.h>

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

charfun(chartt[])

{

inti;

for(i=0;tt[i];i++)

{

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

if((tt[i]>='A')&&(tt[i]<='2'))

tt[i]-=32;

}

return(tt);

}

main()

{

inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringiS:/n%s",fun(tt));

}

32.给定程序MODll.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。

例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:“ABCDDCBA”。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

33.给定程序MODll.C中函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

34.给定程序MODll.C中fun函数的功能是:求出以下分数序列的前n项之和。

和值通过函数值返回main函数。

例如,若n=5,则应输出:8.391667。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

35.下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。

请改正函数fun()中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

intfun()

{

inta[3][3],mu1;

inti,j;

mu1=l;

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

{

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

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

scanf(“%d”,&a[i][j]);

}

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

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

mu1=mu1*a[i][j];

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

}

main()

{

fun();

}

36.下列给定程序中,函数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));

}

37.下列给定程序中,函数fun()的功能是:计算整数n的阶乘。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

doublefun(intn)

{

doubleresult=l.0;

whil(n>l&&n<170)

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

result*=--n;

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

return;

main()

{int.n;

clrscr();

printf("Enteraninteger:");

scanf("%d",&n);

printf("\n\n%d!=%lg\n\n",n,fun(n));

}

38.下列给定程序中,函数fun()的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为195.838745,在平均值以上的实数个数应为5。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(floatx[],intn)

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

ihtj,c=0;floatxa=0.0;

for(j=0;j<n;.j++)

xa+=x[j]/n;

printf("ave=%f\n",xa);

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

if(x[j]>=xa)

c++;

returnc;

}

main()

{floatx[l00]={193.199,195.673,195.757,

196.051,196.092,196.596,

196.579,196.763};

clrscr();

printf("%d\n",fun(x,8));

}

39.下列给定程序中,函数fun()的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为6250

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

longfun(intx,inty,long*p)

{inti;

longt=1;

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

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

t=t*x;

*p=t;

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

t=t/1000;

returnt;

}

main()

{longt,r;intx,y;

printf("\nInputxandy:");scanf

("%1d%1d",&x,&y);

t=fun(x,y,&r);

printf("\n\nx=%d,y=%d,r=%1d,last=

%1d\n\n",x,y,r,t);

}

40.给定程序MODll.C中函数fun的功能是:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。

例如,若n=5,则应输出:8.391667。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

五、程序改错题(2题)41.下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,则应输出0.000162。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

42.下列给定程序中,函数proc的功能是找出100~m(m不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值

返回。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#defineM1000

intproc(int*S.intn)

{

inti,j,k,a,b,c;

j=0;

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

{

//****found****

k=n:

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

//****found****

s[j]=i:

}

returnj;

}

voidmain

{

inta[M],m,num=0,i;

do

{

printf("\nEnterm(<=1000):");

scanf("%d",&m);

}

while(m>1000);

num=proc(a,m);

printf("\n\nTheresult:\n");

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

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

printf("\n\n");

}六、操作题(2题)43.以下程序的输出结果是【】。

main()

{charc='z';

printf("%c",c-25);}

44.fun1函数的功能是将3个整数按由大到小的顺序调整后依次放入a、b、c3个变量中,a中放最大数,fun2函数的功能是交换两个变量中的值。补足所缺语句。

fun2(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

fun1(int*p1,int*p2,int*p3)

{if(*p3>*p2)fun2(*P2,*p3);

if(*p1<*p3)fun2(______);

if(*p1<*p2)fun2(______);

}

main()

{inta,b,c;

scanf("%d%d%d",&a,&b,&c);

fun1(&a,&b,&c);

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

}

参考答案

1.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。

2.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

3.53355335解析:函数swap1的形参是数组,故形参的改变能够影响实参,所以执行完swap1(a)后,a[0]=5、a[1]=3;函数swap2的形参是简单变量,故形参的改变不能够影响实参,所以执行完swap2(b)后,b[0]=3、b[1]=5;正确答案为5335。

4.**p(p+i)

5.x>yz>u

6.C

7.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。

8.br[i]或*(br+i)br[i]或*(br+i)解析:程序中的数组a是一个3行4列的二维数组,一维数组b用于存放每行的最大数。在函数fun中,通过二重for循环求每行的最大数,外层for循环用于控制行数,内层for循环用于控制列数,当外层循环执行一次时,内层循环则从一行的4个数中找出最大数x,然后将最大值x赋给数组br,故空格处应填br[i]或*(br+i)。

9.4545解析:对于长度为N的线性表,在最坏情况下(即线性表中元素现在的顺序与目标顺序正好相反),冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2。

10.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,\ue008b[I][0]=a[N-1][I]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。

11.A执行x=x-=x-x语句可写成x=x-(x-x),可看出结果为10,故八选项正确。

12.A

13.D

14.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。

15.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。

16.D

17.D解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串.标识符称为宏名,无类型;②双引号中出现的宏名不替换;③宏名的定义通常用大写字母,但不是必须用大写;④宏定义不是赋值语句,不做语法检查。

18.A

19.C解析:数据库系统具有以下4个特点:数据的集成性、数据的高共享性与低冗余性、数据的独立性、数据统一管理与控制。

20.D本题中exch函数是用数组中的第6个元素对第1个元素进行赋值,所以数组的值应该为678910。21.1doublefun(intn)doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);本题考查算术运算的算法。首先利用一个for循环判断小于n且能同时被3和7整除的整数,并将满足条件的整数累加到sum。之后调用Sqrt()函数计算sum的平方根,并将其作为函数的返回值返回。22.voidfun(chara[],charb[],intn){ inti,k=0; for(i=0;a[i]!=‘\0’;i++) if(i!=n) /*将不是指定下标的字符存入数组b中*/ b[k++]=a[i]; b[k]=‘\0’; /*在字符串最后加上字符串结束标志*/}本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留。所以if语句条件表达式为“i!=n”。字符串最后不要忘记加上字符串结束标志‘\\0’。

23.

(2)错误:if(*r==0)

正确:if(*r==ˊ\0ˊ)

【解析】由于后面的语句控制变量r是指向字符串t的指针,而不是指向字符串str的指针,因此,“r=p;”应改为“r=t;”。while循环结束后,如果r指向字符串t的结束符,证明字符串str中包含一个t字符串,因此,“if(*r=0)”应改为“if(*r==ˊ\0ˊ)”。

24.voidfun(char*ss){ inti; for(i=0;ss[i]!=‘\0’;i++)/*将ss所指字符串中所有下标为奇数的字母转换为大写字母*/ if(i%2==1&&ss[i]>=‘a’&&ss[i]<=‘z’) ss[i]=ss[i]-32;}将指定字符串中奇数位置的字母转换为大写字母,首先需要判断奇数位置,再判断该位置字符是不是小写字母,如果是小写字母,则将小写字母转换为大写字母。字母大小写转换操作中,只要将小写字母的ASCII值减去32即可转换为大写字母。25.

【考点分析】

本题考查:for循环语句遍历字符串,并通过if条件语句,判断字符串是否结束。

【解题思路】

从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是‘\0’,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。26.\n\t#include'stdio.h'

\nmain

\n{longt=1;

\ninti;

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

\nt=t*i;

\nprintf('%ld',t);}

\n27.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=1;i<=m;i++)//进行m次循环

\nif(i%7==0||i%11==0)//能被7或11整除的所有整数

\na[j++]=i;//符合条件的数放在数组a中

\n*n=j;//返回这些数的个数

\n}

\n【解析】本题需要先判断1~m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。\n28.voidfun(inta,intb,long*c){/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位数,b/10获取b的十位数*/ *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}本题主要考核如何取出变量a和b的个位数和十位数,取出后如何将其表示成c中相应的位数。由于变量a和b都是只有两位的整数,因此分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。将得到的数对应乘以1000、100、10、1,即可得到c的千位数、百位数、十位数、个位数。注意使用变量c时要进行指针运算。29.

voidfun(charpl[],charp2[])

in“,j;

for(i=0;pl[i]f=。、0’;i++);

for(j=0;p2[j]!=。、0’;j++)p1[i++]=p2[j];

p1[i],_。、0’;}

【考点分析】“

本题考查:不使用字符串函数实现字符串连接操作。通过for循环语句来完成,不要忘了最后需要加上字符串结束标识‘、0’。

【解题思路】

本题用两个循环完成操作,第1个循环的作用是求出第1个字符串的长度,即将i指到第1个字符串的末尾。第2个循环的作用是将第2个字符串的字符连到第l个字符申的末尾。最后在第l个字符串的结尾加上字符串结束标识‘、0’。

30.

【解析】要找出学生的最高分,就要比较所有学生的成绩。定义一个变量max用来存放学生的最高分,初始化为第一个学生的成绩,依次与其后的学生成绩相比较,最后将得到的最高分返回主函数。

31.(1)错误:charfun(chartt[])正确:char*fun(chartt[])(2)错误:if((tt[i]>=‘A’)&&(tt[i]<=‘Z’))正确:if((tt[i]>=‘a’)&&(tt[i]<=‘z’))(1)错误:charfun(chartt[])正确:char*fun(chartt[])\r\n(2)错误:if((tt[i]>=‘A’)&&(tt[i]<=‘Z’))正确:if((tt[i]>=‘a’)&&(tt[i]<=‘z’))解析:错误1:函数的返回值是字符串的首地址,是指针类型,所以在函数名前要加'*'号。错误2:题目要求将小写字母改为大写字母,所以if语句的判断条件是小写字母。

32.(1)voidfun(char*schar*t)(2)t[2*d]=‘\0’;(1)voidfun(char*s,char*t)(2)t[2*d]=‘\0’;解析:本题中函数的功能是将字符串的正序和反序进行连接。题目中首先由字符串的起始位置正序取字符,然后再由串尾逆序取字符,实现正序和逆序的连接。

33.(1)t=(STU*)calloc(sizeof(sTu)m);(2)t[k]=b[j];(1)t=(STU*)calloc(sizeof(sTu),m);(2)t[k]=b[j];解析:本题中函数的功能是按学习成绩从高到低的顺序找出前m(m≤10)名学生。利用循环结构实现对定义的结构体中的成绩域进行排序。

34.(1)doublefun(intn)(2)c=a;a+=b;b=c;(1)doublefun(intn)(2)c=a;a+=b;b=c;解析:本题中函数的功能是求出分数序列的前n项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子是前一项分子和分母的和。

35.(1)错误:for(i=0;j<3;j++)正确:for(j=0;j<3;j++)(2)错误:mu1=mu1*a[i][j];正确:mu1=mul*a[i][i];(1)错误:for(i=0;j<3;j++)正确:for(j=0;j<3;j++)\r\n(2)错误:mu1=mu1*a[i][j];正确:mu1=mul*a[i][i];解析:错误1:循环结构中,要给变量j赋初值0。错误2:主对角元素的行号和列号相等,所以参加乘法的是a[i][i],而不是a[i][j]。

36.(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,如果循环累加按for(i=2;i<n;i++)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论