2021年河北省邢台市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021年河北省邢台市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021年河北省邢台市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021年河北省邢台市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021年河北省邢台市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

2021年河北省邢台市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、2.填空题(10题)1.设有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的输出结果是【】。

2.数据的逻辑结构有线性结构和______两大类。

3.以下程序运行后输入3,abcde<回车>,则输出结果是【】。

#include<string.h>

move(char*str,intn)

{chartemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{chars[50];intn,i,z;

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

z=strlen(S);

for(i=1;i<=n;i++)move(s,z);

printf("%s\n",s);

}

4.数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。

5.深度为5的满二叉树中,叶子结点的个数为______。

6.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

printf("i=%d,j-%d\n",i,j);

}

要求给i赋10,给j赋20,则应该从键盘输入______。

7.下列程序的输出结果【】。

#definePR(ar)printf("ar=%d",ar)

main()

{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;

for(j=3;j;j--)

switch(j)

{case1:

case2:PR(*p++);break;

case3:PR(*(--p));}}

8.若x为int类型,请写出与!x等价的C语言表达式______。

9.以下程序运行后的输出结果是【】。

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%",n[i]);

}

10.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。

二、单选题(10题)11.

12.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。

A.O(1)B.O(log2n)C.O(n)D.O(n2)

13.以下不完整的程序拟实现调用getmax函数,找出4个变量中最大的一个:#include<stdio.h>intgetmax(intx,inty){returnx>yx:y;}voidmain(){inta,b,c,d,mx;scanf(“%d%d%d%d”,&a,&b,&c,&d);printf(“max=%d\n”,________);}以下选项若填入下划线处,不能实现上述功能的是()。

A.getmax(getmax(getmax(a,b),c),d)

B.getmax(getmax(a,b),getmax(c,d))

C.getmax(a,getmax(b,getmax(c,d)))

D.mx=(getmax(a,b),getmax(c,d))

14.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

15.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。

A.334HB.30DHC.352HD.31AH

16.有以下程序

#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

17.下列叙述中正确的是()。

A.只能在循环体内和switch语句体内使用break语句

B.eotinue语句的作用是结束整个循环的执行

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用got0语句

18.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

printf("%s,%s\n",ss,aa);

}

程序运行结果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

19.有以下程序: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);swapl(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其输出结果是

A.5353B.5335C.3535D.3553

20.设x,y,t均为int型变量,执行语句:

x=y=3;

t=++x||++y;

完成后,y的值为A.A.不确定B.4C.3D.1

三、程序设计题(10题)21.编写函数fun,其功能是:将所有大于1小于整数m的非素数存人XX所指数组中,非素数的个数通过k返回。

例如,若输入17,则应输出:46891012141516。注意:部分源程序在文件PROGl.C中。

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

22.使用VC++2010打开考生文件夹下析prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。例如,当n=10,x=0.3时,函数值为1.349859。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

23.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。

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

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

24.

25.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为70,则程序输出:7111421222833354244495556636670注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(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");}elseprintf("%4d",arr[k]);printf("\n");}

26.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

27.请编写fun()函数,其功能是:计算并输出3~m所有素数的平方根之和。例如,若主函数从键盘给m输入50后,则输出为s=63.665791。注意:m的值要大于2但不大于l00。部分源程序给出如下。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

28.请编写一个函数,用来删除字符串中的所有空格。例如,输入abcdefgh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

29.

30.编程将文件read.txt中的字符读出显示到屏幕上。

四、2.程序修改题(10题)31.给定程序MODll.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。

例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625)。

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

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

32.给定程序MODll.C中函数fun的功能是:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。

例如,7的5次方是16807,其低3位数的和值是15。

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

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

33.下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。

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

例如,若输入5,则应输出0.783333。

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

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

试题程序:

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

}

34.已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数fun()的功能是:计算并输出该数列前。项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序的输出结果应为23.197745。

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

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

试题程序:

#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.给定程序MODll.C中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。

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

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

36.下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为7654321时,t中的数为642。

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

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

试题程序:

#include<stdio.h>

#include<conio.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;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

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

}

37.下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun()函数之前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGH。

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

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

试题程序:

#include<stdio.h>

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

fun(char*p)

{charmax,*q;inti=0;

max=p[i];

while(p[i]!=0)

{if(max<p[i])

{

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

p=q+i;max=p[i];

}

i++;

}

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

while(q<p)

{*q=*(q-1);

q--;

}

p[0]=max;

}

main()

{charstr[80];

printf("Enterastring:");gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf("\nThestringaftermoving:");

puts(str);printf("\n\n");

}

38.给定程序MODll.C中函数fun的功能是:统计substr所指子字符串在str所指字符串中出现的次数。

例如,若字符串为aaaslkaaas,子字符串为as,则应输出2。

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

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

39.给定程序MODII.C中fun函数的功能是:根据整型形参m,计算如下公式的值。

例如,若主函数中输入5,则应输出-0.283333。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。

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

40.下列给定程序中,函数fun()的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中,例如:把3个串abc,CD,EF串联起来,结果是abcCDEF。

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

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

试题程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

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

intfun(charstr[][10],intm,char*pt)

{intk,q,i,j=0;

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

{q=strlen(str[k]);

j+=q;

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

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

pt[i]=str[k,i];

pt+=q;

pt[0]=0;

}

pt-=j;

}

main()

{intm,h;

chars[10][10],p[120];

clrscr();

printf("\nPleaseenterm:");

scanf("%d",&m);gets(s[0]);

printf("\nPleaseenter%dstring:In",m);

for(h=0;h<m;h++)gets(s[h]);

fun(s,m,p);

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

}

五、程序改错题(2题)41.下列给定程序的功能是:读入一个整数n(2<=n<=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出:2,617。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

{

intj,P;

p=1;

//****found****

for(j=2;j<m;j++)

if!(m%j)

{

p=0;

break;

}

return(p);inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

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

if((!(n%i))&&(Prime(i)))

printf("%4d,",i);

printf("\n");

}

42.下列给定程序中,函数fun()的功能是按以下递归公式求函数值。例如,当给n输入3时,函数值为60;当给n输入6时,函数值为480。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、操作题(2题)43.使用VC++打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是求出s所指字符串中最后一次出现的t所指字符串的地址,并将此地址通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时,输出结果应是“abcdx”。当字符串中的内容为“abcdabfabcdx”,t中内容为“abd”时,则程序输出未找到信息“Notfound!”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#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.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。

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

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

参考答案

1.16

2.非线性结构非线性结构

3.cdeabcdeab解析:本题move()函数的作用,是将形参s仕所指地址的连续n位循环右移1位,即让str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函数中用了一个for循环调用move()函数,共循环3次,所以数组s被循环右移了3位,故最后输出的值为cdeab。

4.共享性共享性解析:数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。

5.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。

6.i=0j=20i=0j=20解析:本题考核的知识点是scanf()数的使用.该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。

7.ar=9ar=9ar=11ar=9ar=9ar=11解析:本题综合考查了for循环,switch语句及宏替换等几个知识点。j=3时,执行PR(*(--p));输出数组元素a[4]的值;j=2时,执行PR(*p++);取出p所指位置的元素a[4],然后p++;当j=1时,执行PR(*p++);取得是数组元素a[6]的值11。

8.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。

9.1371513715解析:本题中数组n有5个元素且初值为0,以下为for循环的执行过程。

第1次循环:循环前i=1,执行循环语句n[1]=n[1-1)*2+1=n[0]*2+1=1,输出1;

第2次循环:循环前i=2,执行循环语句n[2]=n[2-1)*2+1=n[1]*2+1=1*2+1=3,输出3;

第3次循环:循环前i=3,执行循环语句n[3]=n[3-1]*2+1=n[2]*2+1=3*2+1=7,输出7;

第4次循环:循环前i=4,执行循环语句n[4]=n[4-1)*2+1=n[3]*2+1=7*2+1=15,输出15;

所以程序的运行结果为:13715。

10.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。

11.A

12.C

13.Dgetmax函数接收两个整型变量x、y,使用条件运算符返回x和y中的较大值。main函数首先输入a、b、c、d4个整数值,然后通过调用getmax函数,输出它们的最大值。假设x、y是整数,选项A中,首先执行“getmax(a,b)”,返回a、b中的较大值X,再执行“getmax(x,c)”,返回x、c中的较大值y,最后执行“getmax(y,d)”,返回y、d中的较大值,满足题意,正确;选项B中,首先执行“getmax(a,b)”,返回a、b的较大值X,再执行“getmax(c,d)”,返回c、d中的较大值y,最后执行“getmax(x,y)”,返回x、y中的较大值,正确;选项C中,首先执行“getmax(c,d)”,返回c、d的较大值X,再执行“getmax(b,x)”,返回b、x中的较大值y,最后执行“getmax(a,y)”,返回a、y中的较大值,正确;选项D中,首先执行“getmax(a,b)”,返回a、b的较大值X,再执行“getmax(c,d)”,返回c、d中的较大值y,最后执行逗号表达式“(x,y)”,返回值为7,不满足题意。故本题答案为D选项。

14.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

15.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。

16.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。

17.A本题考查循环跳出的知识点:①break语句可以出现在switch循环体内及语句体内,它的作用是跳出循环体,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着判定循环条件是否成立,确定下一次循环是否继续执行,执行contiune语句不会使整介循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,可以使用90t0语句或者break语句。

18.D

19.B解析:本题中函数swapl()是传递的地址。所以对该形参c的改变将影响实参,分析可知该函数的作用,是使数组c的第一个元素和第二个元素的值互换。主函数中调用该函数将a作为实参传递给形参c,故执行该函数后a的第一个元素和第二个元素的值将交换。分别为5和3。函数swap2()是值传递的,所以该函数执行后对数组b将没有任何改变,此时该数组的第一个和第二个元素依然为3和5,因此最后的输出为5、3、3和5,所以,4个选项中选项B符合题意。

20.Ct=++x或++y,当++x不为0的时候,即++x为真,则不需要再继续判断++y,那么y就不再执行自加,因此y=3.21.

【考点分析】

本题考查:如何判断非素数;循环判断结构;数组的引用。

【解题思路】

题目要求将l—m之问的非素数存人数组中,应使用循环判断结构。循环语句用来遍历1一m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存人数组中。这道题目是考查—个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。

【解题宝典】

判定一个数是否为素数,即该数除了能被l和它本身外,不能被任何数整除。

代码实现为:

for(j=2;j<i;j++)if(i%j==0)/*如余数为0,证明i不是素数·/

此语句需要熟记,很多判断素数的题目也可通过此法解决。22.1doublefun(doublex,intn)2{3inti;4doubles=1.0,sl=1.0;5for(i=1/i<=n;i++)6{si=si*i;/*各项中的阶乘*/?s=s+pow(x,i)/si;/*按公式求出*/}Returns;10}程序定义了变量Sl和s,sl表示每项的分母(即各项的阶乘),S存放累加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作,将累加的结果存入S中。此处使用了求乘方函数pow(X,i),其含义是求X的i次方的值。23.

intfun(char*ss,charc)

inti=0;

for(;*ss!=’\0‘;ss++)if(}ss==c

i++/*求出*所指字符串中指定字符的个数*/

returni;

【考点分析】

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

【解题思路】

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

24.25.voidproc(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)//进行m次循环if(i%7==0||i%11==0)//能被7或11整除的所有整数a[j++]=i;//符合条件的数放在数组a中*n=j;//返回这些数的个数}【解析】本题需要先判断1~m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。

26.

【解析】要将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,可以首先通过行循环,然后列循环取出二维数组中的每一个元素,并将其放入一维数组中,最后将一维数组的长度通过形参返回到主函数当中。

27.

【解析】首先判断循环中n是否为素数,如果不是素数,求其平方根的累加和,并返回计算结果,否则跳出判断循环。其中,对于平方根的求解可以使用C语句中的sqrt()函数。

28.

【解析】根据题目中要求删除字符串中所有的空格,需要检查字符串中的每一个字符。将不是空格的字符放入原来的字符串中,形成新的字符串。在新的字符串的末尾加上结束符。

29.

30.\n#include'stdio.h'

\nmain

\n{intc;

\nFILE*fp;

\nfp=open('read.txt','r');

\nc=fgetc(fp);

\nwhile(c!=\\n)

\n{putchar(c);

\nc=fgetcr(fp);

\n}}

\nfclose;}\n

31.(1)t+=s[k];(2)*aver=ave;(1)t+=s[k];(2)*aver=ave;解析:该程序功能是统计出低于平均分的学生人数,首先求得平均分,然后再求得低于平均分的人数。从已给定源程序的main.主函数开始入手,printf语句中的fun(s,m,&aver)l调用函数实现题目中的要求。

32.(1)d=1;s=0;(2)d=d/10;(1)d=1;s=0;(2)d=d/10;解析:本题中函数的功能是计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。本题解题过程首先是求5次方,然后对结果进行截取以及求和。

33.(1)错误:intfun(intm)正确:doublefun(intm)(2)错误:for(i=1;i<m;i++)正确:for(i=2;i<=m;i++(1)错误:intfun(intm)正确:doublefun(intm)\r\n(2)错误:for(i=1;i<m;i++)正确:for(i=2;i<=m;i++解析:错误1:函数的返回值为实型数,所以应定义为double类型。错误2:根据题目的公式,参加运算的数应从2到m,包括m。

34.(1)错误:fun(intn)正确:doublefun(intn)(2)错误:returnsum正确:returnsum;(1)错误:fun(intn)正确:doublefun(intn)\r\n(2)错误:returnsum正确:returnsum;解析:ANSI新标准允许使用这样一种方法对形参类型做说明,即在列出“整型表列”时,同时说明参数类型。如:

intmax(intx,inty)

{...}

相当于:

intmax(x,y)

intx,y;

{...}

又如:

floatfun(array,n)

intarray[10],n;

可以写成

floatfun(intarray[10],intn)

35.(1)if(t==0)(2)*zero=count;(1)if(t==0)(2)*zero=count;解析:本题中函数的功能是统计一个无符号整数中各位数字值为0的个数。对无符号数进行截取,然后对每个数字进行判断并统计。

36.(1)错误:voidfun(longslongt)正确:voidfun(longslong*t)(2)错误:while(s<0)正确:while(s>0)(1)错误:voidfun(longs,longt)正确:voidfun(longs,long*t)\r\n(2)错误:while(s<0)正确:while(s>0)解析:本题考查函数调用方式和while循环语句中条件限制的方法。主函数中fun()的调用方式说明fun()函数的参数应当为指针类型,所以voidfun(longs,longt)正确的写法应该是voidfun(longs,long*t)。

37.(1)错误:fun(char*p)正确:voidfun(char*p)(2)错误:p=q+i;正确:q=p+i;(3)错误:while(q<p)正确:while(q>p)(1)错误:fun(char*p)正确:voidfun(char*p)\r\n(2)错误:p=q+i;正确:q=p+i;\r\n(3)错误

温馨提示

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

评论

0/150

提交评论