请编写函数fun

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机二级C语言上机真题(96)【附详解】

作者:admin 发布时间:2012-02-08 15:29 来源:C语言中文网人围观

分享到:QQ空间新浪微博人人网腾讯微博豆瓣12

【真题1】下列给定程序中,函数fun()的功能是:求整数x 的y 次方的低3 位值。例如,整数5 的6 次方为15625,此值的低3 位值为625。试题程序:

___1__< stdio.h >

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

{ int i;

long t=1;

for(i=1;__2__;i++)

t=t*x;

*p=t;

__3___;

return t;

}

main()

{ long t, r; int x, y;

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

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

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

r,t);

}

(2011年2月)

解析:填空1:由C语言的学习我们知道这里是一个头文件的定义,定义头文

件要用关键字include,而且要用"#"开头。

填空2:这里考查的是循环结束判断语句。由题意知,这个循环是计算x的y

次幂的,而i从1 开始,要计算y次,当然就要让i自加y次,于是这里用"< =",而不是"< " 。

填空3:题目的意思是求幂的最后3 位数字,而求一个十进制数的后几位的最

常用的办法莫过于使用对其取余的操作。

答案:【1】#include 【2】i< =y 【3】t=t%1000;

【真题2】给定程序modi.c 中函数fun 的功能是:求广义菲玻那级数的第n 项。1,1,1,3,5,9,17,31,……项值通过函数值返回main( )函数。例如,若n = 15,则应输出:2209。请改正函数fun 中的语法错误,使它能计算出正确的结果。注意:不要改动main 函数,

#include < conio.h >

#include < stdio.h >

long fun ( int n )

{ long a=1, b=1, c=1, d=1, k;

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

for (k=4,k< =n,k++)

{ d = a+b+c;

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

a=b,b=c,c=d

}

return d;

}

main( )

{ int n = 15;

clrscr( );

printf( "The value is: %ld\n", fun ( n ) );

}

(2011年2月)

解析:本题的考核点是C语言的一些基本用法。

"for(k=4,k< =n,k++) "应改为"for(k=4;k< =n;k++) "。C 语言规定:每

个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。因此,"a=b,b=c,c=d "应改为"a=b;b=c;c=d;"或相同作用的语句。

【真题3】编写函数fun,它的功能是:求Fibonacci 数列中大于s的最小的一个数,结果由函数返回。其中Fibonacci 数列F(n)的定义为:F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2) 例如:当s = 1000 时,函数值为:1597。注意:部分

源程序存在文件prog.c 中。请勿改动主函数main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。

#include < conio.h >

#include < math.h >

#include < stdio.h >

int fun( int s)

{……}

main() /* 主函数*/

{ int n;

clrscr(); n=1000;

printf("n = %d, f = %d\n",n, fun(n)); }

(2011年2月)

解析:本题的考核点是循环语句的应用。提示思路:在Fibonacci 数列中,每

一项的值都是前两项之和。设置一个中间变量f2,用来置放推出的最小数,所

以可以用递推法求出大于s 的最小的一个数。/*Fibonacci 数列是这么一个数

列0,1,1,2,3,5,8,13……从它的第三项开始每一项的值都是其紧接着

的前两项的和。本也是采用函数的嵌套调用来完成,但若用嵌套调用方式会较

难理解。它要求求出比s 大的最小一个数。在本题的编程中采用的是

while(f2< =s)当它的条件这假时,即得到了第一个比t大的数。*/

int fun (int s)

{int f1=0,f2=1,temp;

while(f2< =s)

{ temp=f2;

f2=f1+f2;

f1=temp; }

return f2;

}


本文来自【C语言中文网】:/cpp/html/630.html

请编写函数fun,其功能是:计算并输出

S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+(1+2^0.5+3^0.5+……+n^0.5)

例如,在主函数中从键盘给n 输入20 后,输出为:s=534.188884。注意:要求

n 的值大于1 但不大于100。部分源程序在文件prog.c中。请勿改动主函数

main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。

#include < math.h >

#include < stdio.h >

double fun(int n)

{……}

main()

{ int n; double s;

printf("\n\nInput n: "); scanf("%d",&n);

s=fun(n);

printf("\n\ns=%f\n\n",s);

}

(2011年2月)

解析:本题的考核点是c 语言中的基本算法和sqrt()函数的使用。解题思路:

本题要求计算并输出多项式的值,通式为:1+2^0.5+3^0.5+……+n^0.5,

在给出的参考程序中,由于函数的返回值为双精度型,所以定义变量fac、sum

为双精度型,再使用sqrt()函数求出每一个多项式的值,最后通过sum+=fac;

计算出所有多项式之和,最终返回。

#include < math.h >

#include < stdio.h >

double fun(int n)

{int i; /*定义一个整形变量*/

double fac=1.0; /*定义变量fac、sum 为双精度型*/

double sum=1.0;

if (n >1&&n< =100)

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

{fac+=sqrt(i); /*使用sqrt()函数求出每一个多项式的值*/

sum+=fac; /*通过sum+=fac;计算出所有多项式之和*/

}

return sum; }


本文来自【C语言中文网】:/cpp/html/632.html

相关文档
最新文档