根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。

题目
根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列说法不正确的是

A.int *fun();----fun是一个返回int指针的函数

B.int (*fun)();---fun是一个返回int指针的函数

C.int (*array[5])();----array是一个有5个元素的数组,每一个元素都是一个函数指针,指向一个返回int的函数

D.int (*fun(int))(int);----fun是带有一个int参数的函数,返回值是一个函数指针,这个指针指向带有一个int参数并返回int的函数


正确答案:B
解析:该函数中fun是一个函数指针。指向一个返回int的函数。

第2题:

请编写一个函数int fun(int n),其中n为自然数。函数fun()的功能是求出自然数n(包括n)以内所有素数的和,并返回其值。

注意;部分源程序已存在文件PROC11.cpp中。

请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

文件PROC11.cpp的内容如下:

//PROC11.cpp

include<iostream>

using namespace std;

int fun(int n);

int main()

{

int number;

cout<<"Enter the number which you want to caculate: \n";

cin>>number;

cout<<"The result is:"<<fun(number)<<end1;

return 0;

}

int fun(int n)

{

//* * * * * * * * *

}


正确答案:

第3题:

●试题一

阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【函数1.1说明】

函数strcpy(char*to,char*from)将字符串from复制到字符串to。

【函数1.1】

void strcpy(char*to,char*from)

{while( ( 1 ) );}

【函数1.2说明】

函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。

【函数1.2】

void merge(int a[ ],int n,int b[ ],int m,int *c)

{ int i,j;

for(i=j=0;i<n && j<m;)

*c++=a[i]<b[j]? a[i++]:b[j++];

while( (2) )*c++=a[i++];

while( (3) )*c++=b[j++];

}

【函数1.3说明】

递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。

【函数1.3】

int sum(int a[ ],int n)

{ if(n>0)return (4) ;

else (5) ;

}


正确答案:

●试题一

【答案】(1)*to++=*from++ 或 (*to++=*from++)!=′\0

(2)i<n i!=n(3)j<m 或 j!=m

(4)an-1+sum(an-1);或 a0+sum(a+1n-1)(5)return 0

【解析】(1)完成字符的复制,并使指针指向下一元素。(2)当出现某一数组所有元素均已合并完成,则将另一数组其他元素直接进行复制。b串已复制完。(3)判断a串是否已复制完。(4)递归函数sun()完成数组n个元素的累加,当n>0时,使用规模为n-1的函数进行递归。(5)n<=0时,返回0即可。

 

第4题:

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

a=0 1 2 7 9

1 11 21 5 5

2 21 6 11 1

9 7 9 10 2

5 4 1 4 1

则返回主程序后s的值应为310。

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

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

试题程序:

include<stdio.h>

include<conio.h>

include<stdlib.h>

define N 5

int fun (int w[][N])

{

}

main()

{

int a[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2, 21,6,11,1,9,7,9,10,2,5,4,1,4,1};

int i,j;

int 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:%d\n",s);

}


正确答案:int fun(int w[])[N]) { int ijk=0; int s=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则它一定是周边元素*/ {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/ } return s; /+返回周边元素的平方和*/ }
int fun(int w[])[N]) { int i,j,k=0; int s=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,则它一定是周边元素*/ {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/ } return s; /+返回周边元素的平方和*/ } 解析:该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0或N-1,则它一定是周边元素。

第5题:

以下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。

第6题:

阅读以下说明和C语言函数,将应填入(n)处。

[说明]

函数int find_Max_Min(int a[],int n)的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值:再比较a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;以此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。

[函数]

int find_Max_Min(int a[],int n)

{/*找出n个元素的数组a的最大、最小元素并输出,返回查找过程元素中的比较次数*/

int i,Count=0;

int temp,Maxnum,Minnum;

for(i=0; i<n/2; i++){

Count=Count+1 /*元素比较次数计数*/

if(a[i]>a[(1)])

{/*数组元素交换代码略*/}

}

Maxnum=a[n-1]; Minnum=a[0];

for(i=1;i<n/2+n%2;i++){

Count=(2); /*元素比较次数计数*/

Minnum=(3)? a[i]:Minnum; /*找最小元素*/

Maxnum=(4)?(5):Maxnum; /*找最大元素*/

}

printf("Max=%d\n",Maxnum);

printf("Min=%d\n",Minnum);

return Count;

}


正确答案:(1)n-i-1(2)Count+2(3)a[i]Minnum (4)a[n-i-1]>Maxnum(5)a[n-i-1]
(1)n-i-1(2)Count+2(3)a[i]Minnum (4)a[n-i-1]>Maxnum(5)a[n-i-1] 解析:本题考查编写C语言程序的基本知识。
先分析第一个for语句。
for(i=0; in/2; i++){
Count=Count+1;/*元素比较次数计数*/
if(a[i]>a[(1)])
{/*数组元素交换代码略*/)
}
根据函数int find_Max_Min(int a[],int n)的功能以及题于中描述的查找方法,可知经过第一个for循环后,数组a中的元素被分成了前半区(最小元素所在区域)和后半区 (最大元素所在区域)。由于元素a[0]与a[n-1]比较,a[1]与a[n-2]比较,由于i值随循环的变化规律是0,1,2,…,因此空(1)处应填入n-1-1。
再分析第二个for语句,此前先假设a[n-1]为最大元素Maxnum,a[0]为最小元素 Minnum。
for(i=1;in/2+n%2;i++){
Count=(2);/*元素比较次数计数*/
Minnum=(3)?a[i]:Minnum;/*找最小元素*/
Maxnum=(4)?(5):Maxnum; /*找最大元素*/
}
显然,同一个循环中在前半区查找最小元素,在后半区查找最大元素,元素比较次数计数器count的值随循环每次增加2。由于i值的变化规律为0,1,2,…,因此空(3)处填入“a[i]Minnum”,结合“? a[i]:Minnum” 表示找到更小元素a[i]时用a[i]更新 Minnum的值:同理,在后半区找到更大元素时更新Maxnum的值,题干中已经明确在后半区从后往前找出大元素,因此空(4)处应填入“a[n-I-1]>Maxnum”,空(5)处填入“a[n-i-1]”。

第7题:

阅读以下说明和流程图,回答问题将解答填入对应栏。

[说明]

本流程图实现采用递归函数来求一个整数数组中从元素0到元素n中的最小值。该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有n的元素的数组的最小值时,只要求将前n-1的元素的最小值与第n个元素比较即可。不断地重复这一过程,直到数组中只剩下一个元素,那么它必定是最小值。

注:int min(int X,int y)为返回两数中最小数的函数。

int minInArray(int a[],int n)为返回数组中最小数的函数。

minA为数组中最小值。

[问题l]

将流程图的(1)~(4)处补充完整。

[问题2]

min()函数的定义为(5)。


正确答案:(1) minInArray(an); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(an-1)a[n]); (5) xy?x:y;
(1) minInArray(a,n); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(a,n-1),a[n]); (5) xy?x:y; 解析:本题目考查流程图。
题目是利用递归来求数组中的最小值,则一定是反复的调用一个求数组最小值的函数,直到比较数组中最后只剩下两个数,则(1)中填入的应是“minlnArray(a,n)”,然后,判断n的值是否为1,如果是,则说明数组中只有一个数,则它一定就是最小值,可以直接输出,所以(2)应填入“1”,(3)应填入“minA=a[n]”;如果n的值不是1,则说明要继续递归,则再次调用求数组最小值的函数,把数组前n-1项的最小值同第n项做比较,所以(4)填入“minA=min(minInArray(a,n-1),a[n])”,由于min()是一个比较函数,返回两数中较小的数,我们可以用三元运算符直接定义为x y?x:y。

第8题:

函数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”。

第9题:

请编写一个函数void fun(int p[],int n,int c),其中数组p的元素按由小到大的顺序排列,其元素个数为n。函数fun()的功能是将c插入到数组p中,且保持数组的升序排列。

注意:部分源程序已存在文件PROC9.cpp中。

请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句;

文件PROC9.cpp的内容如下:

//PROC9.cpp

include <iostream>

include <string>

using namespace std;

define M 30

void fun(int p[ ],int n,int c);

int main ()

{

int pp[M],n,i;

int fg, c;

cout<<"Please input n:\n";

cin>>n;

cout<<"Please input the n data:\n";

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

cin>>pp [i];

cout<<"Please input c:\n";

cin>>c;

fun (pp, n, c);

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

cout<<pp [i] << " " ;

cout<<end1;

return 0;

}

void fun(int p[ ],int n, int c)

{

//* * * * * * * * *

}


正确答案:

第10题:

阅读下列函数说明和C代码,将应填入 处的字句写在答题纸的对应栏内。

[函数1.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是“完全数”。

[函数1.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;

return -1;

}

[函数1.2说明]

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

[函数1.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;


正确答案:
                  

更多相关问题