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

news2024/9/21 12:35:50

本文整理自博主本科大一《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.coloradmin.cn/o/1611831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kali下设置root权限(包含很多技巧)

默认是没有密码的&#xff0c;后期使用超级管理员root操作kali系统&#xff0c;我们需要设置 Ctrlshift再加上“”号可以调节字体大小 此时提示符为#

漂亮的个人主页源码

源码介绍 漂亮的个人主页源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 效果截图 源码下载 漂亮的个人主页源码

Taro-vue微信小程序用户隐私保护

Taro-vue微信小程序用户隐私保护 一、在 微信公众平台的【设置】- 【服务内容与声明】 &#xff0c;设置用户隐私保护指引&#xff0c;添加项目需要的接口权限。 【用户隐私保护指引】提交之后&#xff0c;官方会进行审核。审核通过之后&#xff0c;对应的接口权限才会生效。 …

ROS分布式通讯配置

4WD 必读&#xff1a;分布式通讯是相对于用虚拟机来连接小车上主机来说&#xff0c;如果是 4WD 笔记本无主 机用户&#xff0c;不存在分布式通讯一说。 1.4WD 用户单笔记设置一&#xff0c;连接底盘和雷达还有摄像头。 因为虚拟机带宽问题&#xff0c;无法保证摄像头正常运行。…

MySQL数据库企业级开发技术(下篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来中括号&#xff0c;就代表可写可不写 目录 1. 视图 1.1 需要视图的原因 1.2 视图介绍 1.2.1 …

输电线路运行特性及简单电力系统潮流估算(二)

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第二篇笔记。上一篇传送门&#xff0c;下一篇传送门。 输电线路的运行特性 输电线路的空载运行特性 线路的等值电路如图所示。 由于是空载&#xff0c;则 S ~ 2 0 \widetilde{S}_20 S 2​0&#xff0c;可以计算…

CSS中的圆角和阴影

目录 盒子圆角 圆角基础使用 圆角常见使用 通过设置盒子圆角得到一个圆形 通过设置盒子圆角&#xff0c;得到一个“操场”的样式 盒子阴影 文字阴影 盒子圆角 圆角基础使用 在 CSS3 中&#xff0c;新增了圆角边框样式&#xff0c;这样我们的盒子就可以变圆角了。 使用…

Linux进阶篇:Centos7安装与配置mysql(rpm安装方式)

Linux服务搭建篇&#xff1a;Centos7安装与配置mysql&#xff08;rpm安装方式&#xff09; MySQL是一个开源的关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;现在属于Oracle公司。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在WEB应用方面&am…

Mac 下安装PostgreSQL经验

使用homebrew终端软件管理器去安装PostgreSQL 如果没有安装brew命令执行以下命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 沙果开源物联网系统 SagooIoT | SagooIoT 1.使用命令安装postgreSQL brew i…

Mac下删除旧版本.net sdk

参照微软官网给的方法&#xff0c;Releases dotnet/cli-lab (github.com) 好像不能直接的解决问题&#xff0c;我做一下补充&#xff0c;希望对需要删除旧版本sdk的小伙伴们有所帮助 1:下载工具包 Releases dotnet/cli-lab (github.com) 2:打开终端&#xff0c;cd切换到该…

软件杯 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

Matlab|【复现】主动配电网故障定位方法研究

目录 1 主要内容 算例模型 期望故障电流状态函数 评价函数&#xff08;膨胀率函数&#xff09; 算例验证方法 详实的文档说明 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序方法复现了《基于改进多元宇宙算法的主动配电网故障定位方法研究》_郑聪&#xff0c;建…

Gamba:将高斯溅射与Mamba结合用于单视图3D重建

Gamba: Marry Gaussian Splatting with Mamba for Single-View 3D Reconstruction Gamba&#xff1a;将高斯溅射与Mamba结合用于单视图3D重建 Qiuhong Shen11  Xuanyu Yi31 Zike Wu31  Pan Zhou2,42 Hanwang Zhang3,5 沈秋红 1 易轩宇 3 吴子可 3 潘周 2,4 2 张汉旺 3,5Shu…

【新版】小剧场短剧影视小程序源码

风口项目 &#xff0c;短剧app 小程序 H5 多端程序 全网首家对接了易支付&#xff0c; 修复了众多BUG 目前已知BUG全部修复 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89070544 更多资源下载&#xff1a;关注我。

认知觉醒 PDF电子版 下载

认知觉醒 PDF电子版 开启自我改变的原动力 周岭 / 人民邮电出版社 / 2020-10 链接&#xff1a;https://pan.baidu.com/s/1EHUK_AhvE5TWAZsYXFQ5QA?pwdwrho 提取码&#xff1a;wrho

Linux驱动开发——(一)设备树的基本属性及其应用

目录 一、常见基本属性 1.1 compatible属性 1.2 status属性 1.3 reg属性 1.4 #address-cells属性和#size-cells属性 二、基本属性在设备树的表现 三、基本属性在驱动代码的表现 3.1 驱动代码 3.2 驱动代码中的OF函数 3.2.1 of_find_node_by_path 3.2.2 of_find_prope…

Git:使用conda命令切换虚拟环境

1. 问题 在win10电脑的Git中&#xff0c;无法使用conda list命令&#xff0c;报错&#xff08;bash&#xff1a;conda&#xff1a;command not found&#xff09;。也无法使用conda activate base命令激活虚拟环境&#xff0c;报错&#xff08;bash&#xff1a;conda&#xff…

MotionCtrl: A Unified and Flexible Motion Controller for Video Generation

提出一个模型同时考虑到object motion和camra motion&#xff0c;分别对应着OMCM module和CMCM module&#xff0c;因为缺少同时包含text\trajectory\camera pose的数据&#xff0c;所以本文使用的是一个multistep的训练策略 Camera Motion Control Module (CMCM) a. 训练的数…

InFusion:通过从扩散先验学习深度完成来修复3D高斯

InFusion: Inpainting 3D Gaussians via Learning Depth Completion from Diffusion Prior InFusion&#xff1a;通过从扩散先验学习深度完成来修复3D高斯 Zhiheng Liu * 刘志恒 *1144Hao Ouyang * 欧阳浩 *2233Qiuyu Wang 王秋雨33Ka Leong Cheng 郑家亮2233Jie Xiao 街小…

prompt提示工程

一、什么是提示工程&#xff08;Prompt Engineering&#xff09; 提示工程也叫「指令工程」。 Prompt 就是你发给大模型的指令&#xff0c;比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等貌似简单&#xff0c;但意义非凡 「Prompt」 是 AGI 时代…