char

【网易】2018校招笔试题

坚强是说给别人听的谎言 提交于 2020-03-24 19:01:40
一丶魔法币 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币 魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币 小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。 思路:一开始DFS搜索 即使最深30层 也只拿了60分 操作一,一定使当前数变成奇数    操作二,一定使当前数变成偶数 每次对当前数进行判断 是由哪一步变来的 倒退回去即可 1 #include <cstdio> 2 #include <cctype> 3 4 const int MAXN=1000010; 5 6 int n,tot; 7 8 int a[MAXN]; 9 10 bool flag; 11 12 bool DFS(int x) { 13 if(x>n) return false; 14 if(x==n) return true; 15 if(DFS(2*x+1)) {a[++tot]=1;return true;} 16 if(DFS(2*x+2)) {a[++tot]=2;return true;} 17

个人项目(C语言)

被刻印的时光 ゝ 提交于 2020-03-24 16:35:06
GitHub地址: https://github.com/dachai9/personal-project.git 1. WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 具体功能要求: 程序处理用户需求的模式为:wc.exe [parameter][ file_name ] 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数。 --完成 wc.exe -w file.c //返回文件 file.c 的词的数目。 --完成 wc.exe -l file.c //返回文件 file.c 的行数。 --完成 扩展功能: -s 递归处理目录下符合条件的文件。 --完成 -a 返回更复杂的数据(代码行 / 空行 / 注释行)。 --完成 (空行的格式控制字符只识别%d) 空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。 代码行:本行包括多于一个字符的代码。 注释行:本行不是代码行,并且本行包括注释

strtok和strtok_r

旧巷老猫 提交于 2020-03-24 07:14:51
strtok和strtok_r 原型:char *strtok(char *s, char *delim); 功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包括在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。 返回值 :从s开头開始的一个个被切割的串。当没有被切割的串时则返回NULL。 全部delim中包括的字符都会被滤掉,并将被滤掉的地方设 为一处切割的节点。 举例: #include < string .h > #include < stdio.h > int main( void ) { char input[ 16 ] = " abc,d " ; char * p; /* strtok places a NULL terminator in front of the token, if found */ p = strtok(input, " , " ); if (p) printf( " %s " , p); /* A second call to strtok using a NULL as the first parameter returns a pointer to the character following

VC++中内存对齐

不想你离开。 提交于 2020-03-24 03:01:27
我们经常看到求 sizeof(A) 的值的问题,其中A是一个结构体,类,或者联合体。 为了优化CPU访问和优化内存,减少内存碎片,编译器对内存对齐制定了一些规则。但是,不同的编译器可能有不同的实现,本文只针对VC++编译器,这里使用的IDE是VS2012。 #pragma pack()是一个预处理,表示内存对齐。布局控制#pragma,为编译程序提供非常规的控制流信息。 /**********结构体的大小的规则*************/ 结构体大小是处理器位数和结构体内最长数据元素所占字节数二者中较小的那一个的整数倍。 比如说,假设处理器位数为n,结构体内最大数据元素所占字节数为m。 处理器为32位,n = 4;结构体内最大数据类型为short,m = 2; n > m;结构体大小为m的整数倍,反之亦然。 注意:有些虽然是64位的操作系统,但是编译器却是32位的,此时位数为32. 1 class A{ 2   int a; 3   char b; 4   short c; 5 }; sizeof(A)为8,为4的整数倍。 1 struct B{ 2 short a; 3 short b; 4 short c; 5 }; sizeof(B)为6,为2(sizeof(short))的整数倍。 注意:C++中的结构体与类只有一个区别,就是结构体成员默认是public

单向链表实例:终端交互简易通讯录

狂风中的少年 提交于 2020-03-24 01:21:05
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 6 typedef struct Contacts_infomation{ 7 char name[13]; 8 char work_unit[61]; 9 char phone_number[12]; 10 char E_mail[61]; 11 struct Contacts_infomation *next; 12 }con_info; 13 14 15 con_info * Creat_node(void) 16 { 17 con_info *new; 18 19 new = (con_info *)malloc(sizeof(con_info)); 20 if(!new){ 21 printf("Malloc Error!\n"); 22 exit(-1); 23 } 24 new->next = NULL; 25 26 return new; 27 } 28 29 int insert_node(con_info ** phead) 30 { 31 con_info *new, *cur; 32 33 cur = *phead; 34 new = Creat_node(); 35 if(!new){ 36 return -1; 37

手机、ESP32单片机、MQTT服务器连接实验

旧时模样 提交于 2020-03-23 16:53:33
实验目的:通过自己制作的手机APP,连接MQTT服务器,获取ESP32单片机的温湿度信息,控制ESP32单片机上的LED开关。 实验准备: 1、硬件:ESP32开发板(型号不限,esp01s也可以)、LED灯、DH11温湿度传感器、面包板等 2、软件: (1)arduino软件,可以到官网 https://www.arduino.cc/en/Main/Software 下载。 (2)App Inventor 2 集成版,可以到官网 https://www.wxbit.com/ 下载。(解释一下:这个软件是适用于初学者的手机APP制作软件,界面设计所见即所得,程序设计通过拖拽积木块来实现。) (3)需要一台服务器。(可以是自己的电脑,也可以到网上买云服务器,笔者是购买的腾讯云服务器(每年79元),除了运行网站外,再捎带着提供MQTT服务。) 实验步骤: 一、总体设想 1、建一个MQTT服务器,提供订阅/发布 消息的功能。 2、用App Inventor 2 制作一个APP,功能是连接MQTT服务器,订阅ESP32单片机的温湿度信息,控制ESP32单片机上的LED开关。 3、为ESP32编写程序并烧录,完成连接MQTT服务器,发布温湿度信息,订阅LED控制主题,根据消息来开、关LED灯。 二、MQTT服务器的建立 MQTT是IBM开发的一个即时通讯协议

Linux编程简介——静态链接库

℡╲_俬逩灬. 提交于 2020-03-23 13:44:51
有时我们需要将一组代码编成一个库,从而方便其复用。例如,我们调用的STL和系统函数都是以这种方式提供的。另外,当项目工程较大时,为了使其模块化方便分工,有时也需要将其创建自己的链接库。 链接库按照其链接方式可以分为动态链接库和静态链接库两种,本文主要介绍一下静态链接库的创建方式。 以一个简单的代码为例,这里有两个文件main.c和stack.c,这里打算把stack.c作为一个lib供main.c调用。 /* stack.c */ char stack[512]; int top = -1; char pop( void ) { return stack[top--]; } void push( char c ) { stack[++top] = c ; } /* main.c */ #include <stdio.h> char pop(); void push( char c); void main( void ) { push( 'a' ); push( 'b' ); printf( "%c\n" , pop()); } 要把stack.c编成lib,需要经过如下两个步骤: 通过gcc –c命令将stack.c编成stack.o 通过ar命令将stack.o封装成libstack.a gcc -c stack.c ar cr libstack.a stack.o

C++标准模板库里面的容器

ぃ、小莉子 提交于 2020-03-23 13:32:09
1. 顺序容器 sequential container 单一类型 元素组成的 有序 集合 优:顺序访问元素快 不足:添加、删除元素性能相对低 非顺序访问元素性能相对低 vector、string、array都是连续的内存空间 容器选择:取决于执行访问的操作多还是插入删除的操作多     ①一般用vector     ②空间开销很重要时,不适用链表如list、forward_list     ③需要随机访问:vector、deque     ④要在中间进行插入、删除:链表类型如list、forwad_list     ⑤只要在头尾插入、删除:deque     ⑥读取输入时要在中间插入,之后要随机访问: 输入时用vector追加数据,在调用sort()函数,以避免在中间添加元素 若必须要在中间插入元素,输入时用list,输入完成后将list的内容保存到vector中 1.1 vector    https://zh.cppreference.com/w/cpp/container/vector (1)vector的增长 vector<int> ivec; cout<<"size:"<<ivec.size()<<endl; cout<<"capacity:"<<ivec.capacity()<<endl; for(int i=0;i<20;i++) { ivec.push_back

C++项目中的extern \"C\" {}

浪尽此生 提交于 2020-03-23 13:12:09
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif 它到底有什么用呢,你知道吗?而且这样的问题经常会出现在面试or笔试中。下面我就从以下几个方面来介绍它: 1、#ifdef _cplusplus/#endif _cplusplus及发散 2、extern "C" 2.1、extern关键字 2.2、"C" 2.3、小结extern "C" 3、C和C++互相调用 3.1、C++的编译和连接 3.2、C的编译和连接 3.3、C++中调用C的代码 3.4、C中调用C++的代码 4、C和C++混合调用特别之处函数指针 1、#ifdef _cplusplus/#endif _cplusplus及发散 在介绍extern "C"之前,我们来看下#ifdef _cplusplus/#endif _cplusplus的作用。很明显#ifdef/#endif、#ifndef/#endif用于条件编译,#ifdef _cplusplus/#endif _cplusplus——表示如果定义了宏_cplusplus,就执行#ifdef/#endif之间的语句,否则就不执行。 在这里为什么需要#ifdef _cplusplus/#endif

堆和栈的区别(转过无数次的文章)

这一生的挚爱 提交于 2020-03-23 11:08:04
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456/0在常量区,p3在栈上。 static int c =0; 全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); 分配得来得10和20字节的区域就在堆区。