C语言经典例题-19

1.字符串左旋结果

题目内容:写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。

例:给定s1 = AABCD和s2 = BCDAA,返回1

给定s1 = abcd和s2 = ACBD,返回0

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

#include <stdio.h>
#include <string.h>int is_string_left_rotate(char* str1, char* str2)
{int i = 0;int len = strlen(str1);for (i = 0; i < len; i++){char tmp = *str1;int j = 0;for (j = 0; j < len - 1; j++){*(str1 + j) = *(str1 + j + 1);}*(str1 + len - 1) = tmp;if (strcmp(str1, str2) == 0){return 1;}}return 0;
}int main()
{char arr1[10] = "AABCD";char arr2[10] = "BCDAA";int ret = is_string_left_rotate(arr1,arr2);if (ret == 1){printf("YES\n");}elseprintf("NO\n");return 0;
}
2.offsetof宏的实现

写一个宏,计算结构体中变量相对于首地址的偏移

#include <stdio.h>#define OFFSETOF(struct_name,mem_name) (int)&(((struct_name*)0)->mem_name)struct A
{int a;short b;int c;char d;
};int main()
{printf("%d\n", OFFSETOF(struct A, a));printf("%d\n", OFFSETOF(struct A, b));printf("%d\n", OFFSETOF(struct A, c));printf("%d\n", OFFSETOF(struct A, d));return 0;
}
3.模拟实现atoi
#include <stdio.h>
#include <limits.h>
#include <ctype.h>enum State
{INVALID,VALID
};enum State state = INVALID;int my_atoi(const char* p)
{int flag = 1;if (p == NULL){return 0;}if (*p == '\0'){return 0;}while (isspace(*p)){p++;}if (*p == '+'){flag = 1;p++;}else if (*p == '-'){flag = -1;p++;}long long n = 0;while (isdigit(*p)){n = n * 10 + flag * (*p - '0');if (n < INT_MIN || n>INT_MAX){return 0;}p++;}if (*p == '\0'){state = VALID;return (int)n;}else{return (int)n;}
}int main()
{const char* p = "   -14a";int ret = my_atoi(p);if(state == VALID)printf("合法:%d\n", ret);elseprintf("非法:%d\n", ret);return 0;
}
4.n的k次方

编写一个函数实现n的k次方,使用递归实现。

#include <stdio.h>double Pow(int n, int k);int main()
{int n = 0;int k = 0;scanf("%d %d", &n, &k);double ret = Pow(n, k);printf("%lf\n", ret);return 0;
}double Pow(int n, int k)
{if (k == 0)return 1;else if (k > 0)return n * Pow(n, k - 1);elsereturn 1.0 / (Pow(n, -k));
}
5.字符串逆序

编写一个函数reverse_string(char *string)

实现:将参数字符串中的字符反向排列,不是逆序打印。

要求:不能使用C函数库中的字符串操作函数。

比如:char arr[] = “abcdef”

逆序之后数组的内容变成:fedcba


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

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

相关文章

电子元器件商城批发模式介绍

随着互联网和电子商务的迅猛发展&#xff0c;电子元器件的批发模式也经历了显著的变化。传统的批发模式逐渐被电子元器件商城所取代&#xff0c;这种新兴的批发模式不仅提高了交易效率&#xff0c;还为买卖双方提供了更多的便利和选择。本文将详细介绍电子元器件商城的批发模式…

自动化桌面整理新时代:Llama 3驱动的智能文件管理系统

在信息爆炸的时代,个人和企业用户的电脑桌面常常被海量文件占据,导致查找特定文件如同大海捞针。为了解决这一痛点,Llama 3应运而生——一个集成了先进多模态AI技术的智能文件管家,旨在将杂乱无章的文件世界变得井然有序。本文将深入探讨Llama 3如何利用其创新功能,不仅自…

研发效能DevOps: Ubuntu 部署 JFrog 制品库

目录 一、实验 1.环境 2.Ubuntu 部署 JFrog 制品库 3.Ubuntu 部署 postgresql数据库 4.Ubuntu 部署 Xray 5. 使用JFrog 增删项目 二、问题 1.Ubuntu 如何通过apt方式部署 JFrog 制品库 2.Ubuntu 如何通过docker方式部署 JFrog 制品库 3.安装jdk报错 4.安装JFrog Ar…

将用户添加到Linux系统的`dialout`用户组中的作用是允许该用户访问串口设备

将用户添加到Linux系统的dialout用户组中的作用是允许该用户访问串口设备。这对于需要与串口设备&#xff08;如调制解调器、串行通信设备等&#xff09;进行通信的应用程序或用户非常重要。 要将用户添加到dialout用户组&#xff0c;可以使用以下命令&#xff1a; sudo user…

javascript DOM 属性详解:读取、修改、移除

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、读取…

动态路由协议实验——RIP

动态路由协议实验——RIP 什么是RIP ​ RIP(Routing Information Protocol,路由信息协议&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;是一种动态路由选择协议&#xff0c;用于自治系统&#xff08;AS&#xff09;内的路由信息的传递。RIP协议基于…

实时数据传输:Django 与 MQTT 的完美结合

文章目录 准备工作创建 Django 项目与应用设置 MQTT 服务器编写 Django 视图编写前端模板发布 MQTT 消息运行 Django 项目 在当今互联网应用中&#xff0c;实时数据传输已经成为许多项目的核心需求。无论是社交媒体平台、在线游戏、金融交易还是物联网设备&#xff0c;都需要及…

Spring Boot(七十四):集成Guava 库实现布隆过滤器(Bloom Filter)

之前在redis(17):什么是布隆过滤器?如何实现布隆过滤器?中介绍了布隆过滤器,以及原理,布隆过滤器有很多实现和优化,由 Google 开发著名的 Guava 库就提供了布隆过滤器(Bloom Filter)的实现。在基于 Maven 的 Java 项目中要使用 Guava 提供的布隆过滤器,只需要引入以…

Python—面向对象小解(3)

一、多态 多态指的是一类事物的多中形态 相同的方法&#xff0c;产生不同的执行结果 运算符 * 的多态 int int 加法计算 str str 字符串拼接 list list 列表的数据合并 在python中可以使用类实现一个多态效果 在python中使用重写的方式实现多态 &#xff08;1&#xff09;定…

飞腾D2000+FPGA云终端,实现从硬件、操作系统到应用的完全国产、自主、可控

飞腾云终端基于国产化飞腾高性能8核D2000处理器平台的国产自主可控解决方案&#xff0c;搭载昆仑国产化固件,支持UOS、银河麒麟等国产操作系统&#xff0c;满足国产化信息安全运算的需求&#xff0c;实现从硬件、操作系统到应用的完全国产、自主、可控&#xff0c;是国产信息安…

#知识分享#笔记#学习方法

“二豆写作工具推荐” 在当今社会&#xff0c;论文写作已成为学术界必不可少的一部分。但是很多学生在写作过程中经常会遇到一些困难&#xff0c;比如查重降重。为了帮助广大学生更好地完成论文写作&#xff0c;我们推荐一款优秀的工具——二豆写作。 二豆写作是一款专门用于…

WireShark抓包软件的使用 上海商学院 计算机网络 实验作业3

实验目的 &#xff08;1&#xff09;熟悉wireShark软件操作界面和操作步骤&#xff1b; &#xff08;2&#xff09;学会捕获过滤器的设置方法&#xff1b; &#xff08;3&#xff09;学会显示过滤器的设置方法&#xff1b; &#xff08;4&#xff09;学会使用捕获报文的统计…

20231911 2023-2024-2 《网络攻防实践》实践十一报告

实践内容 &#xff08;1&#xff09;web浏览器渗透攻击 任务&#xff1a;使用攻击机和Windows靶机进行浏览器渗透攻击实验&#xff0c;体验网页木马构造及实施浏览器攻击的实际过程。 实验步骤&#xff1a; ①选择使用Metasploit中的MS06-014渗透攻击模块②选择PAYLOAD为任意…

Golang:使用go-nanoid生成随机的唯一ID

go-nanoid可以生成随机的唯一ID 文档 https://github.com/matoous/go-nanoid 安装 $ go get github.com/matoous/go-nanoid/v2代码示例 package mainimport ("fmt"gonanoid "github.com/matoous/go-nanoid/v2" )func main() {id, _ : gonanoid.New()f…

【摩托game】

编写一个完整的摩托游戏代码是一个庞大的项目&#xff0c;涉及复杂的逻辑和资源。在这里&#xff0c;我可以提供一个非常基础的示例&#xff0c;使用Python和Pygame库来创建一个简单的2D摩托游戏。请注意&#xff0c;这只是一个起点&#xff0c;真正的游戏开发需要更多的功能、…

pytorch学习笔记3

标量数据 标量数据通常指的是单个数值&#xff0c;比如一个损失值、准确率、学习率等。这些单个的数值数据可以被记录下来&#xff0c;用于分析模型的训练过程、性能等。在代码中&#xff0c;writer.add_scalar() 的作用就是将这些标量数据添加到日志中&#xff0c;以便后续在可…

Linux基本命令的使用(mkdir)

一、Linux必备命令之mkdir • mkdir命令主要用于创建目录 • 语法: mkdir [选项] 目录名称 若指定目录不存在则创建目录&#xff1b; 选项&#xff1a; -p&#xff0c;--parents 需要时创建目录的上层目录&#xff0c;若这些 目录已存在也不当作错误处理 二、Linux必备命令之…

java基础-chapter15(io流)

io流&#xff1a;存储和读取数据的解决方案 I:input O:output io流的作用&#xff1a;用于读写数据&#xff08;本地文件,网络&#xff09; io流按照流向可以分为&#xff1a; 输出流&#xff1a;程序->文件 输入流&#xff1a;文件->程序 io流按照操作文件…

nginx的安装002

之前001讲述了nginxyum安装现在讲一下nginx如何本地离线安装 操作系统&#xff1a; CentOS Stream 9 操作步骤&#xff1a; 首先访问nginx官网&#xff0c;下载。 用wget命令下载&#xff0c; [rootlocalhost ~]# wget -c https://nginx.org/download/nginx-1.26.0.tar.gz …

python基础(习题、资料)

免费提取资料&#xff1a; 练习、资料免费提取。持续更新迅雷云盘https://pan.xunlei.com/s/VNz6kH1EXQtK8j-wwwz_c0k8A1?pwdrj2x# 本文为Python的进阶知识合辑&#xff0c;包括列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、字典&#xff08;Dic…