C语言经典例题-19

news/2024/10/5 23:13:30/
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.ppmy.cn/news/1473713.html

相关文章

「深度解析」ChatGPT2:无监督多任务学习的语言模型(2019)

论文总结 以下是我阅读完整篇论文做的个人总结&#xff0c;包含了ChatGPT-2文章的主要内容&#xff0c;可以仅看【论文总结】章节。 数据集 自制了一个网页爬虫&#xff0c;被抓取的网页部分来自于社交平台&#xff0c;这些网页由人工进行过滤。最终生成 WebText数据集 &…

Linux-DNS

DNS域名解析服务 1.DNS介绍 DNS 是域名系统 (Domain Name System) 的缩写&#xff0c;是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP数串。…

产品经理-工作流程及职能(6)

产品经理作为互联网项目的主心骨&#xff0c;连接着团队的所有成员&#xff08;开发、设计、运营、测试、市场等&#xff09; 用合理的产品规划和清晰的产品愿景带领大家前进&#xff0c;通过满足用户需求来创造属于自己的商业利益。 在通常情况下&#xff0c;PM需要对整个产品…

其他OpenAI API和功能

文章目录 嵌入嵌入如何为ML模型翻译语言内容审核模型Whisper 和 DALL.E除了文本补全功能,OpenAl用户还可以使用其他一些功能但如果你想深入了解所有API那么请查看OpenAl的APl reference 页面。 嵌入 由于模型依赖数学函数,因此它需要数值输入来处理信息。然而,许多元素(如…

探索Scala的类型奥秘:协变与逆变全解析

&#x1f504; 探索Scala的类型奥秘&#xff1a;协变与逆变全解析 在Scala的强类型系统中&#xff0c;协变&#xff08;covariance&#xff09;和逆变&#xff08;contravariance&#xff09;是两个核心概念&#xff0c;它们允许我们在泛型编程中更灵活地使用类型。本文将深入…

【基础篇】1.8 C语言基础(二)更新中

三,位操作 在STM32开发中,位操作是非常重要的技术,特别是在处理器外设寄存器的配置和控制过程中。它可以有效地提高代码的性能、可维护性和可移植性。 3.1 位操作运算符 3.1.1 按位与(&) 运算规则:如果两个操作数的对应位都为 1,则结果为 1;否则为 0。示例:a &…

Apache DolphinScheduler 与 AWS 的 EMR/Redshift 集成实践分享

引言 这篇文章将给大家讲解关于DolphinScheduler与AWS的EMR和Redshift的集成实践&#xff0c;通过本文希望大家能更深入地了解AWS智能湖仓架构&#xff0c;以及DolphinScheduler在实际应用中的重要性。 AWS智能湖仓架构 首先&#xff0c;我们来看一下AWS经典的智能湖仓架构图…

数据结构(Java):迭代器遍历【底层源码解析】

1、引言 我们知道&#xff0c;对于List系列集合&#xff0c;添加的元素是有序、可重复、有索引的&#xff1b;而对于Set系列集合&#xff0c;添加的元素是无序、不重复、无索引的。 那么使用for循环通过下标来对Set系列集合进行遍历&#xff0c;那显然是不行的。 迭代器就可…