当前位置: 首页 > news >正文

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


相关文章:

  • 民生银行信用卡中心金融科技24届春招面经
  • 日期工具类:获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)
  • sherpa-onnx说话人识别+语音识别自动开启(VAD)+语音识别Python API
  • Win11下安装VS2022失败的解决办法
  • Java编程小练习题目
  • 外包IT运维解决方案
  • CATO原理中的数学与魔术(十四)——流程设计思路与升华
  • 强化学习中的自我博弈(self-play)
  • 数据库精选题(三)(SQL语言精选题)(按语句类型分类)
  • 解决 uniapp h5 页面在私有企微iOS平台 间歇性调用uni api不成功问题(uni.previewImage为例)。
  • uniapp实现幻灯功能方法及代码
  • springboot 搭建一个 测试redis 集群连通性demo
  • Java热部署:让应用更新如丝般顺滑,告别繁琐重启!
  • openEuler2203SP3自定义ios
  • android怎么知道FileProvider应该导入的包名是什么?androidx.core.content.FileProvider
  • ES6指北【2】—— 箭头函数
  • 自己简单写的 事件订阅机制
  • chrome扩展demo1-小时钟
  • CSS实用技巧干货
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • java8 Stream Pipelines 浅析
  • Laravel Mix运行时关于es2015报错解决方案
  • Puppeteer:浏览器控制器
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 不上全站https的网站你们就等着被恶心死吧
  • 构造函数(constructor)与原型链(prototype)关系
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 码农张的Bug人生 - 初来乍到
  • 浅谈Golang中select的用法
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (ZT)一个美国文科博士的YardLife
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (十一)图像的罗伯特梯度锐化
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (一)SpringBoot3---尚硅谷总结
  • (转)C#调用WebService 基础
  • (轉)JSON.stringify 语法实例讲解
  • .gitignore文件设置了忽略但不生效
  • .libPaths()设置包加载目录
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net 8.0 新的变化
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @SuppressWarnings注解
  • [2]十道算法题【Java实现】
  • [AIGC] 使用Curl进行网络请求的常见用法