编程题:
68.请编写函数fun,其功能是:计算并输出下列多项式值:
Sn = 1 + 1/1! + 1/2! + 1/3! + 1/4! + … + 1/n!
例如,若主函数从键盘给n输入15,则输出为s=2.718282。
注意:n的值要求大于1但不大于100。部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
double fun(int n)
{
}
main()
{
int n;
double s;
printf(“Input n: “);
scanf(“%d”,&n);
s=fun(n);
printf(“s=%fn”,s);
}
76.请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。
例如,若主函数从键盘给x输入0.21后,则输出为s:1.100000。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <math.h>
double fun(double x)
{
}
main()
{
double x,s;
printf(“Input x: “);
scanf(“%lf”,&x);
s=fun(x);
printf(“s=%fn”,s);
}
改错题:
92.下列给定程序中,fun函数的功能是:求s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)。例如a=3, n=6, 则以上表达式为:
s=333333-33333-3333-333-33-3
其值是296298。a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <conio.h>
#include <stdio.h>
long fun(int a, int n)
{
int j;
/********found********/
long s=0,t=1;
/********found********/
for(j=0 ; j<=n ; j++)
t=t*10+a;
s=t;
for(j=1;j<n;j++)
{
/********found********/
t=t%10;
s=s-t;
}
return(s);
}
main( )
{
int a,n;
clrscr();
printf(“nPlease enter a and n:”);
scanf(“%d%d”,&a,&n);
printf(“The value of function is %ldn”,fun(a,n));
}
100.下列给定程序中,函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
int fun(unsigned n, int *zero)
{
int count=0,max=0,t;
do
{
t=n%10;
/********found********/
if(t=0)
count++;
if(max<t)
max=t;
n=n/10;
}while(n);
/********found********/
zero=count;
return max;
}
main()
{
unsigned n;
int zero,max;
printf(“nInput n(unsigned): “);
scanf(“%d”,&n);
max=fun(n,&zero);
printf(“nThe result: max=%d zero=%dn”,max,zero);
}