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

本文整理自博主本科大一《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.mzph.cn/news/828236.shtml

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

相关文章

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱&#xff08;带本地扩音功能&#xff09; 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带…

tailwindcss在使用cdn引入静态html的时候,vscode默认不会提示问题

1.首先确保vscode下载tailwind插件&#xff1a;Tailwind CSS IntelliSense 2.需要在根目录文件夹创建一个tailwind.config.js文件 export default {theme: {extend: {// 可根据需要自行配置&#xff0c;空配置项可以正常使用},}, }3.在html文件的标签中引入配置文件&#xf…

【JavaScript】axios

基础使用 <script src"https://cdn.bootcdn.net/ajax/libs/axios/1.5.0/axios.min.js"></script> <script>axios.get(https://study.duyiedu.com/api/herolist).then(res> {console.log(res.data)}) </script>get - params <script s…

数据仓库与数据挖掘(实验一2024.4.24)

实验准备&#xff1a; 1.下载conda 2.配置环境C:\ProgramData\miniconda3\Scripts 3.创建文件夹panda进入虚拟环境qq 激活虚拟环境&#xff1a;activate qq 启动jupyter lab&#xff08;python语言环境编译&#xff09;&#xff1a;jupyter lab 4.panda下载 &#xff08;…

HTB Runner

Runner User Nmap ──(root㉿kali)-[/home/…/machine/SeasonV/linux/Runner] └─# nmap -A runner.htb -T 4 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-22 23:07 EDT Stats: 0:00:01 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Sca…

用户中心 -- 代码理解

一、删除表 & if 删除表 1.1 DROP TABLE IF EXISTS user 和 DROP TABLE user 网址&#xff1a; 用户管理第2节课 -- idea 2023.2 创建表--【本人】-CSDN博客 二、 代码 2.1 清空表中数据 的 命令 【truncate 清空】 网址&#xff1a; 用户管理第2节课 -- idea 2…

iOS开发进阶(二十):Xcode 断点调试详解

文章目录 一、前言二、断点调试技巧2.1 设置断点2.2 断点的自定义设置2.3 断点类型 一、前言 所谓断点&#xff0c;其实就是一个让应用暂停运行的机制&#xff0c;这是为了方便开发人员执行调试&#xff0c;查看寄存器的某些值。既然设置了断点&#xff0c;可以让应用停在某一…

Ajax和axios基础

AJAX Asynchronous JavaScript And XML 异步的JavaScript和XML 作用 数据交换: 通过Ajax可以给服务器发送请求,服务器将数据直接响应回给浏览器. 异步交互: 可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术. 同步和异步 同步发送请求: 浏览器发…

Linux中Ctrl+C和Ctrl+Z的区别_实战讲解(超详细)

1、CtrlC和CtrlZ的区别&#xff1a; CtrlZ&#xff1a;暂停进程 即挂起进程 暂停当前进程并将其放到后台。可以在后续恢复执行。 暂停的进程仍然占用系统内存 CtrlC&#xff1a;终止进程 终止进程后&#xff0c;程序代码占用的内存会释放掉 2、实战讲解 跑人工智能代码的时候…

redis故障中出现的缓存击穿、缓存穿透、缓存雪崩?

一、背景&#xff1a; 在维护redis服务过程中&#xff0c;经常遇见一些redis的名词&#xff0c;例如缓存击穿、缓存穿透、缓存雪崩等&#xff0c;但是不是很理解这些&#xff0c;如下就来解析一下缓存击穿、缓存穿透、缓存雪崩名词。 二、缓存穿透问题&#xff1a; 常见的缓存使…

flutter ios Firebase 消息通知错误 I-COR000005,I-FCM001000 解决

*前提是已经 使用firebase-tools 已经给 Flutter 加入了 消息通知相关配置。教程>> 一、I-COR000005 10.22.0 - [FirebaseCore][I-COR000005] No app has been configured yet. import Firebase....FirebaseApp.configure() 10.22.0 - [FirebaseMessaging][I-FCM001000…

mysql事故复盘: 单行字节最大阈值65535字节(原创)

背景 记得还在银行做开发&#xff0c;投产上线时&#xff0c;项目发版前&#xff0c;要提DDL的sql工单&#xff0c;mysql加1个字段&#xff0c;因为这张表为下游数据入湖入仓用的&#xff0c;长度较大。在测试库加字段没问题&#xff0c;但生产库字段加不上。 先说结论 投产…

QT初识

通过图形化界面输出helloworld 既然学习了QT&#xff0c;那么自然要做经典的输出helloworld字符串的实验。 QT有两好几种方案输出helloworld&#xff0c;一种是通过图形化界面输出&#xff0c;一种是通过代码实现。 这里先了解图形化界面的方案。 创建项目后&#xff0c;点…

LeetCode:2385. 感染二叉树需要的总时间(DFS Java)

目录 2385. 感染二叉树需要的总时间 题目描述&#xff1a; 实现代码与解析&#xff1a; DFS 原理思路&#xff1a; 2385. 感染二叉树需要的总时间 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;二叉树中节点的值 互不相同 。另给你一个整数 start 。在第…

【论文阅读】互连网络的负载平衡路由算法 (RLB RLBth)

前言Oblivious Load Balancing 不经意路由负载平衡 1. oblivious routing 不经意/无关路由的背景知识 1. oblivious routing, adaptive routing & minimal/non-minimal routing algorithms 2. Balancing a 1-Dimensional ring: RLB and RLBth 一维 ring 的 RLB and RLBth 1…

如何设计一个安全的系统架构?

本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 如何设计一个安全的系统架构&#xff1f; 如何设计安全的系统&#xff1f;我们总结了 12 条原则供架构师们参考。 设计安全的系统非常重要&#xff0c;原因有很多&#xff0c;从保护敏…

SpringCloud系列(13)--Eureka服务名称修改和服务IP显示

前言&#xff1a;在上一章节中我们把服务提供者做成了集群&#xff0c;而本章节则是一些关于服务信息的配置&#xff0c;这部分知识对集群整体影响不大&#xff0c;不过最好还是掌握&#xff0c;毕竟万一有用到的地方呢 1、修改服务的名称 有时候我们想要修改服务的名称&#…

JavaSE学习文档(上)

JavaSE学习文档 第一章 Java概述1.2 计算机编程语言1.3 Java语言版本概述1.4 Java语言分类1.5 JDK,JRE,JVM的关系1.6 JDK安装1.7 DOS命令1.8 Java程序执行过程1.9 编写HelloWorld1.10 常见错误1.11 编写程序时要注意的点 第二章 Java基础语法2.1 Java中的注释文档注释 2.2 关键…

武汉星起航:亚马逊全球资源赋能中国卖家,跨境电商助力品牌国际化

亚马逊全球开店业务于2015年正式进驻中国&#xff0c;为中国卖家打开了通往全球市场的便捷之门。这一举措不仅为中国卖家提供了与全球消费者直接交流的机会&#xff0c;更借助亚马逊的丰富资源和先进技术&#xff0c;帮助卖家将优质的中国商品推向世界舞台。亚马逊平台以其高效…

Ant Design Vue + js 表格计算合计

1.需要计算的数量固定&#xff08;如表1&#xff0c;已知需要计算的金额为&#xff1a;装修履约保证金 装修垃圾清运费出入证工本费 出入证押金 这四项相加&#xff0c;可以写成固定的算法&#xff09;&#xff1a; 表格样式&#xff1a; <h4 style"margin: 0 0 8px…