2021年浙江省舟山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年浙江省舟山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年浙江省舟山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年浙江省舟山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年浙江省舟山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2021年浙江省舟山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、2.填空题(10题)1.对长度为10的线性表进行冒泡排序,对坏情况下需要比较的次数为______

2.有以下定义和语句,则sizeof(a.share)的值是()。

structdate

{unsignedintday;

unsignedintmouth;

unsignedintyear;

union{intshare1;

floatshare2;

}share;

}a;

3.以下程序的输出结果是_______。

main()

{char*p[]={"BOOL","OPK","H","SP:,};

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

4.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

5.以下程序的输出结果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

6.在深度为7的满二叉树中,度为2的结点个数为【】。

7.若有如下程序:

main()

{intx=20;

if(x>10)printf("%d",x-=5);

if(x>15)printf("%d",x);

}

则程序运行后的输出结果是【】。

8.有以下程序片段,请问执行后的输出结果是【】。

intn=10;

while(n>7)

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

}

9.若输入thistestterminal,以下程序的输出结果为:terminaltestthis。请填空。

#defineMAXLINE20

【】

{inti;

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

for(i=0;i<3;++)pstr[i]=str[i];

for(i=0;i<3;i++)scanf("%s",pstr[1]);

sort(pstr);

for(i=0;i<3;i++)prntf("%s",pstr[i]);

}

sort(【】)

char*pstr[3];

{inti,j;

char*p;

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

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

if(strcmp(*(pstr+i,*(pstr+j)>0

{p=*(pstr+i);

*(pstr+i=【】;

*(pstr+j)=p;

}

10.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n,p+9);

}

二、单选题(10题)11.以下四个选项,不能看作一条语句的是()。

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

12.有以下程序.#include<stdio.h>main{charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar;c6=getchar;putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>则输出结果是()。A.1267B.1256C.1278D.1245

13.有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是()。

A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);

14.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3;charflag;flag=b>=2&&c<=3;switch(a){ case1:switch(flag) { case0:printf(“**”);break; case1:printf(“%%”);break; } case0:switch(c) { case1:printf(“$$”);break; case2:printf(“&&”);break; default:printf(“##”); }}printf(“\n”);}程序运行后的输出结果是()。

A.**$$B.%##C.%&&D.**##

15.定义如下变量和数组:inti;intx[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};则下面语句的输出结果是()。A.15913B.161116C.471013D.481216

16.

17.下列SQL语句中,用于修改表结构的命令式是A.A.Alter

B.Create

C.Update

D.Insert

18.以下叙述正确的是

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和swish语句体内使用break语句

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

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

19.以下哪种操作最适合先进行排序处理()

A.找最大、最小值B.计算算术平均值C.找中间值D.找出现次数最多的值

20.

三、程序设计题(10题)21.编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

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

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

22.请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在num数的十位和千位上,num2数的十位和个位数依次放在c数的百位和个位上。

例如,当num1=64,num2=18时,调用到该函数后,num=4168。

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

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

试题程序:

23.请编写函数proc(),其功能是:将所有大于1小于整数m的非素数存入XX所指数组中,非素数的个数通过k传回。例如,输入20,则应输出4689101214151618。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

24.…请编写函数。fun能是:判断形参n中的正整数是几位数(输入数据的位数不超过4位),并将结果通过函数值返回。例如:若输入的数据为l23,则输出结果为:输入的数字是3位。注意:部分源程序存在PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所缩写的若干语句。试题程序:

25.

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

27.编写函数fun(),其功能是:求出1~1000中能被7或11整除,但不能同时被7和ll整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

28.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,学生的记录由学号和成绩组成,N名学生的记录已在主函数中放入结构体数组s中,请编写函数fun(),其功能是把低于平均分的学生记录放入b所指的数组中,低于平均分的学生人数通过形参n返回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct{ charnum[10]; doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}voidmain(){ STRECs[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87}}; STRECh[N]; inti,n; doubleave; ave=fun(s,h,&n); printf(“The%dstudentdatawhichislowerthan%7.3f:\n”,n,ave); for(i=0;i<n;i++)<p=""></n;i++)<> /*输出成绩低于平均分的学生记录*/ printf(“%s%4.1f\n”,h[i].num,h[i].s); printf(“\n”);}

29.输出1—100之间不能被12整除的数。

30.请编写fun函数,其功能是:计算并输出3~m所有素数的平方根之和。

例如,若主函数从键盘给m输入50后,则输出为s=68.665791。

请勿改动main函数与其他函数中的任何内容,仅在函数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);

}四、2.程序修改题(10题)31.下列给定程序中,函数fun()的功能是:从N个字符串中找出最长的那个中,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。

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

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

试题程序:

#include<string.h>

#include<stdio.h>

#defineN5

#defineM81

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

fun(char(*sq)[N])

{inti;char*sp;

sp=sq[0];

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

if(strlen(sp)<strlen(sq[i]))

sp=sq[i];

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

returnsq;

}

main()

{charstr[N][M],*longest;inti;

printf("Enter%dlines:\n",N);

for(i=0;i<N;i++)gets(str[i]);

printf("\nThe%dstring:\n",N);

for(i=0;i<N;i++)puts(str[i]);

longest=fun(str);

printf("\nThelongeststring:\n");

puts(longest);

}

32.下列给定程序中函数fun()的功能是;先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。

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

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

试题程序:

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

}

33.给定程序MODll.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换为小写字母b。

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

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

34.下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。例如当s中的数为87653142时,t中的数为7531。

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

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

试题程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longs1=1;

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

t=0;

while(s>0)

{d=s%10;

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

if(d%2==0)

{*t=d*s1+*t;

s1*=10;

}

s/=10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf("%ld",&s);

fun(s,&t);

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

}

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

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

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

36.下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其插在申的最后。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

voidfun(charstr,charch)

{while(*str&&*str!=ch)str++;

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

if(*str==ch)

{str[0]=ch;

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

str[1]='0';

}

}

main()

{chars[81],c;

clrscr();

printf("\nPleaseenterastrzng:");

gets(s);

printf("\nPleaseenterthecharacterto

search:");

c=getchar();

fun(s,c);

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

}

37.给定程序MODl1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为2736598时,t中的数为:2358。

#include<conio.h>

#include<stdio.h>

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

voidfun(longs,longt)

{longs1=10;

*t=S%10;

while(s>0)

{s=s/l00;

*t=S%10*s1+*t;

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

s1=s1*100;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:”);

scanf("%ld",&s);

fun(s,&t);

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

}

38.给定程序MODll.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。

例如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为:“EDCBAABCDE”。

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

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

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

}

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

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

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

五、程序改错题(2题)41.下列给定程序中,函数proc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头2个元素进行排序,然后把第3个字符插入到前2个字符中,插入后前3个字符依然有序;再把第4个字符插人到前3个字符中,待排序的字符串已在主函数中赋予。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

42.下列给定程序中函数fun()的功能是:把从主函数中输人的3个数。最大的数放在a中,中间的数放在b中,最小的数放在C中。例如,若输入的数为:55,12,34,输出的结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、操作题(2题)43.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。

44.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

参考答案

1.在最坏情况下冒泡排序法需要比较的次数为n(n-1)/2。

2.4

3.

4.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

5.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

6.63或26-163或26-1解析:在满二叉树中,每层结点都是满的,即每层结点都具有最大结点数。深度为k的满二叉树,一共有2k-1个结点,其中包括度为2的结点和叶子结点。因此,深度为7的满二叉树,一共有27-1个结点,即127个结点。根据二叉树的另一条性质,对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。设深度为7的满二叉树中,度为2的结点个数为x,则改树中叶子结点的个数为x+1。则应满足x+(x+1)=127,解该方程得到,x的值为63。结果上述分析可知,在深度为7的满二叉树中,度为2的结点个数为63。

7.1515解析:本题首先定义了一个变量x并初始化为20。然后第一个if语句判断x是否>10,结果为真,则执行后面的输出语句,输出结果是赋值表达式X-=5的值,所以输出15,同时x的值也变成15。第二个if语句再判断x是否>15时条件为假,结束程序。所以程序运行后的输出结果是15。

8.1098

9.main()pstr*(pstr+j)

10.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

11.D解析:在if后面只能有一条语句,或一条复合语句,即用花括号将多条语句括起来。选项D)中没有将两条语句括起来,不能看成一条语句。

12.Dscanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,\n。

13.D运算符“()”的优先级高于运算符“*”。“(*f)()”定义函数指针,f是指向函数的指针。执行语句“f=add;”,将函数add的首地址赋给指针f,所以调用函数add可以写为f。函数的返回值是整型,不是指针类型,不能用运算符,故*f(a,b);”的调用方式错误。故本题答案为D选项。

14.Bmain函数中,根据“b=2,c=3”可知表达式“b>=2&&c<=3”为真,flag值为1。由“a=1”和外层switch语句的case标号没有break语句,可知外层switch语句执行case1,case0。对于外层case1:嵌套的switch语句根据“flag=1”执行case1,执行“printf(“%%”);”,输出“%”,接着执行break语句,结束内层switch执行外层;对于外层case0:嵌套的switch语句根据“c=3”执行default语句,执行“printf(“##”);”,输出“##”。故本题答案为B选项。

15.C

16.C

17.A本题主要考查SQL中一些基本的命令。SQL常用的语句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。

在SQL语言中使用率最高的是Select,这个命令的作用是从表中查找出满足条件的记录。

Insert命令的作用是对数据表进行插入操作。

Update命令的作用是对数据表进行更新操作。

Delete命令的作用是对数据表中的数据进行删除操作。

Create命令的作用是创建数据表。

Alter命令的作用是修改表的结构。

Drop命令的作用是用来删除表,它与Delete的区别是进行Drop操作后,数据表不存在了,而进行Delete操作后,数据表还在,只是数据被删除了。

18.B

19.C

20.D

21.

【考点分析】

本题考查:if语句,用来判断能被7整除或者能被11整除,但是又不能同时被7和11整除的数,在这里充分理解”逻辑与”和”逻辑或”的区别;for循环语句的循环变量用来控制取值范围。

【解题思路】

该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可,下面来看判断语句,题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数。能同时被7和ll整除的整数一定能被77整除,且不能被

77整除的数不一定就是能被7或11整除的数,所以可得出程序中的if语句。注意:(i%7==0||i%11==0)两边必须要有小括号。

22.

【解析】要算出变量num的值,首先需要得到变量num1和hum2个位和十位上的数字。然后将在千位上的数字乘以1000,百位上的数字乘以100,十位上的数字乘以10,各位上的数字乘以1,就能得到要求的hum。

23.

【解析】题目中要求将所有大于l小于整数m的非素数存入xx所指数组中,因此需要判断所有大干1小于m的整数是否为素数。将所有大干1小于m的非素数放入数组xx中,并将非素数的个数通过形参k传递回主函数中。

24.

【考点分析】主要考察考生对循环跳出的条件的理解,以及理解取数字位数的方法。【解题思路】通过对指定的多位数每次除以10,去掉最后一位,直到为0结束,使用临时变量来统计一个多位数的位数。

25.

26.

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

27.

【解析】根据题意,所写函数要用for循环实现对整数1~1000的遍历;通过if语句找出能被7或11整除,但不能同时被7和11整除的所有整数,因为同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除,可得出表达式“(i%7==0||i%11==O)&&i%77!=0”;再按题目要求,将找出来的整数放在a所指的数组中,通过n返回这些数的个数即可。

28.doublefun(STREC*a,STREC*b,int*n){ inti,j=0; doubleav=0.0; for(i=0;i<=""p=""> av=av+a[i].s; av=av/N; /*求平均分*/ for(i=0;i<=""p=""> if(a[i].s<av)<p=""></av)<> b[j++]=a[i];/*将低于平均分的学生记录存入结构体数组b中*/ *n=j;/*传回低于平均分的学生人数*/ returnav;/*返回平均分*/}本题使用循环语句和条件判断语句来实现题目要求。第1个循环语句的作用是求出总分,然后求出平均分av。第2个循环语句的作用是将分数低于平均分的学生记录存入结构体数组b中。

29.\n#include'stdio.h'

\nmain

\n{inti;

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

\n{if(i==0)

\ncontinue;

\nprintf('%d',i);

\n}

\n30.\r\n\tintn,k,i;

doublesum=0.0;

for(n=3;n<=m;n++)//判断n是否为素数

{

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

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

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

if(i>=k+1)

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

}

returnsum;

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

31.(1)fun(char(*sq)[N]正确:char*fun(char(*sq)[M])(2)错误:returnsq;正确:returnsp;(1)fun(char(*sq)[N]正确:char*fun(char(*sq)[M])\r\n(2)错误:returnsq;正确:returnsp;解析:函数fun()的肜参为字符串指针数组,每个元素指向一个长度为M的字符串。从主函数中的语句可以看出,字符串指针数组的每个元素指向一个字符串,要求函数fun()找出其中最长的字符串。可先假设指针数组的第1个元素所指的字符串最长,之后对字符串指针数组进行遍历,若遇字符串长度大于待定最长字符期,则令该字符串为待定最长字符串,如此循环直至指针数组末尾,即可得到最氏字符中的地址。

32.错误:t[i]=s[s1-1];正确:t[i]=s[s1-1-i];错误:t[i]=s[s1-1];正确:t[i]=s[s1-1-i];解析:该题也是几个循环语句的嵌套使用,难度并不大,重要的足要读懂程序,题目中赋值语句t[i]=s[]s1-1;并不能完成累计循环,所以正确的应该是t[i]=s[s1-1-i];。

33.(1)c=c+32;(2)c=c+5;(1)c=c+32;(2)c=c+5;解析:本题中函数的功能是将某些大写字母转换为对应小写字母之后的第五个字母。对于将字母转换的题型,首先是查找符合条件的字符,然后根据规则对字符进行转换。本题需要大家了解大小写字母是怎样通过ASCII码相互转换的。

34.(1)错误:t=0;正确:*t=0;(2)错误:if(d%2==0)正确:if(d%2!=0)(1)错误:t=0;正确:*t=0;\r\n(2)错误:if(d%2==0)正确:if(d%2!=0)解析:其实,本题的重点在考查两个问题:第1个错误中出现了一个t=0,那么请看一下,t是从哪儿来的,第1次出现t的地方在哪儿?对,就这么简单。那我们再来思考一下用C语言表达一个奇数的话应该怎么表达?用数学的方法呢?偶数是能被2整除的,奇数刚好相反,那么if(d%2==0)是想表示奇数呢还是偶数,看题目就明白了!

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

36.(1)错误;voidfun(charstrcharch)正确:voidfun(char*strcharch)(2)错误:if(*str==ch)正确:if(*str=='\0')(3)错误;str[1]='0';正确:str[1]='\0';(1)错误;voidfun(charstr,charch)正确:voidfun(char*str,charch)\r\n(2)错误:if(*str==ch)正确:if(*str=='\\0')\r\n(3)错误;str[1]='0';正确:str[1]='\\0';解析:该题的重点就是在while的循环嵌套语句中,由题干信息“若相同,则什么也不做”很容易就能看出if(*str==ch)后面的执行语句是错误的。另外,v

温馨提示

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

评论

0/150

提交评论