C语言上机题库百科园第3章!南信大! 下载本文

内容发布更新时间 : 2024/5/9 2:07:57星期一 下面是文章的全部内容请认真阅读。

/*****************************/ }

【参考代码】 long t;

t=(h*1000+5)/10; return (float)t/100;

/*请编写函数fun,它的功能是计算: s=

ln(1)?ln(2)?ln(3)?....?ln(m)

在C语言中可调用log(n)函数求ln(n)。 例如,若m的值为20,则fun函数值为6.506583。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/

#include #include #include double fun(int m) {

/***************Begin************/

/*************** End ************/

}

void main() {

FILE *wf;

printf(\

/******************************/ wf=fopen(\ fprintf(wf,\ fclose(wf);

/*****************************/ }

【参考代码】 int i; double s=0.0; for(i=1;i<=m;i++) s=s+log(i); return sqrt(s);

程序改错

/*下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:

?(x?1)?(x?2)??0?(x?1)?(x?2)f(x)=?x?0x?0或x?2x?0

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */

#include #include #include

/**********ERROR**********/ f(double x) {

if(x==0.0||x==2.0) return 0.0; else if(x<0.0)

return(x-1)/(x-2); else

return(x+1)/(x-2); }

double fun(int n) {

int i; double s=0.0,y; for(i=-n; i<=n;i++) { y=f(1.0*i); s+=y;} /**********ERROR**********/ return s }

void main() {

printf(\}

【参考答案】 double f(double x) 【参考答案】 return s; return (s);

/*下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量x1、x2、x3分别输入15、11、2,则输出结果应当是330。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */

#include

int fun(int x,int y,int z) { int j,t,n,m;

/**********ERROR**********/ j=1; t=m=n=1;

/**********ERROR**********/ while (t!=0 && m!=0 && n!=0) {

j=j+1; t=j%x; m=j%y; n=j%z; }

return j; }

void main() {

int x1,x2,x3,j;

printf(\ scanf(\

printf(\ j=fun(x1,x2,x3);

printf(\}

【参考答案】 j=0;

【参考答案】

while (t!=0 || m!=0 || n!=0)

/*下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。

k的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/

#include #include int fun(int k) { int m=0,mc=0, j;

while((k>=2)&&(mc<10)) {

/**********ERROR**********/ if((k=0)||(k=0)) { m=m+k;mc++;} k--;

/**********ERROR**********/ )

return m; }

void main() {

printf(\}

【参考答案】

if((k==0)||(k==0)) if((k==0)||(k==0)) 【参考答案】 }

/*下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值:

t=1-1/(2?2)?1/(3?3)?...?1/(m?m) 请改正函数fun()中的错误,使它能得出正确的结

果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */

#include #include double fun(int m) {double y=1.0; int i;

/**********ERROR**********/ for(i=2;i

/**********ERROR**********/ y-=1/(i*i); return(y); }

void main() {int n=5;

printf(\}

【参考答案】 for(i=2;i<=m;i++) 【参考答案】 y-=1.0/(i*i); y=y-1.0/(i*i);

/*下列程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:*/

#include #include long fun(long num) {

/**********ERROR**********/ long k; do {

k *=num;

/**********ERROR**********/ num \\=10; }while(num); return(k); }

void main() {

int n;

printf(\ scanf(\

printf(\}

【参考答案】 long k=1; 【参考答案】 num/=10; num=num/10;

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/

#include #include #include double fun(int m) {

double t=1.0; int i;

for(i=2;i<=m;i++)

/**********ERROR**********/ t+=1.0/k;

/**********ERROR**********/ return i;