知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

53套: 

函数fun的功能是:计算 

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

#include <math.h> 

double fun(double x) 

{ double f, t; int n; 

f = 1.0 + x; 

/ **********found**********/ 

t = ___1___; 

n = 1; 

do { 

n++; 

/ **********found**********/ 

t *= (-1.0)*x/___2___; 

f += t; 

/ **********found**********/ 

while (___3___ >= 1e-6); 

return f; 

 

main() 

{ double x, y; 

x=2.5; 

y = fun(x); 

printf("\nThe result is :\n"); 

printf("x=%-12.6f y=%-12.6f\n", x, y); 

解题思路: 

第一处:根据公式可知,变量t的值为x。 

第二处:根据公式可知,此处应该除以n,所以应填:n。 

第三处:根据试题中条件的要求,所以应填:fabs(t)。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是求整数xy次方的低3位值。例如,整数56次方为15625, 此值的低3位值为625。 

请改正函数fun中指定部位的错误使它能得出正确的结果。 

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

给定源程序: 

#include <stdio.h> 

long fun(int x,int y,long *p ) 

{ int i; 

long t=1; 

/ **************found**************/ 

for(i=1; i<y; i++) 

t=t*x; 

*p=t; 

/ **************found**************/ 

t=t/1000; 

return t; 

main() 

{ long t,r; int x,y; 

printf("\nInput x and y: "); scanf("%ld%ld",&x,&y); 

t=fun(x,y,&r); 

printf("\n\nx=%d, y=%d, r=%ld, last=%ld\n\n",x, y,r,t ); 

解题思路: 

第一处:错误在for循环语句上,根据试题要求,终止条件应该是i<=y。 

第二处:要取低3位的值时,应模1000取余数,而不是整除1000取商。 

*************************************************** 

例如在主函数中从键盘给x输入0.21,输出为:s=1.100000。 

注意部分源程序在文件PROG1.C中。 

请勿改动主函数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=%f\n",s); 

NONO(); 

解题思路: 

本题是根据给定的公式进行计算。具体操作请看答案程序中的说明。 

参考答案: 

double fun(double x) 

int n=1; / * 循环计数*/ 

double sn=1; / * 累计数*/ 

double xn=1,xn1=0; / *xn,以及xn-1;*/ 

while(fabs(xn-xn1)>=0.000001)/ *绝对值是否满足条件*/ 

xn=xn*x*(0.5-n+1)/n; / *表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/ 

n+=1; 

sn+=xn; / *sn累加上xn*/ 

return(sn); 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多