版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年山东省潍坊市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________
一、2.填空题(10题)1.下面程序的运行结果是【】。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+321;
sub(s,7,SIZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");}
sub(char*a,intt1,intt2)
{charch;
while(t1<t1)
{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;}}
2.对于一棵具有n个结点的树,则该树中所有结点的度之和为【】。
3.下列软件系统结构图的宽度为[]。
4.下列程序的输出结果是【】。
#definePR(a)printf("%d\t",(int)(a))
#definePRINT(a)PR(a);printf("ok!")
main()
{inti,a=1;
for(i=0;i<3;i++)
PRINT(a+i);
printf("\n");}
5.结构化程序设计的3种基本结构分别是顺序、选择和______。
6.下面程序把从终端读入的文本(用#作为文本结束标志)复制到一个名为file.txt的新文件中。补足所缺语句。
main()
{charch;
FILE*fp;
if((fp=fopen(______))=NULL)exit(0);
while((ch=getchar())!='#')
fputc(ch,fp);
______;
}
7.在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。
8.数据结构分为逻辑结构与存储结构,线性链表属于【】。
9.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
10.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个______实际上对应一个处理模块。
二、单选题(10题)11.向一个栈顶指针为H的链栈中执行出栈运算时,需执行()。
A.p=H;H=H->link;free(p);
B.H=H->link;free(H);
C.p=H;H->link=H->link->link;free(p);
D.p=H;H=H->link;
12.在Internet中,域名服务器的主要功能是实现()的转换。
A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问
13.C程序的基本模块为()。
A.表达式B.标识符C.语句D.函数
14.以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)()。
A.print[("%c\n",a-32);
B.print[("%d\n",A);
C.printf("%c\n",65);
D.printf("%c\n",B-1);
15.以下描述中正确的是
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由d。开始,用while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,是先执行一次循环,再进行判断
D.do-while循环中,根据情况可以省略while
16.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);
A.aB.bC.cD.d
17.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序运行后的输出结果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1
18.算法分析的目的是()。
A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进
19.程序调试的任务是()。
A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误
20.
三、程序设计题(10题)21.请编写函数proc,它的功能是计算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.5
在C语言中可调用log(n)函数求ln(n)。
例如,若m的值为30,则proc函数值为8.640500。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#inclllde<stdio.h>
#include<math.h>
doubleproc(intm)
{
}
voidmain
{
system("CLS");
printf("%f\n",proc(30));
}
22.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写一个函数fun(),该函数的功能是使变量h的值保留两位小数,并对第3位进行四舍五入(规定h的值为正数)。若h的值为1234.567,则函数返回1234.570000;若h的值为1234.564,则函数返回1234.560000。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
23.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为abcdefabcdeabceabcdef,子字符串为cd,则应当输出3。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:
24.使用VC++2010打开触文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是移动字符串中的内容,移动的规则是把第1~m个字符,移动到字符串的最后,把第m+1到最后的字符移动到于符串的前面。例如,字符串中原有的内容为“ABCDEFGHIJK”,m的值为3,移动后,字符串中的内容应该是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
25.编写一个函数,输入n个字符串,串与串之间以Enter键分隔,找出最短字符串中第一个字符串,传回该串地址(用一个新串“*”作为结束输入的标志)。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:
26.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函
数时,不得使用c语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******删除*后字符串中的内容应当
是:ABCDEFG。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
27.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组stu中,请编写函数proc,它的功能是:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。
例如,输入的分数是70和79,则应当把分数低于70和高于79的学生数据输出,不包含70分和79分的学生数据。主函数中把70放在low中,把79放在heigh中。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<stdio.h>
#defineM16
typedefstruct
{
charnum[10];
ints:
}
STREC;
intproc(STREC*a,STREC*b,int1,inth)
{}
voidmain
{
STRECstu[M]={{"GA005",55),{"GA003",96},
{"GA002",80),{"GA004",68),
{"GA001",88},{"GA007",74},
{"GA008",85),{"GA006",89},
{"GA015",90),{"GA013”,53),
{"GA012",66},{"GA014”,82),
{"GA011",73},{"GA017",69),
{"GA018",64),{"GA016",86}};
STRECh[M];
inti,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)’
{
t=heigh:
heigh=low;
low=t;
}
n=proc(stu,h,low,heigh);
printf("Thestudent’Sdataout
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%S%4d\n",h[i].num,h[i].s);
//输出指定分数范围内的学生记录
printf("\n");
}
28.请编写函数proc(),该函数的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如,有6门课程的成绩是90.5,72,80,61.5,55,60,则函数的值为69.83。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
29.请编写一个函数proc(),它的功能是:将str所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abcdel23,则应输出aBcDe123。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
30.请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在num数的十位和千位上,num2数的十位和个位数依次放在c数的百位和个位上。
例如,当num1=64,num2=18时,调用到该函数后,num=4168。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
四、2.程序修改题(10题)31.给定程序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);
}
32.下列给定程序中,函数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));
}
33.下列给定的程序中,函数hn()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<math.h>
voidfun(inta,int*b,int*c)
{inti,j,d,y;
for(i=3;i<=a/2;i=i+2)
/*************found**************/
{y=0;
for(j=2;j<=sqrt((double)i);j++)
if(i%j==0)y=0;
if(y==1)
/*************found**************/
{d=i-a;
for(j-2;j<=sqrt((double)d);
j++)
if(d%j==0)y=0;
if(y=-1)
{*b=i;*c=d;}
}
}
}
main()
{inta,b,c;
do
{printf("\nInputa:");
scanf("%d",&a);}
while(a%2);
fun(a,&b,&c);
printf("\n\n%d=%d+%d\n",a,b,c);
}
34.下列给定程序中函数fun()的功能是计算1/n!的值。
例如:给n输入5,则输出0.0083330
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
/******+****found*************/
intfun(intn)
{doubleresult=1.0;
if(n==0)
return1.0;
while(n>1&&n<170)
/**********found************/
result*=n++;
result=1/result;
returnresult;
}
main()
{
intn;
printf("InputN:");
scanf("%d",&n);
printf("\n1/%d!=%If\n",n,fun(n));
}
35.下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
intfun(int*x,inty)
{
intt;
/***************found***************/
t=x;x=y;
/***************found***************/
return(y);
}
main()
{inta=3,b=8;
clrscr();
printf("%d%d\n",a,b);
b=fun(&a,b);
printf("%d%d\n",a,b);
}
36.给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:642。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.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;
}
}
mein()
{
longs,t;
printf("\nPleaseenters:");
scanf("%1d",&s);
fun(s,&t);
printf("Theresultis:%1d\n",t);
}
37.下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。
请改正程序中的错误,使它能得到正确结果。
[注意]不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.h>
#include<conio.h>
#defineN20
voidfun(int*a,intn)
{
inti,m,t,k;
/************************found************************/
for(i=0;i<n;i++)
{
m=i;
for(k=i;k<n;k++)
if(a[k]<a[m])
/************************found************************/
k=m;
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
38.下列给定程序中,函数fun()的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:
80.5607290.59851.58864
则低于平均分的学生人数为4(平均分为75.5625)。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
#defineN20
intfun(float*s,ihtn,float*aver)
{floatave,t=0.0;
intcount=0,k,i;
for(k=0;k<n;k++)
/*************found**************/
t=s[k];
ave=t/n;
for(i=0;i<n;i++)
if(s[i]<ave)count++;
/*************found**************/
*aver=&ave;
returncount;
}
main()
{floats[30],aver;
intm,i;
clrscr();
printf("\nPleaseenterm:");scanf
("%d",&m);
printf("\nPleaseenter%dmark:\n",m);
for(i=0;iprintf("\nThenumberofstudents:
%d\n",fun(s,m,&aver));
printf("Ave=%f\n",aver);
}
39.给定程序MODll.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625)。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
40.下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值。
t=1-1/(2×2)-1/(3×3)-…-l/(m×m)
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.O;
inti;
/*************found**************/
for(i=2;i<m;i++)
/************found**************/
y-=1/(i*i);
return(y);
}
main()
{intn=5;
clrscr();
printf("\nTheresultis%1f\n",fun(n));
}
五、程序改错题(2题)41.下列给定程序中,函数proc()的功能是:将长整型数中为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8642。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
42.下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串反着连接起来,组成一个新串,放入pt所指字符串中,例如,把“ab、cd、ef9”3个字符串反着串连起来,结果是efgcdab。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或者删行,也不得改变程序的结构!
试题程序:
六、操作题(2题)43.funl函数的调用语句为funl(&a,&b,&c);。它将3个整数按由大到小的JI匣序调整后依次放入a,b,c三个变量中,a中放最大数,请填空。
voidfun2(int*x,int*y)
{intt;
t=*x;*x;*y;*y=t;
}
voidfunl(int*pa,int*pb,int*pc)
{if(*pc>*pb)fun2(【】);
if(*pa<*pc)fun2(【】);
if(*pa<*pb)fun2(【】);
}
44.下列给定程序中,函数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");
}
参考答案
1.abcdefglkjihabcdefglkjih解析:本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。
2.n-1
3.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。
4.123ok!123ok!解析:本题主要考查了printf函数用在了宏替换中。宏替换不是函数调用,只是一种简单的字符替代。所以本题中PRINT(a+i)展开为:printf(“%d\\t”,(int)(a+i)),当i=0时,输出1;当i=1时,输出2;当i=2时;输出3;for循环结束后输出ok!。
5.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。
6.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中写数据,并且该文件是新文件,应当使用文件打开方式'w',文件操作结束时要用函数fclose关闭文件,以防数据丢失。
7.3131解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。
8.存储结构
9.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
10.加工加工解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中的每一个加工对应一个处理模块。
11.A
12.B在Internet中,把域名翻译为IP地址的软件称为域名系统DNS,运行域名系统的主机称为域名服务器。域名服务器的主要功能是实现入网主机名字和IP地址的转换。
13.D
14.B在C语言中%d表示输出整型数值,所以答案为B。
15.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。
16.A解析:C函数的参数传递方式采用按值传递,不能通过调用函数改变形参指针本身的值,只能改变指针所指变量的值。调用point函数时,将实参指针p的值(b数组的首地址)传给了形参指针P,P+=3运算使形参指针指向字符d,但并不能改变main函数中p的值,所以本题正确答案应该是选项A)。
17.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。
18.D解析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度;提高算法的执行效。率。
19.D程序调试的任务是诊断和改正程序中的错误。
20.B
21.doubleproc(intm)
\n{
\ninti;
\ndoubles=0.0;//s是表示其和
\nfor(i=1;i<=m;i++)
\ns=s+log(i);//计算s=ln(1)+ln(2)+ln(3)+…+ln(m)
\nreturnsqrt(s);//最后将其开平方的值返回到主函数中
\n}
\n【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和开平方并返回到主函数当中。
\n
22.1floatfun(floath)2{3inttmp=(int)(h*1000+5)/10;/*单精度数h乘以1000后再加5,相当于对h中的第3位小数进行四舍五入,除以10后将其赋给一个长整型数时就把第3位小数后的数全部截去*/4return(float)tmp/I00.0;/*除以100,保留2位小数*/5}注意:本题要求对变量h中的第3位小数进行四舍五入运算,而不是输出,即不能用printf(“%7.2f”,h)输出结果。四舍五入算法:如果要求精确到小数点后面的第n位,则需要对第n+1位进行运算。方法是将该小数乘以10的n+1次方后加5,然后除以10并强制转换变量类型为整型,再将该数除以10的n次方,同时强制转换类型为浮点型。代码实现如下:intt;/*定义整型变量t*/t=(int)(h*10n+1+5)/10;/*对h进行操作,得到浮点型值,t取值时取整数部分。10n+1为要扩大的倍数*/h=(float)t/10n;/*将t缩小10n倍,并转换成浮点型*/
23.
【解析】要计算出主字符串中包含子字符串的个数,应该检查主字符串中从第一个到最后一个字符。每出现一个计数变量加1,最后将得到的个数返回给主函数。
24.Voidfun(char*w,intm)chart;for(i=1;i<=m;i++)/*进行m次的循环左移*/{t=w[o];for(j=1;w[j]!='\0';j++)/*从第2个字符开始以后的每个字符都依次前移一个字符*/w[j-l]=w[j];9w[j-l]=t;/*将第1个字符放到最后一个字符中*/10}}本题应采用“循环左移”的算法。外层循环用于控制移动的字符的个数,即需进行多少次循环。内层循环的作用是将第2个字符以后的每个字符依次前移一个位置,最后将第1个字符放到最后一个字符中。
25.
【解析】首先指定第一个字符串为长度最小的字符串,然后在循环过程中将其与其他的所有串的长度进行比较,求出最小的串。设置一个指针变量min,使它的初值为第一个字符串,再使其他的所有串的长度与min的长度进行比较,若其他字符串的长度小于min.则将其他字符串的首地址赋值给min。最后使用返回语句,返回最短长度min的字符串的地址。
26.
【考点分析】
要删除字符串中所有*号需要用循环语句遍历字符串,用
判断语句判断字符是否为*号,由此可以决定该程序应使用循
环判断结构。
【解题思路】
27.\n\tintproc(STREC*a,STREC*b,intl,inth)\n\n\n\t{\n\n\n\tinti,j=0;\n\n\n\tfor(i=0;i<M;i++)\n\n\n\tif((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a\n\n\n\t[i].s<=l00))
//通过if语句,来判断指定范围\n\n\n\t之外的数\n\n\n\tb[j++]=a[i];//放到b数组中\n\n\n\treturnj;//最后把其个数返回到主函数中\n\n\n\t}\n\n\n\t【解析】题目要求把指定范围之外的数放到b中,将每一个学生的成绩与指定的成绩相比较,将符合条件的学生成绩放在数组b中,并将符合要求的学生个数返回给主函数。\n
28.
【解析】要计算n门课程的平均分,首先可以求得n门课程的总分,然后除以n得到其平均分,最后将其平均分返回到主函数中。
29.
【解析】要将字符串中为奇数的字母转换为大写。首先应该判断奇数位置上的字符是否为小写字母,若是则将其转换为大写,若不是则不予处理。
30.
【解析】要算出变量num的值,首先需要得到变量num1和hum2个位和十位上的数字。然后将在千位上的数字乘以1000,百位上的数字乘以100,十位上的数字乘以10,各位上的数字乘以1,就能得到要求的hum。
31.voidfun(longslongt)改为voidfun(longslong*t)s1=s1*100;改为s1=s1*10;voidfun(longs,longt)改为voidfun(longs,long*t)\r\ns1=s1*100;改为s1=s1*10;解析:从fun函数可以看出,变量t应该是指针变量。因此,在形参表列中,t之前应该加“*”;从s中取出奇数位构建新数是逐位进行,而不是跳位的。因此,s1应该乘以10。
32.(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开始。
33.(1)错误:y=0;正确:y=1:(2)错误:d=i-a;正确:d=a-i;(1)错误:y=0;正确:y=1:\r\n(2)错误:d=i-a;正确:d=a-i;解析:这道题是历年的考题经典。也就是验证哥德巴赫猜想之变体,原来的思路是(任意一个大于等于6的偶数都可以分解为两个素数之和)n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2再检验n1,n2是否素数,…直到n1=n/2为止。该题思路是与“经典猜想”是相同的。
34.(1)错误:intfun(intn)正确:doublefun(intn)(2)错误:result*=n++;正确:result*=n--;(1)错误:intfun(intn)正确:doublefun(intn)\r\n(2)错误:result*=n++;正确:result*=n--;解析:错误1:函数的返回值为实型数据,所以函数的返回类型应为double。错误2:根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。
35.(1)错误:t=x;x=y;正确:t=*X;*x=y;(2)错误;return(y);正确:return(t);(1)错误:t=x;x=y;正确:t=*X;*x=y;\r\n(2)错误;return(y);正确:return(t);解析:本题考查指针变量做函数参数。同样,这里也涉及到一个“交换规则”,另外,根据题目主函数中fun()函数的调用方式说明fun()函数的参数应当为指针类型。交换结束后返回变量t。
36.(1)错误:voidfun(longslongt)正确:voidfun(longslong*t)(2)错误:whi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年城市大数据平台容器资源调度
- 2026年【智能化工程师】考试题库及答案
- 风电叶片回收处理技术2025年创新模式与产业链报告
- 2026年5G手机市场分析报告及未来一年销售趋势预测
- 2026年煤炭行业报告:数据打通与系统集成在煤炭生产中的应用
- 2026年物流行业发展趋势报告:电商物流与供应链管理
- 2026年仓储物流地产投资策略与风险分析报告
- 2026年汽车改装市场品牌竞争格局报告
- 2026年烟草行业数据合规与隐私政策执行分析报告
- 2026年教育行业高端产品市场趋势及白牌产品竞争策略报告
- GB/Z 270-2026安全与韧性业务连续性管理体系业务连续性策略指南
- 2026年医疗废物分类及处理培训考试试题(附答案)
- GB/T 48315-2026鲁班工坊运行质量评估指南
- 2026年健康科普大赛基础测试题含答案
- 八年级物理上册期末《声现象》6大易错题专项训练
- 2026年内蒙古自治区中考生物试卷(含答案及解析)
- 冷轧硅钢及金属制品深加工项目可行性研究报告模板拿地申报
- 2026年4月自考04184线性代数(经管类)试题及答案含评分参考
- 某化工产品企业质量管理办法
- 装饰工程计算培训
- 校运会裁判知识培训内容
评论
0/150
提交评论