有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。A.int类型###SX

题目
有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。A.int类型SX

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错

参考答案和解析
正确答案:A
本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);} 该函数的类型是( )。

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错


正确答案:A
解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。

第2题:

有下列函数定义:

fun(float h)

{ printf("%f,%f\n”,h,h*h);}

该函数的类型是( )。

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错


正确答案:A
解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。

第3题:

请编一个函数float fun (double h),函数的功能是对变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。

例如:若h值为8.32433,则函数返回8.32:若h值为 8.32533,则函数返回8.33。

注意:部分源程序给出如下。

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

试题程序:

include <stdio. h>

include <conio. h>

float fun (float h )

{

}

main()

{

float a;

clrscr ();

printf ("Enter a: ");

scanf ("%f", &a);

printf("The original data is : ");

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

printf("The result: %f\n", fun(a) );

}


正确答案:float fun (float h) { long t; t=(h*1000+5)/10; /*单精度数h乘以1000后再加5相当十对h中的第三位小数进行四舍五入 除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去*/ return (float) t/100; /*除以100保留2位小数*/
float fun (float h) { long t; t=(h*1000+5)/10; /*单精度数h乘以1000后再加5,相当十对h中的第三位小数进行四舍五入 除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去*/ return (float) t/100; /*除以100,保留2位小数*/ 解析:注意本题要求h的值真正发生了四舍五入,而不是为了输出,即不能用printf(“%7.2f”,h)来直接得到结果。由于单精度数h乘以1000后再加5,此时相当于对h中的第三位小数进行四舍五入,再将其赋给一个长整型数时就把第三位小数后的数全部截去。注意在return 中要将其中一个数转成浮点型数。

第4题:

下列给定程序中,函数fun()的功能是:计算

S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

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

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

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

试题程序:

include <conio. h>

include <stdio. h>

include <math. h>

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

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;}

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

return s

}

main()

{ clrscr();

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

}


正确答案:(1)错误;(1)f(double x) 正确:double f (double x) (2)错误;return s 正确:return s;
(1)错误;(1)f(double x) 正确:double f (double x) (2)错误;return s 正确:return s; 解析:该程序的流程是,fun()程序对f (n)项循环累加,fun()程序采用条件选择语句计算函数f(x)的值。本题错误在于未定义函数f(double x)的返回值类型。C语言规定,在未显式声明的情况下,函数返回值默认为int 型。

第5题:

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错


正确答案:A
本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

第6题:

有下列函数定义:

A.int类型

B.float类型

C.void类型

D.函数无类型说明,定义有错


正确答案:A
本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

第7题:

请编写函数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));

}


正确答案:int fun(int t) { int a=1b=1c=0i; /*a代表第n-2项b代表第n-1项c代表第n项*/ /*如果求得的数。比指定比较的数小则计算下一个Fibonacci数对ab得新置数*/ do { c=a+b; a=b; b=c; } while(ct); /*如果求得的数c比指定比较的数大时退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/ return c; }
int fun(int t) { int a=1,b=1,c=0,i; /*a代表第n-2项,b代表第n-1项,c代表第n项*/ /*如果求得的数。比指定比较的数小,则计算下一个Fibonacci数,对a,b得新置数*/ do { c=a+b; a=b; b=c; } while(ct); /*如果求得的数c比指定比较的数大时,退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/ return c; } 解析:根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(通过不断地重新赋值来实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。

第8题:

请完成函数fun( ),它的功能是:求Fibonacc数列中小于t的最大的一个数,结果由函数 0返回。Fibonacc数列F(n)定义为:

F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2)

例如:t=1000时,函数为987。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在下划线上填入所需的内容。

include<conio.h>

include<stdio.h>

include<math.h>

in fun(int t)

{

int a=l,b=1,c=0,i;

do

{

【 】;

a=b;

b=C;

}

while( 【 】);

c= 【 】;

return C;

}

main()

{

int n;

clrscr();

n=1000;

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


正确答案:int fun(int t) { int a=1b=1c=Oi; do { c=a+b; a=b; b=c; } while(ct); C=a; return c; }
int fun(int t) { int a=1,b=1,c=O,i; do { c=a+b; a=b; b=c; } while(ct); C=a; return c; } 解析:该数列的最终结果是由两个数列之和组成,所以可以在循环体内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b通过不断地重新赋值,但始终代表第n-1项。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。

第9题:

有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);} 该函数的类型是( )。

A.27

B.6

C.25

D.30


正确答案:A
解析: 本题考查函数调用时的参数传递。函数reverse将数组b进行了逆置,此时的 b[10]={10,9,8,7,6,5,4,3,2,1},后面for语句的功能是将b中的前3个数累加,将结果放在s中,最后将s输出,结果s=10+9+8=27。