计算机二级

以下函数的功能是:计算a的n次方作为函数值返回。 double fun(double a,int n) { int i;double s=1.0; for(i=1;iA.s*iB.s*aC.s+i*iD.s+a*a

题目
以下函数的功能是:计算a的n次方作为函数值返回。 double fun(double a,int n) { int i;double s=1.0; for(i=1;i<=n;i++)s= ; return s; } 为实现上述功能,函数中下划线处应填入的是( )。

A.s*i

B.s*a

C.s+i*i

D.s+a*a

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。

所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如,28的因子为1,2,4,7,14,而28=1+2+4+7+14,因此28是“完全数”。

[C函数1]

int factors(int n)

{ int i,s;

for(i=1,s=0;i<=n/2;i++)

if(n%i=0) (1)______;

if( (2)______ )return 0;

rerurn-1;

}

[说明2]

函数int maxint(int a[],int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。

[C函数2]

int maxint(int a[],int k)

{ int t;

if( (3)_____ ) return (4)_______;

t=maxint(a+1, (5)______ );

return(a[0]>t)?a[0]:t;

}


正确答案:s+=i (2) n==s (3) k==1或k-1==0 (4) a[0]或*a或a[k-1] (5) k-1或--k
s+=i (2) n==s (3) k==1或k-1==0 (4) a[0]或*a或a[k-1] (5) k-1或--k 解析:对于函数1,是判断整数n(n>=2)是否为完全数。首先用for循环求该整数的所有因子之和,所以(1)填“s+=i”。若其和等于整数本身,则为完全数,返回值为0,则(2)填“n==s”;否则返回值为-1。
对于函数2,是用递归方法找出数组中的最大元素。该递归的出口条件为k=1,即(3)填“k==1”或“k-1==0”;只有一个数时,它本身就是最大的,(4)填“a[0]”或“*a”或“a[k-1]”;对于多个数的情况,在剩下的k-1个元素中找到最大的,并与首元素值比较,返回最大的一个,所以(5)填“k-1”或“-k”。

第2题:

函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。

例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。

#include

#include

float fun (int m, int n)

{ int i;

double p=1.0;

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

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

for(i=1;i<=m-n;i++)p=p/i;

return p;}

main ()

{ clrscr();

printf ("p=%f\n",fun (12,8));}


正确答案:
p=p*i;p=p/i

第3题:

若有以下函数首部

int fun(double x[10], int *n)

则下面针对此函数的函数声明语句中正确的是

A)int fun(double x, int *n);

B)int fun(double , int );

C)int fun(double *x, int n);

D)int fun(double *, int *);


正确答案:D
答案 D
解析 : 函数首部 int fun(double x[10],int *n) 表示这个函数的返回值是整型,其第 1 个形式参数是一个双精度的一维数组,第 2 个参数是一个整型指针。在 C 语言中,一维数组的名字表示的是一维数组的地址,所以选项D是正确的。

第4题:

以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回,请填空。(设N己定义)

int fun(int x[N])

{int i,k=0

for(i=0;i<N;i++)

if(x[i]<x[k])k=_____;

return x[k];

}


正确答案:i
i 解析:循环语句依次查找数组的元素,下标从0到N-1,当x[i]的值小于k时,记录i值即此元素的下标,然后再将其余元素与新的k元素比较,最终求得最小值。所以填i。

第5题:

请补充函数fun(),该函数的功能是:计算N×N维矩阵元素的方差,结果由函数返回。维数N在主函数中输入。例如:

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include <stdio.h>

include <conio.h>

include <stdlib.h>

include <math.h>

define N 20

double fun(【 】,int n)

{

int i,j;

int k;

double s=0.0;

double f=0.0;

double aver=0.0;

double sd=0.0;

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

for(j=0;j<n;j++)

s+=a[i][j];

aver=【 】;

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

for(j=0;i<n;j++)

f+=(a[i][j]-aver)*(a[i][j]-aver);

f/(n*n);

sd=【 】;

return sd;

}

main()

{

int a[N][N];

int n;

int i,j;

double s;

clrscr();

printf("***+Input the dimension of

array N*****\n");

scanf("%d",&n);

printf("***** The array *****\n");

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

{

for(j=0;j<n;j++)

{

a[i][j]=rand()%50;

while(a[i][j]=0)

a[i][j]=rand()%60;

printf("%4d",a[i][j]);

}

printf("\n\n");

}

s=fun(a,n);

printf("******* THE RESULT *******\n");

printf("%4.3f\n",s);

}


正确答案:int a[][N] s/(n*n) sqrt(f)
int a[][N] s/(n*n) sqrt(f) 解析:第一空;由主函数main()中对函数fun()的调用格式,可以知道,函数fun()的第一个参数是N×N的二维整型数组。第二空:平均值等于所有元素的累加和除以个数。第三空;根据公式,方差sd等于对变量f开平方,这里注意对数学库函数的调用。

第6题:

请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。

例如:当x[10]={15.6, 19.9, 16.7, 15.2, 18.3, 12.1, 15.5,11.0, 10.0, 16.0},结果为:avg=15.030000。

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

请勿改动主函数main和其他函数中的任何内容,仪在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<conio.h>

double fun(double x[10])

{

int i;

long t;

double avg=0.0;

double sum=0.0;

for(i=0;i<l0;i++)

【 】;

avg=sum/10;

avg=【 】;

t=【 】;

avg=(double)t/100;

return avg;

}

main()

{

double avg,x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0};

int i;

clrscr();

printf(“\nThe original data is:\n”);

for(i=0;i<l0;i++)

printf("%6.lf",x[i]);

printf(“\n\n”);

avg=fun(x);

printf(“average=%f\n\n”,avg);

}


正确答案:sum+=x[i] avg*1000 (avg+5)/10
sum+=x[i] avg*1000 (avg+5)/10 解析:第一空:通过for循环求出10个数的累加和,存于变量sum中。第二空:为了实现四舍五入保留两位小数的功能,应将平均值先扩大1000倍。第三空:将平均值加上5,再除以10,实现四舍五入的功能。

第7题:

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fjun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

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

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

试题程序:

include <stdio.h>

define N 12

typede f struct

{ char num[10];

double s;

} STREC;

double fun (STREC *a,STREC *b, int *n)

{

}

main ( )

STREC s IN] = { { "GA05", 85 }, { "GA03", 76 },

{"GA02", 69}, {"GA04", 85}, {"GA01", 91},

{"GA07", 72}, {"GA08", 64}, {"GA06", 87},

{"GA09", 60}, { "GAll", 79 }, { "GA12", 73},

{"GA10", 90 } };

STREC h[N],t;

FILE *out;

int i ,j,n;

double ave;

ave=fun (s, h, &n);

printf("The %d student data which is

higher than %7.3f: In", n, ave);

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

printf ("%s %4.1f\n",h[i] .num, h[i] .s);

printf ("\n");

out=fopen ("out90.dat", "w");

fprintf(out, "%dkn %7.3f\n",n,ave);

for(i=0; i<n-1; i++)

for (j=i+l; j<n; j ++)

if (h[i] .s<h[j ] .s)

{t=h Ii] ;h[i]=h[j] ;h[j]=t; }

/*分数从高到低排列*/

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

fprintf(out, "%4.1f\n",h[i] .s);

fclose (out);

}


正确答案:double fun (STREC *a STREC *b int *n) { int i; double ay=0.0; *n=0; for(i=0;iN;i++) av=av+a[i].s; ay=ay/N; /*求平均值*/ for(i=0;iN;i++) if(av=a[i].s) { b[*n]=a[i];*n-*n+l;} /*将高于等于平均分的学生存从所指存储单元中并统计人数*/ return ay; /*返回严均分*/ }
double fun (STREC *a, STREC *b, int *n) { int i; double ay=0.0; *n=0; for(i=0;iN;i++) av=av+a[i].s; ay=ay/N; /*求平均值*/ for(i=0;iN;i++) if(av=a[i].s) { b[*n]=a[i];*n-*n+l;} /*将高于等于平均分的学生存从所指存储单元中,并统计人数*/ return ay; /*返回严均分*/ } 解析:本题中第1个循环的作用求出所有分数的总和,只有进行了av=av/N后才得到平均值(我们在前面的程序中碰到过类似问题)。第2个循环的作用是将高于等于平均分的学生存入b所指存储单元中。同一结构体变量之间可以互相赋值。
本程序中直接用*n来表示b的下标,注意开始时要给,*n赋0,且使用时不能少*号。因为单独的n是一个指针变量,而我们要用的是它所指向的那个存储单元中的值。

第8题:

函数 void fun(float *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。

void fun( float *sn, int n)

{ float s=0.0, w, f=-1.0;

int i=0;

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

{ f=( )* f;

w=f/(2*i+1);

s+=w; }

( )=s;}


正确答案:
-1;*sn

第9题:

请补充函数fun,其功能是:计算并输出给定10个数的方差:

例如,给定的10个数为15.0,19.0,16.0,15.0,18.0,12.0, 15.0,11.0,10.0,16.0,输出为s=2.758623。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<math. h>

double fun (double x[10])

{

int i;

double avg=0.0;

double sum=0.0;

double abs=0.0;

double sd;

for (i=0; i<10; i++)

【 】;

avg=sum/10;

for(i=0;i<10;i++)

【 】;

sd=【 】;

return sd;

}

main()

{

double s,x[10]={15.0,19.0,16.0,15.0,

18.0,12.0,15.0,11.0,10.0,16.0};

int i;

printf("\nThe original data is :\n");

for(i=0;i<10;i++)

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

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

}


正确答案:sum+=x[i] abs+=(x[i]-avg)*(x[i]-avg) sqrt(abs/10)
sum+=x[i] abs+=(x[i]-avg)*(x[i]-avg) sqrt(abs/10) 解析:第一空:根据求方差的公式可知,首先要求出10个数的平均值,此处是利用for循环对10个数求累加和。第二空:使用for循环求出每个数与平均值之差的平方和。第三空:通过开方,求出10个数的方差,此处需要注意对库函数sqrt()的调用。

第10题:

下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:若a数组中的值为

a= 0 1 2 7 9

1 9 7 4 5

2 3 8 3 1

4 5 6 8 2

5 9 1 4 1

则返回土程序后s的值应为3.375。

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

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

试题程序:

include <stdio.h>

include<conio.h>

include<stdlib.h>

define N 5

double fun (int w[] [N])

{

}

main()

{

int a[N] [N]={0,1,2,7,9,1,9,7,4,5,2,

3,8,3,1,4,5,6,8,2,5,9,1,4,1};

int i, j;

double s;

clrscr();

printf("*****The array*****\n ");

for (i=0; i<N; i++)

{ for (j=0;j<N;i++)

{printf("%4d ",a[i] [j]);}

printf("\n ");

}

s=fun(a);

printf("*****THE RESULT*****\n ");

printf("The sum is : %lf\n ",s);

}


正确答案:double fun (int w[][N]) { int ijk=0; double av=0.0; for(i=0;iN;i++) for(j=0;jN;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1则它一定是周边元素*/ {av=av+w[i][j]; /*将周边元素求和*/ k++; } return av/k; /*求周边元素的平均值*/ }
double fun (int w[][N]) { int i,j,k=0; double av=0.0; for(i=0;iN;i++) for(j=0;jN;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1,则它一定是周边元素*/ {av=av+w[i][j]; /*将周边元素求和*/ k++; } return av/k; /*求周边元素的平均值*/ } 解析:该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0或N-1,则它一定是周边元素。计算周边元素个数的方式是当给av加一个值时,则k加1。k也可用2*N+2*N-4求得。

更多相关问题