目录

一、实验目的

二、实验内容

1、编写函数,实现统计和输出一个正整数中各位数字中零的个数,及各位数字中最大者。

 2、编写递归函数实现 n!

3、自定义函数实现对n个数进行选择法排序,主函数调用。

4、自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。

三、实验总结


一、实验目的

1.掌握函数定义和调用

2.掌握函数调用时实参与形参的对应关系以及“值传递”的方式

3.掌握函数的嵌套调用和简单递归调用

4.掌握数组作为函数参数的用法

5.进一步学习调试程序


二、实验内容

1、编写函数,实现统计和输出一个正整数中各位数字中零的个数,及各位数字中最大者。

源代码:

#include<iostream>
#include<math.h>
using namespace std;

int digitX(int x){
	int dgt=0;
	while(x){
		x /= 10;
		dgt++;
	}
	return dgt;	
}//求数的位数
void stcs(int x){
	int a[81]={0};
	int i;
	int cnt=0;
	for(i=0;i<digitX(x);i++){
		a[i]=x/(int)pow(10,i)%10;
		if(a[i]==0){
			cnt++;
		}
	}
	cout<<"共有 "<<cnt<<" 个0"<<endl;
	int maxI=i;
	for(i=0;i<=digitX(x);i++){
		if(a[i]>a[maxI]){
			int tmp;
			tmp=a[i];
			a[i]=a[maxI];
			a[maxI]=tmp;
		}
	}
	cout<<"最大的数字是 "<<a[maxI]<<endl;//输出最大的数
}
int main(){
	//1、编写函数,实现统计和输出一个正整数中各位数字中零的个数,及各位数字中最大者。
	int num,digit;
	cout<<"请输入一个正整数:";
	cin>>num;
	digit=digitX(num);
	cout<<"这个数共有 "<<digit<<" 位"<<endl;
	stcs(num);
}

运行结果: 

C/C++程序设计实验报告4 | 函数实验-LMLPHP

 2、编写递归函数实现 n!

源代码:

#include<iostream>
#include<math.h>
using namespace std;

int facX(int x){
	int fac;
	if(x==0 || x==1){
		fac=1;
	}else{
		fac=facX(x-1)*x;
	}
	return fac;
}
int main(){
	int n;
	cout<<"Please enter an integer number:";
	cin>>n;
	while(n<0){
		cout<<"n<0,error!! Please enter another number n: ";
		cin>>n;
	}
	cout<<"n!= "<<facX(n)<<endl;
}

运行结果: 

C/C++程序设计实验报告4 | 函数实验-LMLPHP

3、自定义函数实现对n个数进行选择法排序,主函数调用。

要求:共自定义3个函数,分别对数组进行输入,排序和输出。

源代码:

#include<iostream>
#define ARR_SIZE 6
using namespace std;
//3、自定义函数实现对n个数进行选择法排序,主函数调用。
//要求:共自定义3个函数,分别对数组进行输入,排序和输出。void
void cinA(int x[],int n){
	int i;
	for(i=0;i<n;i++){
		cin>>x[i];
	}
}

void sort(int x[],int n){
	int i,j;
	int selI;
	for(i=0;i<n-1;i++){
		selI=i;
		for(j=i+1;j<n;j++){
			int tmp;
			if(x[j]>x[selI]){
				tmp=x[j];
				x[j]=x[selI];
				x[selI]=tmp;
			}
		}
	}
}
void coutA(int x[],int n){
	int i;
	for(i=0;i<n;i++){
		cout<<x[i]<<" ";
	}
}

int main(){
	void sort(int array[],int n);
	int a[ARR_SIZE];
	cout<<"enter array:"<<endl;
	cinA(a,6);//输入
	sort(a,6);//排序
	coutA(a,6);//输出	
}

运行结果:

C/C++程序设计实验报告4 | 函数实验-LMLPHP

4、自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。

要求:

1)共自定义2个函数,分别对数组进行插入和输出。

2)数组、待插数据在主函数中定义和赋值。

源代码:

#include<iostream>
using namespace std;
//4、自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。
//要求:1)共自定义2个函数,分别对数组进行插入和输出。
//2)数组、待插数据在主函数中定义和赋值。

void plugX(int x,int a[],int len){
	int i;
	for(i=len-2;i>=0;i--){
		if(x<a[i]){
			a[i+1]=a[i];
		}else{
			break;
		}
	}
	a[i+1]=x;
}
void coutX(int a[],int len){
	int i;
	for(i=0;i<len;i++){
		cout<<a[i]<<' ';
	}
}
int main(){
	int arr[6]={10,20,30,40,50,0};
	cout<<"please enter a number n:";
	int n;
	cin>>n;
	plugX(n,arr,6);
	coutX(arr,6);
}

运行结果:

C/C++程序设计实验报告4 | 函数实验-LMLPHP


三、实验总结

1.掌握了函数定义和调用。

2.掌握函数调用时实参与形参的对应关系以及“值传递”的方式。

3.掌握函数的嵌套调用和简单递归调用。

4.掌握数组作为函数参数的用法,进一步学习了调试程序。 

04-25 06:04