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

server/2024/9/24 23:48:56/

本文整理自博主本科大一《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.掌握数组作为函数参数的用法,进一步学习了调试程序。 


http://www.ppmy.cn/server/14123.html

相关文章

【设计模式】7、decorate 装饰模式

文章目录 七、decorate 装饰模式7.1 饮料&#xff1a;类型配料7.1.1 drink_with_ingredient_test.go7.1.2 drink_with_ingredient.go7.1.3 drink.go 7.2 notifier7.2.1 notifier_decorator_test7.2.2 notifier_decorator7.2.3 notifier 7.3 idraw7.3.1 idraw_test7.3.2 idraw7.…

如何在OpenWRT上配置SFTP远程文件传输

如何在OpenWRT上配置SFTP远程文件传输 OpenWRT 是一款广泛使用的开源路由器固件&#xff0c;它能够让普通的家用路由器具备高级路由功能&#xff0c;提供更多自定义和优化选项。本文将介绍如何在OpenWRT上配置SFTP&#xff08;SSH文件传输协议&#xff09;服务&#xff0c;以便…

Set实现(2)| LinkedHashSet

目录 1. LinkedHashSet的适用范围2. 源码分析与实例2.1 内部结构2.2 添加元素2.3 删除元素2.4 检查元素2.5 示例 3. 总结 在Java集合框架中&#xff0c; LinkedHashSet是一个用于存储不重复元素的有序集合。它实现了 Set接口&#xff0c;并提供了插入顺序的迭代访问。 Linke…

芒果YOLOv8改进组合161:动态标签分配ATSS+新颖轻量化非对称多级压缩LADH检测头组合改进,LADH作为原创可以发表SCI顶刊论文,小目标高效涨点

💡本篇内容:【芒果YOLOv8改进ATSS标签分配策略|第四集】芒果YOLOv8改进组合161:动态标签分配ATSS+新颖轻量化非对称多级压缩LADH检测头组合改进,小目标高效涨点 💡🚀🚀🚀本博客 标签分配策略ATSS改进+ 新颖轻量化非对称多级压缩LADH检测头组合改进,适用于 YOLOv…

抽象工厂模式设计实验

【实验内容】 楚锋软件公司欲开发一套界面皮肤库&#xff0c;可以对 Java 桌面软件进行界面美化。为了保护版权&#xff0c;该皮肤库源代码不打算公开&#xff0c;而只向用户提供已打包为 jar 文件的 class 字节码文件。用户在使用时可以通过菜单来选择皮肤&#xff0c;不同的…

QT Sqlite 内存模式 简单读写

//本文描述了QT Sqlite 内存模式 &#xff0c;使用QT 自带库文件&#xff0c;写入和读取。 //QT 6.2.4 MSVC2019调试通过。 //需要在pro文件中加入QT sql #include <QCoreApplication> #include <QSqlDatabase> #include <QSqlQuery> #include <QDebu…

简述PDF原理和实践

Hello&#xff0c;我是小恒不会java。 由于最近有输出PDF报表的项目需求&#xff0c;所以复习一下PDF到底是什么&#xff0c;该如何产生&#xff0c;如何应用至项目中。 更多参见Adobe官方文档&#xff08;https://www.adobe.com/cn/&#xff09; PDF原理 PDF&#xff08;Port…

python制作ppt

在Python中&#xff0c;你可以使用python-pptx库来创建和修改PowerPoint (.pptx) 文件。这个库允许你添加幻灯片、文本框、图片、形状、表格等元素&#xff0c;并可以调整它们的格式和布局。 下面是一个简单的例子&#xff0c;展示了如何使用python-pptx库来创建一个PPT文件&a…