五、指出程序或函数的功能
1. void
f2(double a[], int n)
{
int i; double sum=0;
for(i=0;i<n;i++) sum+=a;
sum/=n;
for(i=0;i<n;i++)
if(a>=sum) cout<<a<<' ';
cout<<endl;
}
2. void
f4(char a[M][N])
{
int c1,c2,c3;
c1=c2=c3=0;
for(int i=0;i<M;i++)
if(strlen(a)<5) c1++;
else if(strlen(a)>=5 && strlen(a)<15) c2++;
else c3++;
cout<<c1<<' '<<c2<<'
'<<c3<<endl;
}
3. void
fun3(int a[][N], int m, int n, int& row, int& col)
{
int x=a[0][0];
row=col=0;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(a[j]>x) {
x=a[j]; row=i; col=j;
}
}
4. int
fun6(int m, int n, int b=2)
{
if(m<b && n<b) return m*n;
else if(m%b==0 && n%b==0) return b*fun6(m/b,n/b,b);
else return fun6(m,n,++b);
}
5. char*
f8(char* str1, const char* str2)
{
int i=0,j=0;
while(str1) i++;
while(str2[j]) str1[i++]=str2[j++] ;
str1='\0';
return str1;
}
6. int
f8(const char* str1, const char* str2)
{
int i=0;
while(str1 && str2)
if(str1==str2) i++;
else if(str1>str2) return 1;
else return -1;
if(str1==str2) return 0;
else if(str1>str2) return 1;
else return -1;
}
7.
IntNode* FindMax(IntNode *f)
{
if(!f) return NULL;
IntNode *p=f;
f=f->next;
while(f) {
if(f->data>p->data) p=f;
f=f->next;
}
return p;
}
假定IntNode的类型定义为:
struct IntNode {
int
data;
//结点值域
IntNode* next; //结点指针域
};
8. int
Count(IntNode *f)
{
if(!f) return 0;
int c=0;
while(f) {
c++;
f=f->next;
}
return c;
}
假定IntNode的类型定义为:
struct IntNode {
int
data;
//结点值域
IntNode* next; //结点指针域
};
9. void
Output(IntNode *f)
{
if(!f) return;
while(f) {
cout<<f->data<<’ ’;
f=f->next;
}
cout<<endl;
}
假定IntNode的类型定义为:
struct IntNode {
int
data;
//结点值域
IntNode* next; //结点指针域
};
10. void
Input(IntNode*& f)
{
int n;
cout<<”从键盘给n输入一个整数:”;
do cin>>n; while(n<0);
if(n==0) {f=NULL; return;}
f=new IntNode;
IntNode* p=f;
cout<<”从键盘输入”<<n<<”个整数:”;
while(n--) {
p=p->next=new IntNode;
cin>>p->data;
}
p->next =NULL;
p=f; f=f->next; delete p;
}
假定IntNode的类型定义为:
struct IntNode {
int
data;
//结点值域
IntNode* next; //结点指针域
};
11. int
f(const char *s)
{
int i=0;
while(*s++)i++;
return i;
};
六、编程
1.
求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。
2.
已知6≤a≤30,15≤b≤36,求满足不定方程2a+5b=126的全部整数组解。如(13,
20)就是一个整数组解,并以(x,y)样式输出每个解。
3.
某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2和c3统计并输出成绩为优秀、达标和不达标的人数。
4.
编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中。
5.
按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。
double Mean(double a[M][N],int m,int n);
6.
按照下面函数原型语句编写一个递归函数计算出数组a中n个元素的平方和并返回。
int f(int a[],int n);
7.
按照函数原型语句“void p(int
n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。
55555
4444
333
22
1
8.
按照函数原型语句“void p(int
n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。
1
22
333
4444
55555
9.
根据下面类中Count函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms)
{cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new
int[MS];
for(int i=0;
i<n; i++) a=aa;
}
int Count(int x);
//从数组a的前n个元素中统计出其
//值等于x的个数并返回。
};
10.
根据下面类中Search函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms)
{cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new
int[MS];
for(int i=0;
i<n; i++) a=aa;
}
int
Search(int x);
//从数组a的前n个元素中顺序查找值为x的第一个元素,
//若查找成功则返回元素的下标,否则返回-1。
};
11.
根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms)
{cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new
int[MS];
for(int i=0;
i<n; i++) a=aa;
}
int MaxMin(int& x, int& y);
//从数组a的前n个元素中求出
//最大值和最小值,并分别由引用参数x和y带回,
//同时若n大于0则返回1,否则返回0。
};
12.
根据下面类中Compare 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms)
{cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new
int[MS];
for(int i=0;
i<n; i++) a=aa;
}
int Compare(AA b); //比较*this与b的大小,若两者中
//的n值相同,并且数组中前n个元素值对应
//相同,则认为两者相等返回1,否则返回0。
};
13.
根据下面类中CompareBig 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms)
{cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new
int[MS];
for(int i=0;
i<n; i++) a=aa;
}
int CompareBig(AA b);
//比较*this与b的大小,从前向后按两数组
//中的对应元素比较,若*this中元素值大则返回1,若b中
//元素值大则返回-1,若相等则继续比较下一个元素,直到
//一个数组中无元素比较,此时若两者的n值相同则返回0,
//否则若*this中的n值大则返回1,若b中的n值大则返回-1。
};