max=a[i][j];
returnmax;
}
*/
第2套
一程序填空题
下列给定程序中,函数fun的功能是:
计算如下公式前n项的和,并作为函数值返回。
S=1×3/22+3×5/42+5×7/62+(2×n-1)×(2×n+1)/(2×n)2
例如,当形参n的值为10时,函数返回值为9.612558
请在下划线处填入正确的内容并将下面下划线删除,使程序得出正确的结果。
试题程序:
#include﹤stdio.h﹥
doublefun(intn)
﹛inti;doubles,t
/********found*********/
S=[1]
/*********found*******/
for﹙i=1;i<=[2];i++﹚
﹛t=2,o*i;
/********found*********/
S=s+﹙2.o*i-1﹚*﹙2.o*i+1﹚/[3];
﹜
returns;
﹜
voidmain()
﹛intn=-1;
while﹙n<0﹚
﹛printf﹙”pleaseinput﹙n>0﹚:
”﹚;
scanf﹙”%d”,&n﹚;﹜
printf﹙“\nTheresultis:
%f\n”,
fun(n);
﹜
二程序改错题
下列给定程序中,函数fun的功能是:
统计substr所指的字符串在str所指的字符串中出现的次数。
例如,若字符串为aaaslkaass,子字符串为as,则应输出2,,请改错
试题程序:
#include﹤stdio.h﹥
intfun﹙char*str,char*substr﹚
﹛inti,j,k,num=o;﹜
/********found*********/
for﹙i=0,str[i],i++﹚
for(j=i,k=o;substr[k]==str[j];k++,j++)
/********found*********/
If(substr[k+1]==‘\0’)
﹛num++;
break;
﹜
returnnum;
﹜
main()
﹛charstr[80],substr[80];
printf(“inputasubstring:
”);
gets(substr);
printf(“%d\n”,fun(str,substr)
﹜
三、程序设计题
编写函数fun,其功能是:
根据一下公式求
的值(要求精度0.0005即某项小于0.0005时停止跌代)
=1+
…+
程序运行后,若输入精度0.0005,则程序应输出为3.14…。
试题程序:
#include﹤stdio.h﹥
#include﹤conio.h﹥
#include﹤math.h﹥
doublefun(doubleeps)
﹛
﹜
Voidmain()
﹛
doublex;
printf(“inputeps:
”)
scanf(“%if”,&x);
printf(“\neps=%if,pi=%if\n”,x,fun(x));
﹜
答案:
一
(1)0
(2)n(3)(t*t)
二
(1)for(i=0;str[i];i++)
(2)if(substr[k+1]==’\0’)
三
doublefun(doubleeps)
{
doubles=1,0,s1=1,0;
intn=1;
while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1);/*求多项式的每一项*/
S=s+s1;/*求和*/
n++;
}
return2*s;
}
第三套
一、给定程序中,函数fun的功能是:
统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
#include
Voidfun(char*s,int*t)
{inti,n;
N=o;
/******found************/
For(i=0;[1]!
=o;i++)
/*************found******/
If(s[i]>='0'&&s[i]<=[2])n++;
/**********found*********/
[3];
}
Main()
{chars[80]="abcdef35adgh3kjsdf7";
Intt;
Printf("\nTheoriginalstringis
:
&s\n",s);
Fun(s,&t);
Printf("\nTheresultis:
&d\n",t);
}
答案/*s[i];'9';*t=n*/
二、下列给定程序中函数fun的功能是:
实现两个变量值的交换,规定不允许增加语句和表达式。
#include
#include
#include
Intfun(int*t,inty)
{
Intt;
/*******found******/
T=x;x=y;
/**********found**********/
Return(y);
}
Voidmain()
{
Inta=3,b=8;
System("CLS");
Printf("%d%d\n",a,b);
B=fun(&a,b);
Printf("%d%d\n",a,b);
}
答案/*t=*x;*x=y;
(2)returnt*/
三、编写函数fun,其功能是:
求出1—1000能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
#include
#include
#include
Voidfun(int*a;int*n)
{
}
Voidmain()
{
Intaa[1000],n,k;
System("CLS");
Fun(aa,&n);
For(k=o;kIf((k+1)%10==0)
{printf("%5d",aa[k]);
Printf("\n");/*一行写9个数*/
Else
Printf("%5d",aa[k]);
}
}
答案/*inti,j=0;
for(i=1;i<=1000;i++)
if((i%7==o||i%11==0)i%77!
=0)
a[j++]=i;
*n=j;*/
第四套
一、下列给定程序中,函数fun的功能是:
把形参a所指数组中的奇数按原顺序依次存放到a[0],a[1],a[2]...中,把偶数从数组中删除,奇数个数通过函数值返回。
#include
#defineN9'
Intfun(inta[],intn)
{inti,j;
j=0;
for(i=0;i/********found******/
if(a[i]%2==[1])
{
/********found*******/
a[j]=a[i];[2];
}
/**********found***********/
Return[3];
}
main()
{intb[N]={9,1,4,2,3,6,5,8,7},i,n;
Printf("\nTheoriginaldata:
\n");
For(i=0;iPrintf("%4d",b[i]);
Printf("\n");
n=fun(b,N);
Printf("\nThenumberofodd:
%d\n",n);
Printf("\nTheoddnumber:
\n");
For(i=0;iPrintf("%4d",b[i]);
Printf("\n");
}
答案/*
(1)1
(2)j++(3)j*/
二、下列给定程序中函数fun的功能是:
求两个非零正整数的最大公约数,并作为函数值返回。
#include
Intfun(inta,intb)
{
Intr,t;
If(a
/**********found**********/
T=a;b=a;a=t;
}
R=a%b;
While(r!
=0)
{a=b;b=r;r=a%b;}
/**************found***********/
Return(a);
}
Voidmain()
{
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);
}
答案/*
(1){t=a;a=b;b=t;}
(2)returnb*/
三、规定输入的字符串中只含字母和*号。
编写函数fun其功能是:
删除字符串中所有的*号。
编写函数时,不得使用c语言提供的字符串函数。
#include
#include
Voidfun(char*a)
{
}
Voidmain()
{
Chars[81];
Printf('Enterastring:
\n");
Gets(s);
Fun(s);
Printf("Thestringafterdeleted:
\n");
Puts(s);
}
答案/*inti,j=0;
for(i=0;a[i]!
='\0';i++)
if(a[i]!
='*')
a[j++]=a[i];
a[j]='\0';
第五套
一、下列给定程序中,函数fun的功能是:
将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
#include
Unsignedlongfun(unsignedlongn)
{unsignedlongx=o;int=t;||||
While(n)
{t=n%10;
/**********found*********/
If(t%2==[1])
/***************found**********/
X=[2]+t;
/***********found***********/
N=[3];
}
Returnx;
}
Main()
{unsignedlongn=-1;
While(n>99999999||n<0)
{printf("Pleaseinput(0"):
Scanf("%ld",&n);
Printf("\nTheresultis:
%ld\n",fun(n))};
}
答案
(1)0
(2)10*x(3)n/10
二、下列给定程序中,函数fun的功能是:
将长整型数中各位上位奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
#include
#include
#include
Voidfun(longa,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;
}
}
Voidmain()
{
Longs,t;
System("CLS");
Printf("\nPleaseenters:
");
Scanf("%ld",&s);
Fun(s,&t);
Printf("Theresultis:
%ld\n",t);
}
答案/*
(1)*t=0
(2)if(d%2!
=0)
三、编写函数fun,其功能是:
实现两个字符串连接,即把p2所指的字符串连接到p1所指的字符串的后面。
#include
#include
#include
Voidfun(charp1[],charp2[])
{
}
Voidmain()
{
Chars1[80],s2[40];
System("CLS");
Printf("Enters1ands2:
\n");
Scanf("%s%S",s1,s2);
Printf("s1=%s\n",s1);
Printf("s2=%s\n",s2);
Printf("Invokefun(s1,s2):
\n");
Fun(s1,s2);
Printf("Afterinvoking:
\n");
Printf("%s\n",s);
}
答案/*inti,j;
for(i=0;p1[i]!
='\0';i++);
for(j=0;p2[j]!
='\0';j++);
p1[i++]=p2[j];
p1[i]='\0';
第六套
一、下列给定程序中,函数fun的功能是:
把形参a所指数组中最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。
#include
#definedN9
Voidfun(inta[],intn)
{inti,j,max,min,px,pn,t;
For(i=0;i{
/**********found*********/
Max=min=[1];
Px=pn=i;
For(j=i+1;j{/***********found**********/
If(max<[2])
{max=a[j];px=j;}
/***********found*********/
If(min>[3])
{min=a[j];pn=j;}
}
If(pn!
=i)
{t=a[i];a[i]=min;a[pn]=t;
If(px==i)px=pn;
}
If(px!
=i+1)
{t=a[i+1];a[i+1]=max;
A[px]=t;}
}
Voidmain()
{intb[N]={9,1,4,2,3,6,5,8,7},i;
Printf("\nTheoriginaldata:
\n");
For(i=0;iPrintf("%4d",b[i]);
Printf("\n");
Fun(b,N)
Printf("\nThedataaftermoving:
\n");
For(i=0;iPrintf("%4d",b[i]);
Printf("\n");
}
答案
(1)a[i]
(2)a[j](3)a[j]
二、下列给定程序中函数fun的功能是:
用递归算法计算斐波拉契数列中第n项的值。
从第1项起,斐波拉契数列为:
1,1,2,3,5,8,13,21,……
#include
Longfun(intg)
{
/***********found*********/
Switch(g);
{case0:
return0;
/************found***********/
Case1;case2:
return1;}
Return(fun(g-1)=fun(g-2);}
Voidmain()
{longfib;intn;
Printf("Inputn:
");
Scanf("%d",&n);
Printf("n=%d\n",n);
Fib=fun(n);
Printf("fib=%d\n\n",fib);
}
答案
(1)去掉分号
(2)case1:
case2:
return1;
三、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:
求出该学生的平均分,并放入记录的ave成员中。
#include
#definedN8
Typedefstruct
{charnum[10];
Doubles[N];
Doubleave;
}
STREC;
Voidfun(STREC*a)
{
}
Voidmain()
{STRECa={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
Inti;
Fun(&5);
Printf("The%sstudentdata:
\n",s.num);
For(i=0;iPrintf("%4.lf\n",s.s[i]);
Printf("\nave=%7.3f\n",s.ave);
}
答案inti;
a->ave=0.0;
for(i=o;ia->ave=a->s[i];
a->ave=a-.ave/N;
第七套
一程序填空题
下列给定程序中,函数fun的功能是进行数字字符转换。
若形参ch中是数字字符‘0’—‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,、、、、,‘9’转换成‘0’;若是其他字符则保持不变;并将转换后的结果作为函数值返回。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果、
试题程序:
#include﹤stdio.h﹥
********found*********/
[1]fun(charch)
{
********found*********/
If(ch〉=‘0’&&[2])
********found*********/
return‘9’-(ch-/[3]);
returnch
}
main()
{charc1,c2;
printf(“\nTheresult:
\nn”);
c1=’2’;c2=fun(c1);
printf(“c1=%cc2=%c\n”,c1,c2);
c1=’8’;c2=fun(c1);
printf(“c1=%cc2=%c\n”,c1,c2);
c1=’a’;c2=fun(c1);
printf(“c1=%cc2=%c\n”,c1,c2);
}
二程序改错
下列给定程序中函数fun的功能是:
将p所指字符串中的所有字符复制到b中,要求每复制三个字符字符之后插入一个空格。
例如,若给a输入字符串:
“ABCDEFGHIJK”,调用函数后,字符数组b中的内容为:
“ABCDEFGHIJK”。
请改正错误
试题程序:
#include﹤stdio.h﹥
voidfun(char*p,char*b)
{inti,k=0;
while(*p)
{i=1;
while(i﹤=3&&*p){
/********found*********/
b