第76套:
给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。
例如,当形参n的值为10时,函数返回:-0.204491。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结
果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
double fun(int n)
{ int i, k; double s, t;
s=0;
k=__1__;
for(i=1; i<=n; i++) {
t=__2__;
s=s+k*(2*i-1)*(2*i+1)/(t*t);
k=k*__3__;
}
return s;
}
main()
{ int n=-1;
while(n<0)
{ printf("Please input(n>0): "); scanf("%d",&n); }
printf("\nThe result is: %f\n",fun(n));
}
解题思路:
第一处:k是用来管理正负号的,公式中第一个值是正数,所以应填:1。
第二处:根据公式,t是2i,所以应填:2*i。
第三处:根据公式,第2个是负数,所以应填:(-1)。
给定程序MODI1.C中函数 fun 的功能是:判断一个整数是否是素数,若是返回1,否则返回0。
在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
int fun ( int m )
{ int k = 2;
while ( k <= m && (m%k))
k++
if (m = k )
return 1;
else return 0;
}
main( )
{ int n;
printf( "\nPlease enter n: " ); scanf( "%d", &n );
if ( fun ( n ) ) printf( "YES\n" );
else printf( "NO!\n" );
}
解题思路:
第一处:语句后缺少分号。
第二处:条件判断相等的符号是==。
请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所 在的下标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中x是数组名, n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
给定源程序:
#include <stdlib.h>
#include <stdio.h>
void fun(int a[], int n , int *max, int *d )
{
}
main()
{ int i, x[20], max , index, n = 10;
randomize() ;
for (i=0;i < n;i++) {x[i] = rand()%50; printf("%4d", x[i]) ; }
printf("\n");
fun( x, n , &max, &index);
printf("Max =%5d , Index =%4d\n",max, index );
NONO();
}
解题思路:
本题是找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。具体看参考源程序中的说明。
参考答案:
void fun(int a[], int n , int *max, int *d )
{
int i ;
*max=a[0];*d = 0 ; /* 把数组的第1个元素值赋值给最大值变量*max */
for(i = 1; i < n; i++)
if(*max < a[i]) { /* 判断*max是否小于当前值 */
*max = a[i]; /* 重新把最大值赋值给*max */
*d = i ; /* 记住下标 */
}
}