C语言题目总结--操作符运用

news2024/9/22 15:50:35

在这里插入图片描述
请添加图片描述

😶‍🌫️Take your time ! 😶‍🌫️
💥个人主页:🔥🔥🔥大魔王🔥🔥🔥
💥代码仓库:🔥🔥魔王修炼之路🔥🔥
💥所属专栏:🔥魔王的修炼之路–C语言🔥
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞👍和关注💖,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。

文章目录

  • 一、求最小公倍数
  • 二、句子逆序
  • 三、宏实现offsetof
    • 1、offsetof使用
    • 2、宏实现offsetof
  • 四、写一个宏,交换一个数二进制的奇数位和偶数位
  • 五、给定一个正数sum,从n个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum,最快的复杂度为几?
  • 六、总结

一、求最小公倍数

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("%d\n", a);
	return 0;
}

//求最大公约数
#include <stdio.h>

int max_common_divisor(int a, int b)
{
	//1.暴力穷举法:让较大数%较小数,如果余数为0,则小数为最大公约数。否则,小数减一,让原来的两个数同时对这个除数进行取余,当原来两个数都能整除时,则除数为最大公约数。
	int max = a;
	int min = b;
	if (max < min)
	{
		int temp = max;
		max = min;
		min = temp;
	}
	int q = min;
	while (1)
	{
		if (max % q == 0 && min % q == 0)
		{
			break;
		}
		else
			q--;
	}
	
	
	//2.辗转相除法:首先让大数除以小数,如果余数为0,则除数为最大公约数,否则让除数变为被除数,余数变为除数,重复,直到整除,此时的除数为最大公约数。

	int max = a;
	int min = b;
	if (max < min)
	{
		int temp = max;
		max = min;
		min = temp;
	}
	while (1)
	{
		int q = max % min;
		if (q == 0)
		{
			break;
		}
		else
		{
			max = min;
			min = q;
		}
	}

	return min;
}

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	scanf("%d", &b);
	int max = max_common_divisor(a, b);
	//最小公倍数等于原来的两数相乘/最大公约数
	//也可以不求最大公约数,直接暴力求解:从较大数开始,除原数,如果不能整除,就++,然后继续,直到能够整除。
	//也可以让较小数从1开始乘,乘一次判断一次能不能整除大数。
	int min = a * b / max;
	printf("%d\n", min);
	return 0;
}

二、句子逆序

eg:I like you -> you like I

方法:整体逆序+单词逆序。

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

void reverse(char* left, char* right)
{
	while (left < right)
	{
		char temp = *left;
		*left = *right;
		*right = temp;
		left++;
		right--;
	}
}

int main()
{
	char arr[100];
	gets(arr);
	//整体逆序
	char* left = arr;
	char* right =  arr + (strlen(arr)-1);
	reverse(left, right);

	//单词逆序
	left = arr;
	right = arr;
	while (1)
	{
		while (*right != ' ' && *right != '\0')
		{
			right++;
		}
		reverse(left, right - 1);

		if (*right == '\0')
		{
			break;
		}
		right++;
		left = right;
	}

	printf("%s", arr);
	return 0;
}

三、宏实现offsetof

offsetof:计算结构体成员的偏移量。

1、offsetof使用

#include <stdio.h>
#include <stddef.h>

struct test
{
	char b;
	int a;
	int c;
};

int main()
{
	printf("%d\n", offsetof(struct test, a));
	return 0;
}

2、宏实现offsetof

//宏实现offsetof
#include <stdio.h>
#include <stddef.h>

#define OFFSETOF(type,member) (size_t)(&(((type*)0)->member))

struct test
{
	char b;
	int a;
	int c;
};

int main()
{
	printf("%d\n", OFFSETOF(struct test, a));
	return 0;
}

四、写一个宏,交换一个数二进制的奇数位和偶数位

首先:交换一个数二进制的奇数位和偶数位需要分别摘出来它的二进制奇数位和偶数位,然后通过移位来使奇数位都移动到偶数位,偶数位都移动到奇数位,最后再合并。所以会用到01010101010101010101010101010101即0x55555555,10101010101010101010101010101010即0xAAAAAAAA,然后让奇数位左移一位,偶数位右移一位再按位或就行了。

宏实现:#define SWAP(x) (((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1))

五、给定一个正数sum,从n个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum,最快的复杂度为几?

采用双指针的方法,一个从最前面(left),一个从最后边(right),如果相加小于sum就left++,相加大于sum就right++,等left==rfght的时候退出循环。循环的时候记录每次最接近sum的数。

六、总结

  • 博主长期更新,博主的目标是不断提升阅读体验和内容质量,如果你喜欢博主的文章,请点个赞或者关注博主支持一波,我会更加努力的为你呈现精彩的内容。

🌈专栏推荐
😈魔王的修炼之路–C语言
😈魔王的修炼之路–数据结构初阶
😈魔王的修炼之路–C++
😈魔王的修炼之路–Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。

请添加图片描述

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

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

相关文章

【RabbitMQ(day3)】扇形交换机和主题交换机的应用

文章目录 第三种模型&#xff08;Publish/Subscribe 发布/订阅&#xff09;扇型&#xff08;funout&#xff09;交换机Public/Subscribe 模型绑定 第四、第五种模型&#xff08;Routing、Topics&#xff09;第四种模型&#xff08;Routing&#xff09;主题交换机&#xff08;To…

京东LBS推荐算法实践

1、推荐LBS业务介绍 1.1 业务场景 现有的同城购业务围绕京东即时零售能力搭建了到店、到家两种业务场景。同城业务与现有业务进行互补&#xff0c;利用高频&#xff0c;时效性快的特点&#xff0c;可以有效提升主站复访复购频次&#xff0c;是零售的重要战略方向。 1.2 名词…

运行vue项目显示找不到vue-cli

直接下载ruoyi源码到本地&#xff0c;启动ruoyi-ui的时候报错&#xff1a; 原来是电脑没配置nodejs。 所以先去官网下载nodejs&#xff0c;然后安装完之后&#xff0c;在命令行窗口输入&#xff1a; 显示安装成功。 但还没有结束&#xff0c;还要配置npm的全局模块的存放路径…

Apache Doris 巨大飞跃:存算分离新架构

作者&#xff1a;马如悦 Apache Doris 创始人 历史上&#xff0c;数据分析需求的不断提升&#xff08;更大的数据规模、更快的处理速度、更低的使用成本&#xff09;和计算基础设施的不断进化&#xff08;从专用的高端硬件、到低成本的商用硬件、到云计算服务&#xff09;&…

高忆管理:k线分析股票走势?

K线是一种经典的技术剖析工具&#xff0c;经过制作股票价格的收盘、开盘、最高和最低价&#xff0c;形成实体和影线&#xff0c;以反映股票价格的动摇和趋势。本文将从多个角度剖析K线剖析股票走势的重要性及使用。 1. 提醒价格趋势 K线图能够清晰显现股票价格走势的趋势&…

性能测试必须掌握的知识点:并发和并行以及CPU的状态和核心参数

性能测试一定绕不开并发和并行&#xff0c;而并发和并行又离不开CPU&#xff0c;本文就来带大家深入理解一下究竟什么是并发和并行以及CPU的状态和核心参数。 并发和并行 通常情况下&#xff0c;CPU 有几个核&#xff0c;就可以并行执行几个进程&#xff08;线程&#xff09;…

00 - RAP 开发环境配置

文章目录 [1] Eclipse - ADT[2] BTP / S4HC[3] Add ABAP Env. Service[4] Conn. to BTP [1] Eclipse - ADT 关于如何安装配置&#xff0c;参见文章: Install ABAP Development Tools (ADT) and abapGit Plugin Eclipse Eclipse - ADT Eclipse - abapGit Plugin [2] BTP / S4…

Linux 安装软件 - yum工具

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行…

大龄青年的浙大MBA读书梦——提面优秀190+的上岸经验分享

时间如白驹过隙&#xff0c;三十年的岁月也转瞬即逝&#xff0c;回首过往这三十年的人生路&#xff0c;没有大起大落&#xff0c;一直都是相对比较平稳。但这几年疫情原因&#xff0c;公司效益不好&#xff0c;不仅我们公司整个行业也都在裁员&#xff0c;为了让自己更具备竞争…

Camtasia2023喀秋莎中文版视频编辑软件

Camtasia专业的 屏幕录制和视频剪辑软件 3000多万专业人士在全球范围内使用Camtasia展示产品&#xff0c;教授课程&#xff0c;培训他人&#xff0c;以更快的速度和更吸引人的方式进行沟通和屏幕分享。使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得更为简单。 喀秋…

PT swap cell脚本分享

swap cell驱动相同&#xff0c;footprint相同的情况下&#xff0c;大小是一样的&#xff0c;甚至不需要重新抽RC。 这里分享一下&#xff0c;pt size cell时只swap cell的脚本&#xff1a; define_user_attribute -class lib_cell -type string cell_area proc define_cell_ar…

ConcurrentHashMap源码详解

本文已收录于专栏 《Java》 目录 概念说明数据结构线程安全HashMap示例运行结果ConcurrentHashMap示例运行结果 涉及技术Synchronized概念特性 CAS(Compare And Swap)概念原理代码演示没有使用CAS的代码运行结果使用CAS的代码运行结果 总结提升 概念说明 ConcurrentHashMap是Ja…

vue3自定义dialog createApp setup语法组件使用element

目录 index.vue <template><el-dialogcenterv-model"isVisible"width"650px":title"title":append-to-body"true"><div id"dialogMap_container"></div><template #footer><span class&q…

7月31日每日两题

第一题:再解炸弹人 小哼最近爱上了“炸弹人”游戏。你还记得在小霸王游戏机上的炸弹人吗?用放置炸弹的方法来消灭敌人。需将画面上的敌人全部消灭后,并找到隐藏在墙里的暗门才能过关。 现在有一个特殊的关卡如下。你只有一枚炸弹,但是这枚炸弹威力超强(杀伤距离超长,可…

【LeetCode】143.重排链表

题目 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交…

Michael.W基于Foundry精读Openzeppelin第16期——SignedSafeMath.sol

Michael.W基于Foundry精读Openzeppelin第16期——SignedSafeMath.sol 0. 版本0.1 SignedSafeMath.sol 1. 目标合约2. 代码精读2.1 mul(int256 a, int256 b)2.2 div(int256 a, int256 b)2.3 sub(int256 a, int256 b)2.4 add(int256 a, int256 b) 0. 版本 [openzeppelin]&#x…

试试这三款音频转换格式软件,看看可不可以转换mp3?

你是不是不知道音频转换格式有什么用呢&#xff1f;为什么要音频转换呢&#xff1f; 其实音频转换格式的原因是&#xff1a; ①兼容性问题&#xff1a;不同的设备支持不同的音频格式&#xff0c;如果你想在不同设备之间共享音频文件的话&#xff0c;那么需要将文件转换另一种…

Android HTTP使用(详细版)

前言 在面试过程中,HTTP 被提问的概率还是比较高的。 小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。 HTTP 基本概念 Get 与 Post HTTP 特性…

Spring AOP 中的代理对象是怎么创建出来的?

文章目录 1. AOP 用法2. 原理分析2.1 doCreateBean2.2 postProcessAfterInitialization2.3 getAdvicesAndAdvisorsForBean2.3.1 findCandidateAdvisors2.3.2 findAdvisorsThatCanApply2.3.3 extendAdvisors 2.4 createProxy 今天和小伙伴们聊一聊 Spring AOP 中的代理对象是怎么…

将number输入框改写成只能输入数字的输入框

去掉 type”number” 末尾的箭头 场景代码 场景 在很多场景下&#xff0c;输入框是会被要求限制只能输入数字&#xff0c;不能输入文字或者符号的。通常我们会使用input事件 正则表达式 去实现这个功能&#xff0c;但今天提供另一种css的方法&#xff0c;将 type”number” 的…