C语言进阶---------作业复习

作者前言

🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
​🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂


习题

  • **作者前言**
  • 选择题
  • 编程题
    • offsetof宏
  • 交换奇偶位
  • 添加逗号
  • 删除公共字符

选择题

在这里插入图片描述
解法:
在这里插入图片描述

编程题

题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。

编写一个函数找出这两个只出现一次的数字。

例如:

有数组的元素是:1,2,3,4,5,1,2,3,4,6

只有5和6只出现1次,要找出5和6.
思路:
(1)暴力求解:遍历
(2):
我们可以拆成两个组,一个组存储有5 ,另一个组存储有6
首先我们可以先把整个数组进行异或操作
在这里插入图片描述
上图我们可以看到不同的位置上的异或操作的结果是1,那我们可以通过一个位置来区分,让二进制的该位置的数为1分成一组,不为1的分成另外一组,这样就可以分开

#include<stdio.h>
int main()
{int arr[] = { 1,2,3,4,5,6,1,2,3,4 };int i = 0;int sum = 0;//全部异或的结果for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){sum ^= arr[i];}int sum1 = sum;int sum2 = sum;int size = 0;//统计出第几位为1while (!(sum & 1)){sum = sum >> 1;size++;}for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){if ((arr[i] >> size) & 1){sum1 ^= arr[i];//计算出其中一个}}printf("%d %d", sum1, sum1 ^ sum2);return 0;
}

offsetof宏

写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明

考察:offsetof宏的实现
在这里插入图片描述
思路:我们可以把一个数转换成对应的结构体初始地址,然后返回对应成员的地址

#include<stdio.h>#include<stddef.h>#define MYOFFSEROF(type, mem) (size_t)(&(((type*)0)->mem)) //把0转变成这个结构体指针类型struct S{int a;char b;};int main(){printf("%d", offsetof(struct S, b));printf("%zd", MYOFFSEROF(struct S, b));return 0;}

交换奇偶位

写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。
一个数之和=奇数位之和 + 偶数位之和
在这里插入图片描述
我们要获取一个数的奇数位 可以 与(&)上0x55555555 ,偶数位与(&)上0xaaaaaaaa

#include<stdio.h>
#define EXCHENG(a) (((a & 0x55555555)<<1) +((a & 0xaaaaaaaa)>>1))
int main()
{int a = 10;a = EXCHENG(a);printf("%d", a);return 0;
}

添加逗号

在这里插入图片描述
这道题的思路:
我们可以举例如 1,333,333 22,333,333 333,333,333 这三种情况,控制好间距就可以很好解决

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {long long num = 0;scanf("%d", &num);char *str = (char*)malloc(sizeof(char) * 14);sprintf(str, "%d", num);int size = strlen(str);int sub = size % 3;int i = 0;//防止前面不满if(sub){for(;i < sub; i++){printf("%c", str[i]);}if(sub != size)printf(",");}int count = 0;for(; i < size;i++){if(count == 3){printf(",");count = 0;}count += printf("%c", str[i]);}free(str);return 0;
}

删除公共字符

在这里插入图片描述
思路很简单就是在字符串里面找出相同的不打印,然后不同的打印出来

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main() 
{char *str1 = (char*)malloc(sizeof(char)* 1000);char *str2 = (char*)malloc(sizeof(char)* 1000);gets(str1);gets(str2);int size = strlen(str1);int i = 0;int size1 = strlen(str2);for (i = 0; i < size;i++){int j = 0;for (j = 0; j < size1; j++){if(str1[i] == str2[j]){break;}}if(j == size1)printf("%c", str1[i]);}free(str1);free(str2);return 0;
}

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

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

相关文章

Python~字典快速上手

目录 Key的重要性 一 创建字典{} 二 字典用key查找 in(遍历)和[]用key查找 keyerror in和[]的效率对比 三 字典的插入/修改/删除(先查找) ​编辑 四 字典增删查改/遍历的效率 五 字典的遍历 for遍历可迭代对象拿到key 与创建顺序相同 keys/values/items方法 六 可…

Git本地仓库命令补充

说明&#xff1a;之前对Git本地仓库的基础使用总结过一篇笔记&#xff0c;Git本地仓库使用&#xff0c;本文对Git的一些基础命令进行补充。 一步提交 通常&#xff0c;我们本地仓库使用Git&#xff0c;文件都需要先 add&#xff0c;将文件从工作区加入到暂存区&#xff0c;然…

【PHY6222】绑定详解

1.函数详解 bStatus_t GAPBondMgr_SetParameter( uint16 param, uint8 len, void* pValue ) 设置绑定参数。 bStatus_t GAPBondMgr_GetParameter( uint16 param, void* pValue ) 获取绑定参数。 param&#xff1a; GAPBOND_PAIRING_MODE&#xff0c;配对模式&#xff0c;…

Flink CDC 1.0至3.0回忆录

Flink CDC 1.0至3.0回忆录 一、引言二、CDC概述三、Flink CDC 1.0&#xff1a;扬帆起航3.1 架构设计3.2 版本痛点 四、Flink CDC 2.0&#xff1a;成长突破4.1 DBlog 无锁算法4.2 FLIP-27 架构实现4.3 整体流程 五、Flink CDC 3.0&#xff1a;应运而生六、Flink CDC 的影响和价值…

创建型设计模式

创建型设计模式 一、六大基本原则1、单一职责原则2、开闭原则3、里氏代换原则4、依赖倒置原则5、接口隔离原则6、迪米特法则 二、设计模式总览三、具体代码实现工厂设计模式抽象工厂设计模式建造者设计模式原型设计模式单例设计模式 五种设计模式的主要代码以及实现包 一、六大…

前端常用的工具网站

前端常用的工具网站&#x1f516; 文章目录 前端常用的工具网站&#x1f516;1. 图片在线压缩2. iconfont--矢量图标3. JSON在线格式化4. EMOJIALL--表情符号5. removebg--去除图片背景6. FREE API--免费API接口7. Lorem picsum --随机图片8.UU在线工具 -- 聚合工具 1. 图片在线…

STM32实现三个小灯亮

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_P…

【Node JS】node.js安装步骤详解

一、安装Node.js 1.下载 Node.js官网下载 根据自身系统下载对应的安装包&#xff08;我这里为Windows11 64位&#xff0c;故选择下载第一个安装包&#xff09; 2.安装 双击安装包&#xff0c;点击Next&#xff0c;勾选使用许可协议&#xff0c;点击Next&#xff0c;选择安装位…

Adobe InDesign各版本安装指南

下载链接 https://pan.baidu.com/s/1VWGKDUijTTETU9sVWFjCtg?pwd0531 #2024版本 1.鼠标右击【InCopy2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 InCopy2024(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Setup…

蓝桥村的神秘农田

蓝桥村的神秘农田 问题描述 小蓝是蓝桥村的村长&#xff0c;他拥有一块神秘的农田。这块农田的奇特之处在于&#xff0c;每年可以种植两种作物&#xff0c;分别称为 "瑶瑶豆" 和 "坤坤果"。小蓝需要为每种作物选择一个整数的生长指数&#xff0c;瑶瑶豆的…

ROS2_Control官方资料+运动控制

Getting Started — ROS2_Control: Rolling Dec 2023 documentation Getting Started Edit on GitHub Youre reading the documentation for a development version. For the latest released version, please have a look at Iron. Getting Started Installation Binar…

python实现元旦多种炫酷高级倒计时_附源码【第20篇—python过元旦】

文章目录 &#x1f30d;python实现元旦倒计时 — 初级(控制台)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 中级(精美动态图)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 高…