关于c语言程序开发过程 下面说法错误的是,c语言笔试真题

下面由我们YJBYS求职网专家为您分享关于二级c语言笔试真题,请您参考:

函数fun 的功能是:计算正整数n 的所有因子(1 和n 除外)之和作为

函数值返回。 例如:n=120 时,函数值为239。

#include < conio.h >

#include < stdio.h >

int fun(int n)

{ int _1__,s=0;

/*能整除n 的自然数即称为因子*/

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

if (n%i==0) s=___2__;

return (s);

}

main() /*主函数*/

{ printf("%d\n",fun(120));

}

(2011年2月)

解析: 本题的考核点是计算n 所有因子的算法。

解题思路:判断因子的方法是:能被n整除的数。由于题意中指明需将1和n

除外,所以循环的范围应从2至n-1。

答案:1: i 2: s+i

答案:【1】i 【2】s+i

【真题2】 已知一个数列的前三项分别为0,0,1, 以后的'各项都是其相邻的前三

项之和。给定程序modi.c 中函数 fun 的功能是:计算并输出该数列前n项的平方

根之和sum。n 的值通过形参传入。 例如,当n=10 时,程序的输出结果应为:

23.197745。 请改正函数fun 中的错误,使程序能输出正确的结果。 注意:不要

改动main 函数,

#include < conio.h >

#include < stdio.h >

#include < math.h >

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

fun(int n)

{ double sum, s0, s1, s2, s; int k;

sum = 1.0;

if (n < = 2) sum = 0.0;

s0 = 0.0; s1 = 0.0; s2 = 1.0;

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

{ s = s0 + s1 + s2;

sum += sqrt(s);

s0 = s1; s1 = s2; s2 = s;

}

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

return sum

}

main ( )

{ int n;

clrscr( );

printf("Input N=");

scanf("%d", &n);

printf("%f\n", fun(n) );

}

(2011年2月)

解析: 本题的考核点是C语言中的函数的入口参数和类型转换。

C 语言规定,凡不加类型说明的函数,一律自动按整型处理。如果函数有返回

值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类

型。根据题意,函数返回值为实型,所以第一处错误"fun(int n)"应改为"float

fun (int n)"或具有相同作用的句子。

函数的返回值是通过函数中的return语句获得的。return 语句后面的括弧可以

不要,但分号不能少,必须加分号。所以,第二处错误应改为"return sum;"或

相同作用的句子。

如果函数值的类型和return语句中表达式的 值不一致,则以函数类型为准。对

数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。

本评析仅作参考。

【真题3】 请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个

数,结果由函数返回。其中Fibonacci 数列F(n)的定义为 F(0)=0,F(1)=1,

F(n)=F(n-1)+F(n-2) 例如:t=1000 时 ,函数值为987。 注意:部分源程序给

出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun的花括号

中填入所编写的若干语句。 试题程序:

#include < conio.h >

#include < math.h >

#include < stdio.h >

int fun(int t)

{…… }

main()

{int n;

clrscr();

n=1000;

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

(2011年2月)

解析:

int fun(int t)

{int a=1,b=1,c=0,i; /*a 代表第n-2 项,b 代表第n-1 项,c 代表

第n 项*/

/*如果求得的数c 比指定比较的数小,则

计算下一个Fibonacci 数,对a,b 重新置数*/

do {

c=a+b;

a=b;

b=c;

}

while (c< t); /*如果求得的数c 比指定比较的数大时,退出

循环*/

c=a; /*此时数c 的前一个Fibonacci 数为小于指

定比较的数的最大的数*/

return c;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值