版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年浙江省台州市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________
一、2.填空题(10题)1.现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:
#include<stdio.h>
#include"myfun.c"
main()
{fun();printf("\n");}
myfun.c文件如下:
voidfun()
{chars[80],c;intn=0;
while((c=getchar())!=′\n′)s[n++]=c;
n--;
while(n>=0)printf("%c",s[n--]);
}
当编译连接通过后,运行程序T18时,输入Thank!,则输出结果是【】。
2.以下程序运行后的输出结果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
3.下列程序的输出结果是______。
#include<stdio.h>
main()
{inta=2,b=-1,C=2;
if(a<B)
if(b<O)c=0;
elsec++;
printf("%d\n",C);
}
4.计算机网络按通信距离来划分可以分为【】。
5.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。
6.数据的物理结构在计算机存储空间中的存放形式称为数据的【】。
7.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
8.算法执行过程中所需要的基本运算次数称为算法的______。
9.在面向对象方法中,类之间共享属性和方法的机制称为______。
10.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d”,______);
printf(“%d\n”,______);
二、单选题(10题)11.对于循环队列()。
A.无法判断队列是否为空B.无法判断队列是否为满C.队列不可能满D.以上说法都不对
12.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下选项中不能正确引用字符串的是()。
A.*p[3]B.p[3]C.str[2]D.*p
13.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行
B.退出Windows后再关机
C.退出Windows后重新启动计算机
D.终止当前应用程序的运行
14.若已知一个栈的进栈序列是1,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=n,则Pi(1<i<p)为()。
A.IB.n-iC.n-i+1D.不确定
15.下面C程序段中count++语句执行的次数为()A.15B.16C.31D.32
16.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审
17.表达式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5
18.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975
19.以下四个选项,不能看作一条语句的是()。
A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;
20.以下有关宏替换的叙述不正确的是()。A.A.使用宏定义可以嵌套
B.宏定义语句不进行语法检查
C.双引号中出现的宏名不替换
D.宏名必须用大写字母表示
三、程序设计题(10题)21.请编写函数proc(),该函数的功能是:计算并输出
例如,若主函数从键盘给n输入10后,则输出为S=104.478749。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
22.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符为l,则输出3。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
23.从键盘上输入9个数,按3行3列的格式输出。
24.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写一个函数,用来删除字符串中的所有空格。例如,输入asdafaaz67,则输出为asdafaaz67。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
25.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
26.请编写一个函数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");
}
27.请编写fun()函数,其功能是:计算并输出3~m所有素数的平方根之和。例如,若主函数从键盘给m输入50后,则输出为s=63.665791。注意:m的值要大于2但不大于l00。部分源程序给出如下。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:
28.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)例如,若主函数从键盘给n输入20后,则输出为s=0.680803。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
29.请编写函数proc,其功能是:计算并输出下列多项式值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函数从键盘给n输入20后,则输出为S=0.680803。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#includet:stdio.h>
doubleproc(intn)
{
}
voidmain
{
intn;
doubleslim;
printf("\nInputn:");
scanf("%d",&n);
sum=proc(n)。
printf("\ns=%f\n",sum);
}
30.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。编写函数fun(),其功能是除了字符串前导和尾部的*号外,将字符串中其他的*号全部删除。形参h指向字符串中第一个字母,形参p指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“****A*BC*DEF*G********”,删除后,字符串中的内容应当是“****ABCDEFG********”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<string.h>voidfun(char*a,char*h,char*p){}main(){chars[8l],*t,*f;printf(“Enterastring:\n”);gets(s);t=f=s;while(*t)t++;t--;while(*t==‘*’)t--;while(*f==‘*’)f++;fun(s,f,t);printf(“Thestringafterdeleted:\n”);puts(s);}
四、2.程序修改题(10题)31.给定程序MODll.C中函数fun的功能是;从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
32.给定程序MODll.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
33.给定程序MODll.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
34.下列给定程序中,函数fun()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。
请改正程序中的错误,使它能得出正确的结果。
注童:不要改动main函数,不得增行或删行,也不得更改程序的蛄构。
试题程序:
#include<stdio.h>
intfun()
{inti,j,k,sum=0;
printf("\nTheresult:\n\n");
/**************found***************/
for(i=0;i<=3;i++)
{for(j=1;j<=5;j++)
{k=8-i-j;
/**************found******************/
if(k>=1&&k<=6)
{sum=sum+1;
printf("red:%4dwhite:%4d
black:%4d\n",i,j,k);
}
)
}
returnsum;
}
main()
{intsum;
sum=fun();
printf("sum=%4d\n\n",sum);
}
35.下列给定程序中,函数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);
}
36.下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由大到小的顺序进行排序。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
#defineMAXLINE20
voidfun(char*pstr[6])
{
inti,j;
char*p;
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
/*************found*************/
if(strcmp((pstr+i),(pstr+j))<0)
{
p=*(pstr+i);
*(pstr+i)=*(pstr+j);
/*************found*************/
*(pstr+j)=*p;
}
}
main()
{
inti;
char*pstr[6],str[6][MAXLINE];
clrscr();
for(i=0;i<6;i++)
pstr[i]=str[i];
printf("/nEnter6string(1stringateachline):\n");
for(i=0;i<6;i++)
scanf("%s",pstr[i]);
fun(pstr);
printf("Thestringsaftersorting:\n");
for(i=0;i<6;i++)
printf("%s\n",pstr[i]);
}
37.下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。
t=-1+1/2+1/3+1/4+…+1/m
例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{
doublet=1.0;
inti;
for(i=2;i<=m;i++)
/*************found**************/
t+=1.0/k;
/*************found**************/
returni;
}
main()
{intm;
clrscr();
printf("\nPleaseenterlintegernumber:");
scanf("%d",&m);
printf("\nTheresultis%1f\n",fun(m));
}
38.下列给定程序中,函数fun()的功能是;求出两个数的最大公约数,并作为函数值返回。例如,若给num1和num2输入49和21,则输出的最大公约数为7:若给num1和num2分别输入27和81,则输出最大公约数为27。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
intfun(inta,intb)
{intr,t;
if(a<b)
/******************found*****************/
{t=a;b=a;a=t;}
r=a%b;
while(r!=0)
{a=b;b=r;r=a%b;}
/******************found*****************/
return(a);
}
main()
{intnum1,num2,a;
printf("Inputnum1num2:");scanf("%d%d",&num1,&num2);
printf("num1=%dnum2=%d\n\n",num1,num2);
a=fun(num1,num2);
printf("Themaximuncommondivisoris%d\n\n",a);
}
39.给定程序MODll.C中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
40.给定程序MODll.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。
在mai()函数中,若fun返回1输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!
五、程序改错题(2题)41.下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入10,则应输出2.928968。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
42.下列给定程序中,函数proc()的功能是:求S的值。
例如,当n为100时,函数的值应为1.566893。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、操作题(2题)43.下列程序利用指针将2个数按从大到小的顺序输出。
main()
{inta,b,【】;
printf("inputa,b:");
scanf("%d%d",&a,&b);
【】;
p2=&b;
if(a<b)
{p=p1;
p1=p2;
p2=p;
}
printf("a=%db=%d\n",a,b);
printf("max=%dmin=%d\n",【】);
44.当m=1,n=2,a=3,b=2,c=4时,执行d=(m=a!=B)&&(n=b>C)后,m的值为()。
参考答案
1.!knahT!knahT解析:此程序是一道次序颠倒题,即输入'Thank!',则输出'!knahT'。
2.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:
类型说明符*指针变量名;
3.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。
4.局域网和广域网局域网和广域网
5.n-1
6.内模式或物理模式或存储模式内模式或物理模式或存储模式解析:一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据库内部的表示方法。例如,记录的存储方式是顺序存储、索引按照什么方式组织;数据是否压缩存储,是否加密等。
7.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
8.时间复杂度时间复杂度解析:算法在执行过程中所执行的基本运算的次数,也就是执行算法所需要的计算工作量,称为算法的时间复杂度。
9.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。
10.k*kk*k解析:本题考查的知识点是scarf()函数和printf()函数的用法。scanf()函数有两个参数,第一个参数是格式控制部分(格式控制部分是字符串,主要由“%”号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空格处位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成的,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第;个空位于printf()函数的第二个参数处,所以应该填*K。
11.D
12.A“*P[3]”是一个字符,也就是str[3][0],不是字符串,选项A错误。“P[3]”“str[2]”和“*p”分别代表了ddd、ccc、aaa。故本题答案为A选项。
13.D
14.C
15.A
16.C【答案】:C
【知识点】:需求分析阶段的任务
【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计划,故选C。
17.B\n本题考查了强制类型转换。9/2为double型,所以结果为4.5,又强制转换为整型,所以结果为4。9%2为取余运算,结果为1。最终结果4-1=3。
\n
18.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。
19.D解析:在if后面只能有一条语句,或一条复合语句,即用花括号将多条语句括起来。选项D)中没有将两条语句括起来,不能看成一条语句。
20.D解析:本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查:②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。
21.
【解析】在本程序中,用S1来表示题中每个小括号内的值,第1项相当于有1个10.5。第2项相当于第1项的值加上20.5,第3项相当于第2项的值加上30.5,…,依此类推。函数pow(x,y)的功能是求出x的y次方,程序中用S来表示总和值,每循环一次加1次Sl的值,即加1项。
22.
【考点分析】
本题考查:for循环语句遍历字符串,并通过if条件语句,判断字符串是否结束。
【解题思路】
从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是‘\0’,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。
23.\n#include'stdio.h'
\nmain
\n{inta[3][3],i,j,s=0;
\nfor(i=0;i<3;i++)
\nfor(j=0;j<3;j++)
\nscanf('%d',&a[i][j]);
\nfor(i=0;i<3;i++)
\n{for(j=0;j<3;j++)
\nprintf(“%d”,a[i][j]);
\nprintf(“\\n”);
\n}
\n}
\n24.1voidfun(char*str)2{3inti=0;4char*p=str;5while(*p)6{7if(*p!='')/*删除空格*/8{9str[i++]=*p;10}11p++;12}13str[i]='\\0';/*加上结束符*/14}本题要求删除所有空格,即保留除了空格以外的其他所有字符。由于C语言中没有直接删除字符的操作,因此对不需要删除的字符采用“保留”的操作。用指针P指向字符串中的每一个字符,每指向一个字符都判断其是否为空格,若不是空格则将其保存到数组Str。25.
程序设计题解析:
【考点分析】
本题考查:指针型变量定义;while循环语句;if语句条件表达式;字符串结束标识‘\\0’。
【解题思路】
函数fun的功能:除了字符串前导的*号之外,将串中其他。号全部删除。解答本题,(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符’\\0’。
【解题宝典】
要删除字符串中的指定字符,通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。26.\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返回主函数。\n
27.
【解析】首先判断循环中n是否为素数,如果不是素数,求其平方根的累加和,并返回计算结果,否则跳出判断循环。其中,对于平方根的求解可以使用C语句中的sqrt()函数。
28.
【解析】由题目中所给的表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。
29.\n\tdoubleproc(intn)
\n{
\ninti;
\ndoubles=0.0;//s为其和的变量
\nfor(i=1;i<=n;i+十)
\nS=s+(1.0/(2*i-1)-1.O/(2*i));//计算s
\n=(1-1/z)+(1/3-1/4)+…+(1/(2n-1)-1/
\n2n)
\nreturns;//最后把所得到的和返回到主函数中
\n}
\n【解析】由题目中所给表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。\n30.voidfun(char*a,char*h,char*p){inti=0;char*q=a;/*将前导*号保存到a中*/while(q<h)<p=""></h)<>{a[i]=*q;q++;i++;}/*继续遍历数组*/while(q<=""p="">if(*q!='*'){/*如果不是*则保存到a中*/a[i]=*q;i++;}q++;}/*将末尾*号保存到a中*/while(*q){a[i]=*q;i++;q++;}a[i]=‘\0’;}本题的重点是选择好判断条件。首先需要判断前导*号的结束,然后判断是否指向最后一个字母,最后补充尾部*号,只要思路对了即可正确解答。
31.(1)voidfun(10ngslong*t)(2)while(s>0)(1)voidfun(10ngs,long*t)(2)while(s>0)解析:该题中函数功能是取出长整型变量s中偶数位上的数,组成新数。从已给定源程序的main主函数开始入手,“fun(s,&t);”语句调用函数fun来实现题目要求。
32.(1)char*fun(char*schar*t)(2)ss++;(3)tt++;(1)char*fun(char*s,char*t)(2)ss++;(3)tt++;解析:本题中函数的功能是比较两个字符串,将长的那个字符串的首地址作为函数值返回。解题思路是对调试过程中产生的错误提示进行跟踪,也就是题干中给出的错误标识符号下的语句。
33.(1)y=1;(2)d=a-i;(1)y=1;(2)d=a-i;解析:本题中函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。其中,函数fun用形参a放偶数,指针b和c放两个素数。把一个偶数分解成1和(x-1)两个数是否是素数,再分解为3和(x-3)这两个数,判断是否是素数,依此类推,直到找出这两个素数为止。本题中把偶数分解为i和d两个素数。判断i是否是素数,如果i不是素数,则i+2再循环;如果i是素数,则d=x-i,然后判断d是否是素数。
34.(1)错误:for(i=0;i<=3;i++)正确:for(i=1;<3;i++)(2)错误:if(k>1&&k<=6)正确:if(k>1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))(1)错误:for(i=0;i<=3;i++)正确:for(i=1;<3;i++)\r\n(2)错误:if(k>1&&k<=6)正确:if(k>1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))解析:该题是一道教材习题的变体,如果单纯从数学的排列组合角度来分析,实在简单不过,那怎么才能用C语言实现题目中的要求呢?这就需要我们有一个清晰的编程思想。红球数i的总数为3,但最小值为1,循环条件中,i的值是从0开始的,所以不应该是for(i=O;i<=3;i++,而是for(i=1;i<=3;i++),另外,在if(k>1&&k<=6)中,程序旨在说明题干中的“在每组中,可以没有黑球,但必须要有红球和白球”信息,一一满足后,正确的条件应该是if((k>1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))。
35.(1)错误:switch(g);正确:去掉分号(2)错误:case1;case2:return1:正确:case1:case2:return1;(1)错误:switch(g);正确:去掉分号\r\n(2)错误:case1;case2:return1:正确:case1:case2:return1;解析:C语言中,Switch语句之后不能有分号,并且Case语句常量后应用的是冒号。
36.(1)错误:if(strcmp((pstr+i)(pstr+j))<0)正确:if(strcmp(*(pstr+i)*(pstr+j))<0)(2)错误:*(pstr+j)=*p;正确:*(pstr+j)=p;(1)错误:if(strcmp((pstr+i),(pstr+j))<0)正确:if(strcmp(*(pstr+i),*(pstr+j))<0)\r\n(2)错误:*(pstr+j)=*p;正确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年城市NOA渗透率22%市场规模百万台分析
- 2026年小学实验室安全教育
- 2026年AI幻觉频发错误医疗建议风险防范与验证机制
- 2026年GaN射频模块在6G基站设备中的应用:国博电子布局进展解析
- 投资方案经济效果评价的指标和方法
- 2026年网络安全攻防技术
- 急诊护理与医患沟通
- 急诊科专科护理标准化操作流程
- 泌尿外科护理中的心理支持技巧
- 2025-2026学年浙江省杭州市三墩中学八年级(上)月考数学试卷(1月份)(含答案)
- 2025 医学急危重症 ECMO 护理课件
- 中药服用基本知识
- 预防三高讲座课件
- 光纤接入设备安装施工方案
- 2025年重庆市中考道德与法治试卷
- 生产车间物料流转管理操作规范
- 农村共建房屋合同范本
- GB/T 6730.13-2025铁矿石钙和镁含量的测定EGTA-CyDTA滴定法
- GB/T 46224-2025碳化物球化程度的评定方法
- 2025年天津市事业单位招聘考试综合类专业能力测试试卷(新闻类)
- 《烹饪美学》课件-第二章 烹饪与色彩
评论
0/150
提交评论