第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的函数
第2题:
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
下面一段程序从给定的数组b中找出值最小的元素,并输出该元素的数组下标、内存地址minaddr以及元素值本身。函数findmin负责在给定的数组中查找最小值,并返回最小值所在的内存地址,函数有三个参数:array是所要处理的数组;size是数组的大小;index负责从函数返回具有最大值的元素在数组中的数组下标。请填充空白,使其成为一个合乎要求的完整程序。
【程序】
//程序开始
include<iostream.h>
int *findmin(int *array, int size, int &index);
void main()
{
/****** 变量定义部分 ***********/
int b[10] = {34, 34, 23, 89, 1, 2, 13, 42, 5, 54};
(1);
int idx;
/******* 寻找最小值 ************/
minaddr = findmin(b, sizeof(b)/sizeof(int), idx);
/******* 输出最小值的有关信息 ************/
cout << "Min value index: "<<idx<<end1
<<"Min value address: "<<minaddr<<end1
<<"Min value: "<<(2)<<end1;
}
/******* 函数findmin的定义部分 ************
int *findmin(int *array, int size, int &index)
{
int min = 0;//max 是当前具有最小值的数组元素下标值
for(int i = 1;(3); i++)
{
if(array[i]<(4))
min = i;
}
(5);
return array + min;//返回最小值所在内存地址
}
第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)a[n-1]+sum(a,n-1);或 a[0]+sum(a+1,n-1);(5)return 0;
【解析】(1)完成字符的复制,并使指针指向下一元素。(2)当出现某一数组所有元素均已合并完成,则将另一数组其他元素直接进行复制。b串已复制完。(3)判断a串是否已复制完。(4)递归函数sun()完成数组n个元素的累加,当n>0时,使用规模为n-1的函数进行递归。(5)当n<=0时,返回0即可。
第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];
}
第5题:
请编写一个函数sum(int array[],int len),该函数返回数组array的所有整数元素的和,其中len为数组array的长度。
注意:部分源程序已存在文件test34_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。
程序输出结果如下:
sum of array 15
文件test34_2.cpp的内容如下:
include <iostream.h>
int sum(int array[],int len)
{
}
void main()
{
static int a[5]-{1,2,3,4,5};
int result=sum(a,5);
cout<<"sum of array "<<result<<end1;
}
第6题:
以下程序中的select()函数功能是:在N行M列的二维数组中选出一个最大值作为函数值返回,并通过形参传回此最大值的行下标。请填空完成此程序。
include<iostream>
define N 3
define M 3
using namespace std;
int select(int a[N][M],int *n)
{
int i,j,row=0,colum=0;
for(i=0;i<N;i++)
for(i=0;j<M;j++)
if(a[i][j]>a[row][colum])
{
row=i;
colum=j;
}
*n=【 】;
return 【 】;
}
int main()
{
int a[N][M]={9,11,23,6,1,15,9,17,20};
int max,n;
max=select(a,&n);
cout<<"max="<<max<<"line="<<n<<end1;
return 0;
}
第7题:
编写一个函数CreateGrid(int m, int n, int t),用来创建一个动态的三维数组,其中m、n、t分别表示该数组每一维的长度。要求整个数组的存储空间都是用用C语言的库函数malloc函数动态申请的。另外编写一个FreeGrid函数,用来释放这个三维数组。
第8题:
以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标,请填空。#define N 3#define M 3select(int a[N][M],int *n){int i,j,row=0,colum=0;for(i=0;i<N;i++)for(j=0;j<M;j++)if(a[i][j]>a[row][colum]){row=i;colum=j;}*n=;return();}
第9题:
阅读以下说明和流程图,回答问题将解答填入对应栏。
[说明]
本流程图实现采用递归函数来求一个整数数组中从元素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)。
第10题:
下面函数返回数组中最大元素的下标,数组中元素个数为t,将程序补充完整。
int findmax(int s[],int t) {
int k,p;
for(p=0,k=p;p<t;p++) {
if 【 】
k=p;
}
return k;
}