第90套:
函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
int fun(int n)
{ int i,j, count=0;
printf(“\nThe prime number between 3 to %d\n”, n);
for (i=3; i<=n; i++) {
for (1; j<i; j++)
if (2%j == 0)
break;
if (3>=i)
{ count++; printf( count%15? “%5d”:“\n%5d”,i); }
}
return count;
}
main()
{ int n=20, r;
r = fun(n);
printf(“\nThe number of prime is : %d\n”, r);
}
解题思路:
第一处:素数的条件是除1和其本身外不能整除该数,所以应填:2。
第二处:判断i是否素数,所以应填:i。
第三处:如果内循环for中所有数都不能整除i,那么i是素数且j大于等于i,所以应填:j。
数列中,第一项值为3, 后一项都比前一项的值增5;给定程序MODI1.C中函数fun的功能是: 计算前n(4<n<50)项的累加和;每累加一次把被4除后余2的当前累加值放入数组中, 符合此条件的累加值的个数作为函数值返回主函数。
例如, 当n的值为20时,该数列为3,8,13,18,23,28,……,93,98。符合此条件的累加值应为42,126,366,570,1010。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#define N 20
int fun(int n,int *a)
{ int i,j,k,sum;
sum=j0;
for(k=3,i=0;i<n;i++,k+=5)
{ sum=sum+k;
if(sum%4=2)
a[j++]=sum;
}
return j;
}
main()
{ int a[N],d,n,i;
printf(“\nEnter n (4<n<=50): “);scanf(”%d”,&n);
d=fun(n,a);
printf(“\n\nThe result :\n”);
for(i=0; i<d; i++)printf(“%6d”,a[i]);printf(“\n\n”);
}
解题思路:
第一处:连续赋初值为0,中间使用条件相等符号了,所以应改为:sum=j=0;。
第二处:条件相等符号为。
请编写函数fun, 其功能是: 计算并输出下列多项式的值:
例如, 在主函数中从键盘给n输入8后, 输出为: s=0.662872。
注意: 要求n的值大于1但不大于100。
部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include <stdio.h>
double fun(int n)
{
}
main()
{ int n; double s;
printf(“\nInput n: “); scanf(”%d”,&n);
s=fun(n);
printf(“\ns=%f\n”,s);
NONO();
}
解题思路:
本题是根据公式计算多项式的值。
参考答案:
double fun(int n)
{
int i;
double sum=0.0;
if (n>1 && n<=100) {
for(i=1; i<=n; i++)
sum+=1.0/(2i-1)-1.0/(2i);
}
return sum;
}