五、编写程序
1.编一个递归函数 int FF(int a[ ] , int n),求出数组a中所有n个元素之积并返回。
程序如下:
int FF(int a[ ] , int n)
{
int p;
if (n<1) {cout<<”N值输入有错误!”; break;}
else if (n==1) p=a[0] ;
else p=FF(a,n-1)*a[n-1] ;
return 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;j++) s+= a[i][i];
return p;
}
3.编写一个函数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 p=1;
for (i=0;i<4;j++) p*= a[i][i];
return p;
}
4.假定函数声明为“void Print(int a[], int n);”,在函数体中按下标从大到小的次序输出数组a中的n个元素的值,并要求每行输出6个元素,当然最后一行可不足6个。
程序如下:
void Print(int a[], int n)
{
int i, m=0;
for ( i=n-1; i>=0; i--)
{
cout <<*(a+i)<<’ ’;
m++;
if(m % 6==0) cout<<endl;
}
}
5.已知6≤a≤30,15≤b≤36,编一程序求出满足不定方程 2a+5b = 126 的全部整数组解。如(13 , 20)就是其中的一组解。
程序如下:
#include<iostream.h>
void main( )
{
int a,b;
for (a=6;a<=30;a++)
for (b=15;b<=36;b++)
if(2*a+5*b==126) cout<<’(’<<a<<’,’<<b<<’)’<<endl;
}
6.编一程序计算并输出12+22+…+n2的值,其中n值由键盘输入。
程序如下:
#include<iostream.h>
void main( )
{
int i;
int s=0;
int n;
cin>>n;
for (i=1;i<=n;i++)
s=s+ i*i;
cout<<”s=”<<s<<endl;
}
7.编写一个函数void SelectSort(int a[],int n),采用选择排序的方法按升序排列数组a中的n个元素。
程序如下:
void SelectSort(int a[], int n)
{
int i,j,k;
int x;
for (i=1;i<n;i++)
{
k= i-1;
for (j=i;j<n;j++)
if (a[j]< a[k]) k=j;
x= a[i-1]; a[i-1]= a[k]; a[k]=x;
}
}
8.编写一个函数,显示出整数形参x的除1和本身之外的所有因数,并返回所有因数的个数。
程序如下:
int Locateys (int x)
{
int i, m=0;
cout<<”x的所有因数为:”<<endl;
for (i =2; i <x; i ++)
{ if (x % i ==0) continue;
cout<<x<<’ ’;
m++;
}
return m;
}
9.编写程序,从保存整数的文本文件“a:xxk1.dat”中依次取出每个数据并显示出来,同时统计并显示出所有数据的个数。
程序如下:
#include<fstream.h>
#include<stdlib.h>
void main( )
{
ifstream fin(“a:xxk1.dat”,ios::nocreate);
if(!fin)
{
cerr<<”文件没有打开!”<<endl;
exit(1);
}
int x, i=0;
while(fin>>x)
{cout<<x<<’ ’;
i++;
}
fin.close ( );
cout<< endl<<”文件中所有数据个数为:”<< i<< endl;
}
10.假定一个函数声明为“void AD(inta[],int n);”,要求把数组a中的n个元素值按相反的次序仍保存在数组a中。
程序如下:
void AD(int a[],int n)
{
int i, k,x;
k=n/2;
for (i=0;i<k;i++)
{ x= a[i]; a[i]=a [n-i-1]; a [n-i-1]=x;
}
}
11.编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数并返回它。
程序如下:
int Count(double a[], int n)
{
double m=0;
int i;
for(i=0;i<n;i++) m+=a[i];
m=m/n;
int c=0;
for(i=0;i<n;i++)
if(a[i]>=m) c++;
return c;
}
版权声明
声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益
请联系本站我们将配合处理!