请编写函数fun
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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