成考专业课期末考试(C++程序设计三)
时间:2013年06月06日 10时30分作者:江西成考网
四、写出下列每个函数的功能
1. int SA(int a, int b) {
if(a>b) return 1;
else if(a==b) return 0;
else return -1;
}
函数功能:
比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a<b则返回-1。
2. bool WB(int a[], int n, int x) {
for(int i=0;i<n;i++)
if(a[i]==x) return true;
return false;
}
函数功能:
从数组a中顺序查找值为x的元素,若查找成功则返回真,否则返回假。
3. # inelude<iostream.h>
template<class Type>
Type WD(Type a[], int n) {
Type m= a[0] ;
for (int i=l;i<n;i++)
if (a[i]>m) m=a[i];
return m;
}
函数的功能是:
模板函数,从数组a的n个元素中求出最大值并返回。
2. int LK(int a[], int n) {
float s=0; int i;
for (i=0 ;i<n; i++)
s+= a[i];
s/=n;
int m=0;
{for (i=0;i<n;i++)
if (a[i]<s) m++;
return m;
}
函数的功能是:求出数组a的n个元素中小于平均值的元素个数并返回。
3. int WD(int a[], int n) {
int m=a[0];
for(int i=1;i<n;i++)
if(a[i]>m) m=a[i];
return m;
}
函数功能:从数组a的n个元素中求出最大值并返回。
五、编程题
1.完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。
void inverse(int *a, int n)
{ }
解答:
void inverse(int *a, int n)
{ int i,*p;
p=new int[n];
for(i=0;i<=n-1;i++)
p[i]=a[i];
for(i=0;i<=n-1;i++)
a[i]=p[n-i-1];
delete []p;
}
2.假定一个函数声明为“double fun();”,要求从键盘上输入一个4行4列的实数矩阵到一个二维数组a[4][4]中,然后求出并返回主对角线上的元素值之和。
解答:double fun()
{
double a[4][4];
int i,j;
cout<<"输入一个4*4的数值矩阵:";
for(i=0;i<4;i++)
for(j=0;j<4;j++) cin>>a[i][j];
double s=0;
for(i=0;i<4;i++) s+=a[i][i];
return s;
}
1.一个10个整数的数组(34,91,83,56,29,93,56,12,88,72),找出最小数和其下标,并在主函数中打印最小数和下标。
解答:
#include <iostream.h>
void main()
{ int array[]={34,91,83,56,29,93,56,12,88,72};
int size=sizeof(array)/sizeof(*array);
int index = 0;
for(int i=1; i<n; i++)
if(a[index]>a[i])
index = i;
cout <<"最小数: " <<array[index] <<endl <<"相应的下标: " << index <<endl;
}
2.设计一程序,它输入一个整数,判断它是否是整数序列32,52,31,86,3,44,11,7,55,63中的一个;若是,显示该整数在序列中的序号(注:最小序号是1),否则显示0。
解答:
#include<iostream.h>
void main( )
{
int data[]={32,52,31,86,3,44,11,7,55,63};
#define SIZE (sizeof(data)/sizeof(data[0]))
int m;
cout<<"请输入要查找的数:"
cin>>m;
int i;
for (i=0;i<SIZE;i++) if (data[i]==m) break;
cout<<"序号:"<<(i<SIZE?i+1:0);
------分隔线----------------------------