第2套
填空题
请在函数FUN的横线上填写若干表达式,使从键盘上输入一个整数N,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:0 1 1 2 3 5 8 13…..
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
int fun(int n);
main()
{
int i, n = 0;
scanf("%d", &n);
for (i=0; i printf("%d ", fun(i));
}
int fun(int n)
{
if (___1___)
return 0;
else if (___2___)
return 1;
else
return ___3___;
}
第1处填空:n==0或0==n或!n
第2处填空:n==1或1==n
第3处填空:fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1)
改错题
下列给定程序中,函数FUN的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序: #include #include void fun(char *p, char *q, char *c)
{
/********found********/
int k = 1;
/********found********/
while (*p != *q)
{
if (*p
c[k] = *q;
else
c[k] = *p;
if (*p)
p++;
if (*q)
q++;
k++;
}
}
main()
{
char a[10] = "aBCDeFgH", b[10] = "ABcd", c[80] = {’\0’};
fun(a, b, c);
printf("The string a:");
puts(a);
printf("The string b:");
puts(b);
printf("The result:");
put s(c);
}
第1处:int k=1应改为int k=0;
第2处:while(*p!=*q)应改为while(*p||*q)
编程题
请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7或11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include #include void fun(int *a,int *n)
{
}
main()
{
int aa[1000],n,k;
FILE *out;
fun(aa,&n);
out=fopen("out.dat", "w");
for(k=0;kif((k+1)==0)
{
printf("]\n",aa[k]);
fprintf(out, "%d\n", aa[k]);
}
else
{
printf("],",aa[k]);
fprintf(out, "%d,", aa[k]);
}
fclose(out);
}
答案是:
void fun(int *a,int *n)
{
int i,j=0;
for(i=2;i<1000;i++)
if( (i%7==0||i==0)&&iw!=0)
a[j++]=i;
*n=j;
}