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

下载本文档

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

文档简介

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

一、2.填空题(10题)1.以下程序的运行结果是______。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

2.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{char*chp;

for(chp=b;*chp;chp+=2)printf("%s",chp);

printf("\n");

}

3.下列程序段中循环体的执行次数是______。

a=15;

b=0;

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

4.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

ptintf("%d\n",D);

执行后输出结果是______。

5.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

6.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

7.下面程序的运行结果是()。

#include<stdio.h>

#defineSlZE12

main()

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

}

}

8.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

9.数据流的类型有______和事务型。

10.已知字符'A'的ASCII码为65,以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

二、单选题(10题)11.以下不合法的用尸标识符是()。A.A.804zhangB._hhC.yy614D.If

12.

13.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为()。

A.aedfcbB.acfebdC.aebcfdD.aedfbc

14.设某文件内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为()

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

15.标准库函数fgets(str,n,fp)的功能是()。A.从fp所指的文件中读取长度不超过n-1的字符串存入指针str所指的内存

B.从fp所指的文件中读取长度为n的字符串存入指针str所指的内存

C.从fp所指的文件中读取n个字符串存入指针str所指的内存

D.从fp所指的文件中读取长度为n-1的字符串存入指针str所指的内存

16.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出的结果是A.11122B.12C.12020D.120

17.下列字符串是标识符的是()。

A.aaB.a-classC.intD.LINE1

18.下列标识符不是关键字的是()。

A.breakB.charC.SwithchD.return

19.现有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}则程序的输出结果为

A.21B.78C.23D.28

20.

三、程序设计题(10题)21.请编写函数voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数、不为1的各整数,并按从大到小的顺序放在PP所指的数组中,这些除数的个数通过形参n返回。

例如,若x的值为30,则有3个数符合要求,它们是15,5,3。

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

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

试题程序:

22.编写函数proc(),它的功能是求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

例如,m为100时,函数值应为s=7.416198。

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

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

试题程序:

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

24.请编一个函数voidproc(intttEM][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineM3#defineN4voidproc(intttrM3rN]。intpp[N]){ }voidmain{intstr[M][N]={{34,56,84,78},{23,84,93,12),{28,38,39,93}};intp[N],i,j,k;system("CLS");printf("Theriginaldatais:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%6d",str[i][j]);printf("\n");}proc(str,p);printf("\nTheresultis:\n");for(k=0:k<M;k++)printf("%4d",p[k]);printf("n");}

25.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fmi()的功能是将a、b中的两个正整数合并成一个新的整数存放在c中。合并的方式是将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,a=45,b=12,调用该函数后,c=5241。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

26.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为13579299946999813570则函数值为61。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

27.请编写函数proc(),该函数的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如,有6门课程的成绩是90.5,72,80,61.5,55,60,则函数的值为69.83。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

28.实现字符串拷贝的函数strcpy为()。

29.规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。

30.请编一个函数floatproe(doubleh),函数的功能是对变量h中的值保留2位小数,并对第3位进行四舍五人(规定h中的值为正数)。例如,若h值为7.32596,则函数返回7.33;若h值为7.32496,则函数返回7.32。注意:部分源程序给出如下。.请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

四、2.程序修改题(10题)31.给定程序MODII.C中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。

例如,输入的数为:551234,输出结果应当是:a=55.0,b=34.0,c=12.0。

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

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

32.下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

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

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

试题程序:

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

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

if(i+1%5==0)

{w[k]=sum/5;Sum=0;k++;}

}

returnk;

}

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a/b);

printf("Theoriginaldata:\n");

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

{

if(i%5==0)printf("\n");

printf("%4.0f"/a[i]);

}

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

for(i=0;i<k;i++)printf("%6.2f",b[i]);

printf("\n\n");

}

33.下列给定程序中,函数fun()的功能是:从字符串s中,删除所有大写字母'F'。

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

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

试题程序:

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

}

34.下列给定程序中函数fun()的功能是:将长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如当s中的数为25846513时,t中的数为6482。请改正函数fun()中的错误,使它能得出正确的结果。

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

试题程序:

#include<stdio.h>

#include<conio.h>

voidfun(longS,long*t)

{

intd;

longsl=l,i=1;

*t=0;

while(s/i>0)

i=i*10;

i=i/10;

while(s>0)

{

d=s/i

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

if(d%2!=0)

{

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

t=d*sl+t;

sl*=l0;

}

S=S%i;

i=i/10;

}

}

main()

{

longS,t;

clrscr();

printf("\nPleaseenterS:");

scanf("%ld",&s);

fun(S,&t);

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

}

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

A1=1,A2=1/(5+A1),A3=1/(5+A2),…,An=1/(5+A(n-1))

例如,若n=l0,则应输出0.192582。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

floatfun(intn)

{

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

intA=1;

inti;

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

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

A=1.0/(5+A);

returnA;

}

main()

{

intn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

printf("A%d=%lf\n”,n,fun(n));

}

36.给定程序MODll.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:

例如,a为2时,平方根值为:1.414214。

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

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

37.下列给定程序中,函数fun()的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。

例如,若输入2,则输出12

24

输入4,则输出1234

2468

36912

481216

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#defineM10

intaiM][MI={0};

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

fun(int**a,intm)

{intj,k;

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

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

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

a[j][k]=k*j;

}

main()

{inti,j,n;

clrscr();

printf("Entern\n");scanf("%d",&n);

fun(a,n);

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

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

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

printf("\n");

}

}

38.下列给定程序中,函数fun()的功能是;将s所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。

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

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

试题程序:

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

}

39.下列给定程序中,函数fun()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波`拉契级数序列为1,1,2,3,5,8,13,21,……例如,若给n输入7,

该项的斐波拉契级数值为13。

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

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

试题程序:

#include<stdio.h>

longfun(intg)

{

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

switch(g);

{case0:return0;

switch(g)

case1;case2:return1;

}

return(fun(g-1)+fun(g-2));

}

main()

{

longfib;intn;

printf("Inputn:");scanf("%d",&n);

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

fib=fun(n);

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

}

40.给定程序MODll.C中函数fun的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它能计算出正确的结果。

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

五、程序改错题(2题)41.下列给定程序的功能是:读入一个整数n(2<;=n<;=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出2,617。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main()函数,不能增选或删行,也不能更改程序的结构。试题程序:

42.下列给定程序中函数fun的功能是。用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1、1、2、3、5、8、l3、21、……

例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。

六、操作题(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.以下程序的运行结果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

参考答案

1.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

2.ABCDCD

3.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

4.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(9,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9;所以输出9。

5.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

6.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

7.abcdelkjihgfabcdelkjihgf解析:本题先给字符型数组s的12个元素赋值a到1共12个字母,函数sub(char*a,intt1,intt2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。

8.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。

9.变换型变换型

10.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式输出\'C\'的ASCII码为67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式输出为\'G\'。

11.AC语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。

12.A

13.B

14.A

15.Afgets函数的功能是从fp所指文件中读入n-1个字符放入以str为起始地址的空间内,读取长度不超过n-1,读入结束后,自动在最后添加’\\0’,选项A正确。本题答案为A选项。

16.A解析:当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,包括在其后的所有case和default后的语句,直到switch语句体结束。

17.A

\nC语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。int就是表达整型变量类型的标识符,它不能用做变量名和函数名。

\n

18.C在C语言中,字母区分大小,所以break、char、return、switch都是C语言中的关键字,而Swithch不是。

19.A解析:通过地址来引用二维数组,若有以下定义:inta[3][4],i,j;且当0≤i≤3,0≤j<4则可以有以下几种方式来引用数组中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。

20.B

21.

【解析】按照题目中要求,求出能整除x且不是偶数的各整数。首先判断小于等于整数x的所有奇数是否能被x整除,将能被x整除的奇数放入数组pp中。最后将数组pp中元素的个数返回到主函数中。

22.

【解析】按照题目中要求求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,需要判断m以内的所有整数是否能同时被5与11整除,首先求出同时能被5与

11整除的所有自然数之和,然后再求和的平方根,最后返回到主函数当中。

23.voidfun(inta,intb,long*c){/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位数,b/10获取b的十位数*/ *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;}本题主要考核如何取出a和b的个位数和十位数,取出后如何将其表示成c中相应的位数。由于a和b都是只有两位的整数,因此分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。将得到的数对应乘以1000、100、10、1,即可得到c的千位数、百位数、十位数、个位数。注意使用c时要进行指针运算。24.voidproc(inttt[M][N],intpp[N])inti,j,max;for(i=0;i<M;i++)//i控制行的下标{max=tt[i][c];//max存放每行中最大的数for(j=0;j<N;j++)if(tt[i][j]>max)max=tt[i][j];pp[i]=max;//把大的数放到PP数组中,经过i来控制pp数组的下标}}【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入PP所指的一维数组中。首先比较二维数组中每一行的元素,找出每一行中的最大元素,放入一维数组pp中,返回到主函数当中。25.1voidfun(inta,intb,long*c)2{3*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);4}本题给出两个两位数的正整数。分别取出两个数各位上的数字,再按条件组成一个新数。取整数a十位数的方法为a/10,取整数a个位数的方法为a%10。同理可取出整数b的个位数和十位数。

26.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下标中有一个为。或M-1或N-1,则它一定是周边元素*/7sum=sum+a[i][j];/*将周边元素相加*/8returnsum;9}本题采用逐一判断的方式求数组周边元素和。二维数组周边元素的规律是,其两个下标中一定有一个是0或M-1或N-1。程序中循环语句用来控制数组的行和列,条件语句用来判断数组元素是否为周边元素。

27.

【解析】要计算n门课程的平均分,首先可以求得n门课程的总分,然后除以n得到其平均分,最后将其平均分返回到主函数中。

28.29.

voidfun(char*a){

while(*a!=’、0。)

a++:

a一一;/*指针a指向字符串的尾部*/while(}a==’*。)

a一一;/·指针a指向最后一个字母*/

*(a+1)=’、0’;/*在字符串最后加上结束标志符·/

【考点分析】

本题考查:删除字符串尾部*号;删除的主要思想是把不删除的字符保留起来。

【解题思路】

对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘、0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非·号字符为止。最后在该字符后面加上结束符号’\0。

30.

【解析】要实现对变量的值保留2位小数。并对第3位小数进行四舍五入,可以通过先将其小数点后3位变为正数后加5,所得到的数除10,最后再除100来实现。

31.(1)f1oatk;(2)if(*a<*c)(1)f1oatk;(2)if(*a<*c)解析:本题中函数的功能是把主函数中输入的3个数,最大的放在a中,最小的放在c中。对三个数进行两两比较,实现函数功能。

32.错误:if(i+1%5==0)正确:if((i+1)%5==0)错误:if(i+1%5==0)正确:if((i+1)%5==0)解析:本题除了考查循环语句以外,其实就是一道简单的数学题,循环条件if(i+1%5==0)是一个标准的语法错误,这跟题目考查的知识点毫无关系,也就是说,做这样的题,只要读懂了题干意思,问题便可迎刃而解。

33.(1)错误:for(i=j=0;s[i]!='0';i++)正确:for(i=j=0;s[i]!'\0';i++)(2)错误:s[j]=s[i]正确:s[j++]=s[i];(1)错误:for(i=j=0;s[i]!='0';i++)正确:for(i=j=0;s[i]!'\\0';i++)\r\n(2)错误:s[j]=s[i]正确:s[j++]=s[i];解析:错误1:本题考查是否掌握字符串的最后一个字符是结束标志符'\\0'。错误2:在循环中,新字符串的下标也要递增,这样最终产生一个新的字符串。

34.(1)错误:if(d%2!=0)正确:if(d%2==0)(2)错误:t=d*s1+t;正确:*t=d*s1+*t;(1)错误:if(d%2!=0)正确:if(d%2==0)\r\n(2)错误:t=d*s1+t;正确:*t=d*s1+*t;解析:错误1:偶数是能被2整除,而奇数是不能被2整除,题目要求找出偶数。错误2:t为指针类型,所以进行运算时要加‘*’号。

35.(1)错误:intA=1;正确:floatA=1(2)错误:for(i=l;i<=n;i++)正确:for(i=2;i<=n;i++)(1)错误:intA=1;正确:floatA=1\r\n(2)错误:for(i=l;i<=n;i++)正确:for(i=2;i<=n;i++)解析:错误1:A为实型数,应定义为float类型。错误2:由题意,AI=1,从A2开始,An=l/(5+A(n-1)),所以循环应从2开始。

36.(1)doublefun(doubleadoublex0)(2)if(fabs(x1-x0)>0.0O001)(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.0O001)解析:(1)主函数中“fun(x,1.0)”,x是double型变量,1.0是浮点数,可知fun有两个double型参数,而第一标识下“dounle”不是C语言关键字,所以应将“doublefun(doublea,dounlex0)”改为“doublefun(doublea,doublex0)”。

(2)第二个标识下的if语句是判断进行递归运算的条件,第二标识下变量x0没有定义,根据题意,这里是判断x1和x0的差值的绝对值是否比0.00001大,所以第二个标识下“ifi[fabs(x1-xo)>0.0

37.(1)错误:fun(int**aintm)正确:voidfun(int(*a)[M]intm)(2)错误:a[j][k]=k*j;正确:a[j][k]=(k+1)*(j+1);(1)错误:fun(int**a,intm)正确:voidfun(in

温馨提示

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

评论

0/150

提交评论