C语言——小细节和小知识7

news2024/11/27 2:30:40

一、逆序字符串

1、递归1

#include <stdio.h>
#include <string.h>

void ReverseArray(char *str)
{
	char temp = *str;//1
	int len = (int)strlen(str);
	*str = *(str + len - 1);//2
	*(str + len - 1) = '\0';//3
	if(strlen(str + 1) >= 2)//只要字符串还大于2,就接着递归,接着交换
	{
		ReverseArray(str + 1);//改变字符串的长度
	}
	*(str + len - 1) = temp;//4
}

int main()
{
	char arr[10] = "abcdef";
	ReverseArray(arr);
	printf("%s", arr);
	return 0;
}

递进

这时字符串长度为0,小于2。

开始回归,回归过程是之前的临时变量从前往后依次放。

最终,递归完成,字符串反转完成。

2、递归2

#include <stdio.h>
#include <string.h>

void ReverseArray(char arr[], int left, int right)
{
	char temp = arr[left];//对称交换
	arr[left] = arr[right];
	arr[right] = temp;
	if (left + 1 < right - 1)
	{
		ReverseArray(arr, left + 1, right - 1);
	}
}

int main()
{
	char arr[10] = "abcdef";
	int left = 0;//数组第一个元素下标为0
	int right = (int)strlen(arr) - 1;//strlen求出字符串长度,减一为数组下标
	ReverseArray(arr,left,right);
	printf("%s\n", arr);
	return 0;
}

递进时就完成了字符串交换。

回归时函数就调用结束了,回归时没有实质的语句执行。

3、循环

#include <stdio.h>
#include <string.h>

void ReverseArray(char arr[])
{
	int length = (int)strlen(arr);
	for (int i = 0; i < length / 2; i++)
	{
		char temp = arr[i];
		arr[i] = arr[length - i - 1];
		arr[length - i - 1] = temp;
	}
}

int main()
{
	char arr[10] = "abcdef";
	ReverseArray(arr);
	printf("%s\n", arr);
	return 0;
}

这个与上面的递归2相似,都是对应的位置交换。、

二、计算一个数字的每位和

#include <stdio.h>

int DigitSum(int num)
{
	if (num > 9)
	{
		return num % 10 + DigitSum(num / 10);
	}
	else
	{
		return num;
	}
}

int main()
{
	int num = 0;
	scanf("%d",&num);
	int sum = DigitSum(num);
	printf("%d",sum);
	return 0;
}

三、计算n的k次方

#include <stdio.h>

double Power(int num, int exp)
{
	if (exp > 0)
	{
		return num * Power(num, exp - 1);
	}
	else if (exp == 0)
	{
		return 1;
	}
	else
	{
		return (1.0 / num) * Power(num, exp + 1);
	}
}

int main()
{
	int num = 0,exp = 0;
	scanf("%d %d",&num,&exp);
	double res = Power(num,exp);
	printf("%lf",res);
	return 0;
}

四、sizeof和strlen

我们平常见到的操作符是像-、=、<等等这样的,其实sizeof也是操作符,虽然它长得不像操作符。sizeof是用来计算变量(类型)所占内存空间大小,不关注内存中的存储内容,单位是字节

printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(float));
printf("%zu\n", sizeof(char));

sizeof输出的数据类型是size_t,格式字符串可用%zu或%zd。

strlen是一个库函数,定义在头文件string.h中。专门计算字符串长度不包含\0,只针对字符串,从参数给定的地址一直找,直到\0,统计\0之前的字符个数。

printf("%zu\n",strlen("abc"));

strlen输出的数据类型也是size_t,格式字符串可用%zu或%zd。

五、数组的数据类型

int num[10];

在C语言中 int num[10]; 的类型应被描述为 int [10] ,这指的是一个具有10个整数元素的整型数组类型。

数组的类型就是去掉数组名剩下的部分。

#include <stdio.h>

int main()
{
	int num[10] = { 0 };
	printf("%zu\n", sizeof(num));
	printf("%zu\n", sizeof(int [10]));
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342588.html

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

相关文章

Rust之构建命令行程序(二):读取文件

开发环境 Windows 10Rust 1.74.1 VS Code 1.85.1 项目工程 这次创建了新的工程minigrep. 读取文件 现在&#xff0c;我们将添加读取file_path参数中指定的文件的功能。首先&#xff0c;我们需要一个样本文件来测试它:我们将使用一个包含少量文本的文件&#xff0c;多行包含一…

原来我们常用的现货白银方法都有缺点?

今天做现货白银交易的朋友容易有一个认知上的误区&#xff0c;就是他们在学习分析方法的时候&#xff0c;总是认为这个方法是无所不能的&#xff0c;应用在交易中&#xff0c;总能让自己盈利。如果不盈利&#xff0c;只是自己执行上出了错误&#xff0c;而不是策略有错&#xf…

Goal-Auxiliary Actor-Critic for 6D Robotic Grasping with Point Clouds

题目&#xff1a;基于点云的 6D 机器人抓取目标-辅助行为-评价 摘要&#xff1a;6D 机 器 人 抓 取超 越 自上 而 下捡 垃 圾桶 场 景是 一 项具 有 挑战 性 的任 务 。 以往基于 6 D 抓 取综 合和 机器 人运 动 规划 的解 决方 案 通常 在开 环设 置下 运 行&#xff0c; 对抓…

【React】echarts-for-react 的使用

文章目录 echarts-for-react &#xff1a;一个简单的 Apache echarts 的 React 封装配置项手册&#xff1a;https://echarts.apache.org/zh/option.html#title 安装依赖 $ npm install --save echarts-for-react# echarts 是 echarts-for-react的对等依赖,您可以使用自己的版本…

thingsboard前端缓存--nginx

thingsboardnginx thingsboard部署到阿里云服务器之后&#xff0c;由于登录界面要发送的文件很大&#xff0c;并且服务器的带宽目前有限&#xff0c;因此配置一个nginx&#xff0c;进行前端页面的一些缓存&#xff0c;参考了https://qianchenzhumeng.github.io/posts/Nginx%E5…

Spring高手之路-@Autowired和@Resource注解异同点

目录 相同点 不同点 1.来源不同。 2.包含的属性不同 3.匹配方式&#xff08;装配顺序&#xff09;不同。 ​编辑 4.支持的注入对象类型不同 5.应用地方不同 相同点 都可以实现依赖注入&#xff0c;通过注解将需要的Bean自动注入到目标类中。都可以用于注入任意类型的Bean…

SpringBoot 2 集成Spark 3

前提条件: 运行环境&#xff1a;Hadoop 3.* Spark 3.* ,如果还未安装相关环境&#xff0c;请参考&#xff1a; Spark 初始 CentOS 7 安装Hadoop 3 单机版 SpringBoot 2 集成Spark 3 pom.xml <?xml version"1.0" encoding"UTF-8"?> <pro…

c 语言, 随机数,一个不像随机数的随机数

c 语言&#xff0c; 随机数&#xff0c;一个不像随机数的随机数 使用两种方式获取随机数&#xff0c;总感觉使用比例的那个不太像随机数。 方法一&#xff1a; rand() 获取一个随机数&#xff0c;计算这个随机数跟最大可能值 RAND_MAX&#xff08;定义在 stdlib.h 中&#xf…

拓扑排序图解-Kahn算法和深度优先搜索

拓扑排序 是将一个有向无环图中的每个节点按照依赖关系进行排序。比如图 G G G存在边 < u , v > <u,v> <u,v> 代表 v v v的依赖 u u u, 那么在拓扑排序中&#xff0c;节点 u u u一定在 v v v的前面。 从另一个角度看&#xff0c;拓扑排序是一种图遍历&#…

掌握成功的关键:了解定位咨询如何让你的业务转型和增长

在当今的商业世界中&#xff0c;市场竞争变得前所未有的激烈。这不仅要求企业提供优质的产品和服务&#xff0c;还需要确保其在市场中的位置。在这种环境中&#xff0c;精确的市场定位不仅是一个优势&#xff0c;而是生存和发展的必需。 定位咨询的概念与重要性 定位咨询是一项…

影响多域名SSL证书价格的因素

多域名SSL证书可以同时保护多个域名站点&#xff0c;对于域名站点比较多的个人或者企事业单位&#xff0c;多域名SSL证书能够实现统一管理多个域名的SSL证书&#xff0c;节省了管理SSL证书的时间和成本。现在市面上的多数多域名SSL证书的价格不同&#xff0c;多域名SSL证书的价…

交叉验证的种类和原理(sklearn.model_selection import *)

交叉验证的种类和原理 所有的来自https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators并掺杂了自己的理解。 文章目录 前言一、基础知识1.1 交叉验证图形表示1.2 交叉验证主要类别 二、部分交叉验证函数&#xff08;每类一个&#xff0…

ssm基于jsp技术的选课管理系统论文

基于JSP技术的选课管理系统设计与实现 摘要 如今&#xff0c;科学技术的力量越来越强大&#xff0c;通过结合较为成熟的计算机技术&#xff0c;促进了学校、医疗、商城等许多行业领域的发展。为了顺应时代的变化&#xff0c;各行业结合互联网、人工智能等技术&#xff0c;纷纷…

绝地求生:大逃杀,鼠标灵敏度设置教程及枪法练习技巧 鼠标灵敏度怎么设置

《绝地求生大逃杀》鼠标灵敏度怎么设置&#xff1f;作为一款FPS游戏&#xff0c;如何调整鼠标参数是大家急需掌握的&#xff0c;今天闲游盒带来“院长尼克”分享的《绝地求生大逃杀》鼠标灵敏度设置教程及枪法练习技巧&#xff0c;废话不多说&#xff0c;下面我们一起来看吧。 …

2023“SEED”第四届江苏大数据--新能源赛道 复赛Btop2总结

第一名是真的强&#xff01;基本都是第一&#xff0c;难以撼动。 昨天新能源赛道终于落下了帷幕&#xff0c;真的不是一般的卷。最后的排名都到了0.0几分的差距。跟队友很辛运复赛B榜单目前进入top3的行列&#xff0c;下面简单总结一下赛事过程。 初赛按照天级别预测未来一周各…

GaussDB数据库中的同义词SYNONYM

目录 一、前言 二、GasussDB数据库中的Synonym 1、Synonym的概念 2、语法介绍 3、Synonym的用途 三、Synonym在GaussDB数据库中是如何使用的 1、表的同义词使用&#xff08;示例&#xff09; 2、视图的同义词使用&#xff08;示例&#xff09; 3、函数的同义词使用&am…

RK3568 解决MIPI屏幕开机只显示uboot logo的问题

1、前言 之前写过一篇文章介绍了RK3568驱动MIPI屏幕的方法&#xff0c;这次产品迭代&#xff0c;硬件改版&#xff0c;选型的新的屏幕了。所以再次开启调试屏幕的过程。本以为会和上次一样会轻车熟路&#xff0c;事情总是事与愿违&#xff0c;同样的路&#xff0c;遇到新的坑。…

鸿蒙原生应用/元服务开发-Stage模型能力接口(十)下

ohos.app.form.FormExtensionAbility (FormExtensionAbility) 系统能力&#xff1a;SystemCapability.Ability.Form 示例 import FormExtensionAbility from ohos.app.form.FormExtensionAbility; import formBindingData from ohos.app.form.formBindingData; import formP…

python读取eps矢量图片

再利用Image读取时&#xff0c;提示报错&#xff1a; OSError: Unable to locate Ghostscript on paths 解决办法&#xff1a; 首先要安裝ghostscript软件&#xff1a;Ghostscript : Downloads 安装后记住安装路径&#xff0c;并找到bin的文件夹 之后在使用时&#xff0c;在代…