本文整理自博主本科大一《C/C++程序设计》专业课的课内实验报告,适合C语言初学者们学习、练习。
编译器:gcc 10.3.0
----
注:
1.虽然课程名为C++程序设计,但实际上当时校内该课的内容大部分其实都是C语言,C++的元素最多可能只是体现在输入输出。
2.博主当时给出的实验代码可能并不是最优解,这里只是整理并未重编,因此各位前来学习的小伙伴们注意辨别。
目录
一、实验目的
二、实验内容
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);
}
运行结果:
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;
}
运行结果:
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);//输出
}
运行结果:
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);
}
运行结果:
三、实验总结
1.掌握了函数定义和调用。
2.掌握函数调用时实参与形参的对应关系以及“值传递”的方式。
3.掌握函数的嵌套调用和简单递归调用。
4.掌握数组作为函数参数的用法,进一步学习了调试程序。