第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;
 }