melody_1016的博客

私信 关注
melody_jae
码龄5年
  • 429,512
    被访问量
  • 172
    原创文章
  • 11,115
    作者排名
  • 300
    粉丝数量
  • 于 2016-07-16 加入CSDN
获得成就
  • 获得314次点赞
  • 内容获得100次评论
  • 获得479次收藏
荣誉勋章
TA的专栏
  • c
    18篇
  • 学习过程中的知识点详解
    3篇
  • c++
    17篇
  • 数据结构
    8篇
  • 网络、操作系统
    8篇
  • PTA
    47篇
  • MOOC学习
    16篇
  • C语言小练习
    50篇
  • 踩坑笔记
    3篇
  • 剑指offer
    2篇
  • leetcode
    4篇
  • 数据库
    4篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

理解虚继承

本篇博客主要对继承的对象模型以及虚拟继承进行一个整理和总结。单继承方式一:单级派生//单继承class A{public: int _a;};class B :public A{public: int _b;};int main(){ B b; b._a = 1; b._b = 2; return ...
原创
1评论
2点赞
发布博客于 2 年前

视图的基本操作和用户管理

文章目录一、视图基本操作创建视图修改视图删除视图二、用户管理查看用户信息创建用户语法语句删除用户语法语句修改用户密码改自己密码root 用户更改其他用户密码三、权限授权回收权限一、视图基本操作创建视图create view 视图名 as select语句;//创建视图create view shitu as select ename,sal from emp where emp...
原创
1评论
1点赞
发布博客于 2 年前

MySQL基本查询

文章目录表的基本操作一、插入基本语法1. 单行数据+全列插入2. 多行数据 + 指定列插入3. 插入否则更新4. 替换二、select基本语法1.全列查询2.指定列查询3. 查询字段为表达式4.为查询结果指定别名基本语法语句5.结果去重三、where条件四、结果排序基本语法语句筛选分页结果基本语法语句五、update基本语法语句六、delete基本语法语句七、聚合函数八、group by子句的使用...
原创
0评论
1点赞
发布博客于 2 年前

数据类型与表的约束

基本数据类型的测试1.—tinyint类型//创建表t1,类型为tinyint//tinyint类型范围:有符号-128~127 无符号0~255create table t1(num tinyint);//测试tinyintinsert into t1 values(1);insert into t1 values(128);//将字段num类型改为无符号 alter...
原创
0评论
1点赞
发布博客于 2 年前

MySQL基本操作

--MySQL基本//连接MySQLmysql -uroot -p//查看连接情况show processlist;--对于数据库的操作//创建数据库create database rocket;//创建数据库并指定字符集create database rocket charset=utf8;//创建数据库并指定字符集和校验规则create database db3...
原创
0评论
3点赞
发布博客于 2 年前

tcp udp 的粘包 断包分析

转载自:https://blog.csdn.net/qq_40129743/article/details/78644292此篇分析来来自于一次面试经历,面试官问对于断包问题tcp跟udp分别的处理方式?然后我就在这里总结下粘包断包问题。一,从TCP与UDP的区别讲起网络数据经过路由器,如果数据很小,没有超过路由器的封包大小,就会直接直接经过路由器到达下一个路由器,一层一层最终到达目的...
转载
0评论
2点赞
发布博客于 2 年前

栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)class Solution{ //思路:借助栈来实现 //(...
原创
0评论
0点赞
发布博客于 2 年前

const_iterator 与 const类型的iterator

每一种容器都会定义自己的迭代器类型,这里以vector中的begin函数为例std::vector::beginiterator begin();//返回普通类型的迭代器const_iterator begin() const; //返回const_iterator类型的迭代器那么const_iterator 与 const类型的iterator有什么区别呢?#include...
原创
1评论
0点赞
发布博客于 2 年前

const_iterator 与 const类型的iterator

每一种容器都会定义自己的迭代器类型,这里以vector中的begin函数为例std::vector::beginiterator begin();//返回普通类型的迭代器const_iterator begin() const; //返回const_iterator类型的迭代器那么const_iterator 与 const类型的iterator有什么区别呢?#include...
原创
1评论
0点赞
发布博客于 2 年前

深拷贝与浅拷贝

深拷贝的实现:方式一:#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;#include<stdlib.h>#include<assert.h>//深拷贝class String{public: //正确写法一: /*String(co...
原创
0评论
0点赞
发布博客于 2 年前

设计一个类,只能在栈上创建对象

设计一个类,只能在栈上创建对象//思考的几个要点://(1)只能在栈,说明不能在堆上创建,考虑堆上创建对象的两种方法-->new和定位new表达式,原理-->先调用operator new开空间,然后执行构造函数//所以屏蔽掉operator new(即放成私有)这样就排斥了直接new和定位new表达式//注意:上面的方法只能排斥掉在堆上创建,但是在全局区仍然可以//(2)防...
原创
1评论
0点赞
发布博客于 3 年前

设计一个类,只能在堆上创建对象

设计一个类:只能在堆上创建对象//思路:说明不能在栈上创建对象,考虑到栈上创建对象会发生哪些事://(1)构造函数(2)拷贝构造 //所以先屏蔽掉构造函数,即设为私有。存在问题:在堆上创建对象也会调用构造函数,设为私有对其有影响//解决:提供成员函数接口,在成员函数中创建堆对象。存在问题:成员函数需要对象来调用,现在无法创建对象//解决办法:设为静态成员函数,这样就不依赖于对象调用/...
原创
2评论
0点赞
发布博客于 3 年前

设计一个类,只能在堆上创建对象

设计一个类:只能在堆上创建对象//思路:说明不能在栈上创建对象,考虑到栈上创建对象会发生哪些事://(1)构造函数(2)拷贝构造 //所以先屏蔽掉构造函数,即设为私有。存在问题:在堆上创建对象也会调用构造函数,设为私有对其有影响//解决:提供成员函数接口,在成员函数中创建堆对象。存在问题:成员函数需要对象来调用,现在无法创建对象//解决办法:设为静态成员函数,这样就不依赖于对象调用/...
原创
2评论
0点赞
发布博客于 3 年前

统计一个类中,创建出了多少个类对象

方法一:全局变量//方法一:全局变量int _count = 0;class A{public: A() { _count ++; } A(A&a) { _count++; } ~A() { _count--; } void GetCount() { cout << _count <&...
原创
0评论
2点赞
发布博客于 3 年前

关于“编译器会生成默认的构造函数”之剖析

开篇先列一下本篇文章要解释的几个知识点背景:我们知道,如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数。本节剖析:(1)如果没有显式定义,编译器真的会生成默认构造函数吗?(2)在什么场景下,编译器会生成默认构造函数,什么场景下不会?以一个简单的日期类来探索今天的主题例1:class Date{public:private: int...
原创
0评论
1点赞
发布博客于 3 年前

linux写时复制原理

本文转载自 Linux内核那些事来源:xusong.lie链接:http://mp.weixin.qq.com/s/h4xp7gcupExHUUCJ6PA6VA当调用fork()系统调用创建一个子进程时,Linux并不会为子进程创建新的物理内存空间,而是公用父进程的物理内存。这是因为Linux的内核开发者觉得,调用者调用fork()系统调用后会立刻调用exec()系统调用执行新的程序...
转载
2评论
3点赞
发布博客于 3 年前

xshell教育版下载链接及步骤

链接:http://www.netsarang.com/download/free_license.html教程:参考自https://blog.csdn.net/weixin_40928253/article/details/80621724
原创
0评论
0点赞
发布博客于 3 年前

this指针

背景首先来看一下在C语言中,我们定义一个结构体,如何通过函数实现对结构体成员的赋值?答案当然是通过传指针的方式;在实参中传入变量的地址,就可以达到在函数中修改变量各个成员内容的效果。方式如下:#include<stdio.h>#include<stdlib.h>#include<string.h>struct Student{ cha...
原创
0评论
0点赞
发布博客于 3 年前

C语言和C++中的函数命名规则

c语言函数命名规则例1:#include<stdio.h>#include<stdlib.h>int Add(int left, int right);//函数声明int main(){ Add(1, 2);//编译器在找的时候修饰为_Add}可以看到,编译器在找函数时并不是直接找Add的,而是找的是_Adddouble Add(double...
原创
1评论
1点赞
发布博客于 3 年前

signal信号宏定义查看

 在下面的目录:[lk@localhost linux]$ vim /usr/include/bits/signum.h 
原创
0评论
0点赞
发布博客于 3 年前

linux常用基础命令总结

对目录进行操作浏览ls语法:ls [选项] [目录或文件]功能:对于目录–>列出当前目录下所有的文件信息对于文件–>列出文件名以及其他信息选项含义-a列出目录下的所有文件,包括以.开头的隐含文件-l列出文件详细信息(权限、生成时间等)
原创
0评论
0点赞
发布博客于 3 年前

内核中查看task_struct结构体教程

在linux下,路径:/usr/src/kernels/3.10.0-327.el7.x86_64(这个是自己kernels目录下的)/include/linux/sched.h用管道命令查找:[lk@localhost linux]$ grep -n task_struct sched.h 结果显示出来很多,不好找直接打开sched.h文件[lk@localhost...
原创
0评论
0点赞
发布博客于 3 年前

堆的基本操作

Heap.h#ifndef __Heap_H_#define __Heap_H_//定义一个函数指针//typedef int (*PF)(HDataType left, HDataType right);typedef int HDataType;typedef struct Heap{ HDataType* _array; int _capacity;//容量 i...
原创
0评论
0点赞
发布博客于 3 年前

堆的基本操作

Heap.h#ifndef __Heap_H_#define __Heap_H_//定义一个函数指针//typedef int (*PF)(HDataType left, HDataType right);typedef int HDataType;typedef struct Heap{ HDataType* _array; int _capacity;//容量 i...
原创
0评论
0点赞
发布博客于 3 年前

在一组数字中找出最大和第二大的两个数

题目:在一组数字中找出最大和第二大的两个数要求:只能遍历一次数组思路:定义两个变量max和second,#include<stdio.h>#include<stdlib.h>void Find_Two_MaxNum(int a[], int size, int*max,int *second){ for (int i = 0; i < size...
原创
0评论
1点赞
发布博客于 3 年前

20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...
原创
0评论
0点赞
发布博客于 3 年前

栈

Stack.h#pragma once#define N 3typedef int SDataType;//动态栈typedef struct Stack{ SDataType*_array; int _capacity;//有效元素的最大个数 int _top;//栈顶}Stack;void StackInit(Stack*ps);//栈的初始化void _Che...
原创
0评论
0点赞
发布博客于 3 年前

203. 移除链表元素

删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ...
原创
0评论
0点赞
发布博客于 3 年前

最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...
原创
0评论
0点赞
发布博客于 3 年前

带头结点的双向循环链表

DList.h#ifndef __DList_H_#define __DList_H_typedef int DataType;typedef struct DListNode{ DataType _data; struct DListNode* _pPre; struct DListNode* _pNext;}DListNode;DListNode*BuyDLis...
原创
0评论
0点赞
发布博客于 3 年前

206. 反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?代码:/** * Definition for singly-linked list. * struct ListNode { *...
原创
0评论
0点赞
发布博客于 3 年前

指针相关知识点总结(二)

一、字符指针重点:区别字符指针和字符数组的本质#include<stdio.h>#include<stdlib.h>int main(){ char str1[] = "hello"; char str2[] = "hello"; char*p1 = "hello"; char*p2 = "hello"; printf("str
原创
0评论
0点赞
发布博客于 3 年前

单链表

SList.h#ifndef __SLIST_H__#define __SLIST_H__typedef int SLDataType;typedef struct SListNode{ SLDataType _data; struct SListNode*_pNext;}SListNode;void SListInit(SListNode*pList);//初始化v...
原创
0评论
0点赞
发布博客于 3 年前

单链表

SList.h#ifndef __SLIST_H__#define __SLIST_H__typedef int SLDataType;typedef struct SListNode{ SLDataType _data; struct SListNode*_pNext;}SListNode;void SListInit(SListNode*pList);//初始化v...
原创
0评论
0点赞
发布博客于 3 年前

链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。分析:整体思路:“快慢指针”法设立快慢两个指针,先让快指针走k步,到达位置后,快慢指针再同步移动;当快指针走到NULL时,慢指针所在的位置即为倒数第k个节点主要注意的点:k>节点个数时,最开始fast指针前进k步while循环内一定要判断,fast已经走到NULL时,没必要继续走下去代码:/*struct Li...
原创
1评论
0点赞
发布博客于 3 年前

动态顺序表

我们对静态顺序表可能比较熟悉,它的定义方式是struct SeqList{ int arr[100]; int _size;//当前存放数据的个数};主要思想就是利用数组可以一次性开辟一整块空间,存放我们想要的数据。从这个结构体的定义,我们可以获得如下信息:开辟的空间大小为100,(即可以存放100个整型数据),_size记录了当前数组中有效元素的个数,为什么要有这一...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现memcpy函数

  代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>void*Memcpy(void*dest, const void*src, size_t count){ assert(dest); assert(sr...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现strchr函数

代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char*Strchr(const char*str, int ch){ assert(str); char*pst...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现memmove函数

代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>void*Memmove(void*dest, const void*src, int num){ assert(dest); assert(src); char*...
原创
0评论
0点赞
发布博客于 3 年前

动态顺序表

SeqList.h#pragma oncetypedef int DataType;typedef struct SeqList{ DataType*_pData; int _capacity;//容量 int _size;//有效元素的个数}SeqList;void SeqListInit(SeqList*pSeq,int capacity);//初始化顺序表void...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现strcpy

代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>char*Strcpy(char*dest, const char*src){ assert(src); assert(dest); char*start = de...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现strcat函数

 代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char*Strcat(char*dest, const char*src){ assert(dest); ...
原创
0评论
0点赞
发布博客于 3 年前

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以喝多少汽水

题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,  给20元,可以喝多少汽水代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int main(){ int money = 0; scanf("%d", &money); int empty = m...
原创
0评论
0点赞
发布博客于 3 年前

一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现

题目:一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现思路一:暴力求解。每次选取一个元素,再遍历数组,判断是否有与其相同的元素,如果有则跳出循环;每一轮遍历都结束后都可以根据j与size的大小判断出只出现一次的数字代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#incl...
原创
0评论
0点赞
发布博客于 3 年前

判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

题目: 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC 思路:把源字符串追加到源字符串后边,这样问题就转化成了查找字串。可以利用strstr函数来完成,但...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现strstr函数

推荐一篇讲解KMP算法的文章--阮一峰http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html推荐一篇讲解Boyer-Moore算法的文章--阮一峰http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html...
原创
1评论
6点赞
发布博客于 3 年前

.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB

题目:实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 思路一:“数组挪动”,比如ABCD左旋一个字符,我们可以先把首元素保存起来,然后其他元素依次向左挪一个位置,这样最后一个字符(这里不谈\0,指的是D)的位置就空出来了,再把之前保存的那个字符放到这个位置,就成了BCDA。左旋2个字符同理,只不过多一层循环。这种方法时间复...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现strcmp函数

strcmpint strcmp ( const char * str1, const char * str2 );Compare two stringsCompares the C string str1 to the C string str2.This function starts comparing the first character of each string. ...
原创
0评论
0点赞
发布博客于 3 年前

//杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在

题目://杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5 1 3 4 2 4 5 4 5 6分析:拿到这个题一开始的思路就是暴力解法,直接两个嵌套的for循环遍历二维数组,但是这样的时间复杂度就是O^2(n),题目要求的时间复杂度...
原创
0评论
1点赞
发布博客于 3 年前

调整数组使奇数全部都位于偶数前面

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分分析:分别定义左右两个指针,一个从前向后找偶数,找到第一个偶数就停下来;同理,另一个从后向前找奇数,找到第一个奇数就停下来,然后把两个数据进行交换。依次循环,直到两个指针相遇。本题要注意的几个关键点:本题的大循环条件肯定是left<right,但是依...
原创
0评论
0点赞
发布博客于 3 年前

.编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

题目:编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算) 代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>//思路:将所有数字全部异或,最后得到的值即为只出现一次的数字int Find_one_num...
原创
0评论
0点赞
发布博客于 3 年前

不使用(a+b)/2这种方式,求两个数的平均值

题目:不使用(a+b)/2这种方式,求两个数的平均值分析:采用位运算的方法(图解如下)代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int Average(int num1, int num2){ return num1 + ((num2 - num1...
原创
0评论
0点赞
发布博客于 3 年前

有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student".

题目:有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student". 要求: 不能使用库函数。 只能开辟有限个空间(空间个数和字符串的长度无关)。 student a am i i ma a tneduts i am a student 思路:再定义一个数组,把原数组的字符串倒着拷入目标数组(相当于源字符串逆过来),然后操作目...
原创
0评论
0点赞
发布博客于 3 年前

.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。

题目:编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 ...
原创
0评论
2点赞
发布博客于 3 年前

扫雷

代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>//扫雷游戏的实现#define ROW 9#define COL 9#define Mine_Count 30//定...
原创
0评论
0点赞
发布博客于 3 年前

三字棋

三子棋是五子棋的简化版,原理和五子棋一样#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#define ROW 3#define COL 3//1.定义棋盘:二维数组//2.初始化棋盘//3.先打印一下棋盘//4.用户下一步棋,顺便检查一下游戏是否结束//5.电...
原创
0评论
0点赞
发布博客于 3 年前

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

题目:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 分析:比赛的名次有第1名、第2名、第3名、第4名、第5名,对应着5个人。每一个都可能是这5个名次中的一种。所以排列组合就是...
原创
0评论
0点赞
发布博客于 3 年前

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。现在请根据这些信息,写一个程序来确定到底谁是凶手。

题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。 分析:这个题要与“确定比赛名次”(使用枚举法)那道题区分开来。使用枚举法用于-->有多个可能的结果,所以用多重fo...
原创
1评论
0点赞
发布博客于 3 年前

在屏幕上打印杨辉三角

题目:.在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1分析:首先找出杨辉三角的规律:每行的第一个数都为1,紧接着下一项的值都为上一行两个值相加。那么就涉及到一个点:如何保存“上一行的两个值”?,这里我们可以设置一个二维数组进行保存。还有一个点:每行的最后一个值是1,但是上一行对应“相加数”只有一个值,那这个1如何得到?可以把二维数组全部初始化为0,这样,每一个二维数组的...
原创
0评论
0点赞
发布博客于 3 年前

创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置

题目:创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。 分析:题目不难,但是这里一定要注意memset函数的使用,是按照一个字节一个字节进行填充的,不是类型,具体参见https://blog.csdn.net/melody_1016/article/details/83...
原创
0评论
0点赞
发布博客于 3 年前

关于memset函数初始化数组的“坑”

我们知道,memset函数可以用来把一整块内存全部初始化,一般常用于数组。请看下面的代码我们定义了一个大小为5的int型数组,意在把数组中的每一个元素都初始化为1。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>//初始化...
原创
1评论
6点赞
发布博客于 3 年前

结构体知识点图谱总结(不断更新中)

原创
0评论
0点赞
发布博客于 3 年前

指针相关知识点总结(一)

二、指针的解引用关于指针的解引用,先看一道例题#include<stdio.h>#include<stdlib.h>int main(){ int n = 0x11223344; char*pc = (char*)&n; int*pi = &n; *pc = 0x55; *pi = 0; sy...
原创
0评论
0点赞
发布博客于 3 年前

操作符知识点图谱总结(不断更新)

原创
0评论
0点赞
发布博客于 3 年前

一道怪诞的程序---从反汇编的角度来理解前置++后置++

#include<stdio.h>#include<stdlib.h>int main(){ int i = 1; int ret = (++i) + (++i) + (++i); printf("%d
", ret); printf("%d
", i); system("pause"); return 0;}这道题的输出结果是多少?我们知...
原创
0评论
0点赞
发布博客于 3 年前

(图解)理解--模2,除2与移位之间的关系

原创
0评论
0点赞
发布博客于 3 年前

结构体传参

 验证两个问题:(1)传入结构体和结构体指针分别占据了多大内存空间(即对比一下开销)(2)当传入结构体时在函数内部修改数据,对于原来的值,起作用吗?(main函数中打印输出)(3)当传入结构体指针时在函数内部修改数据,对于原来的值,起作用吗?(main函数中打印输出)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>...
原创
0评论
3点赞
发布博客于 3 年前

给结构体中字符数组的赋值

先看一段代码: #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>struct Stu{ char name[10]; char sex; int age;};int main(){ struct Stu stu; stu.name = "hello";/...
原创
0评论
3点赞
发布博客于 3 年前

关于递归(以一道题为例)输出一个整数的每一位

题目:输出一个整数的每一位说明:这里暂且不考虑负数的情况,只考虑正数第一个代码:思路:先考虑最极端的情况,当为一位数时,不再递归下去,输出当前数字;否则不断调用自身(参数中要依次丢弃每一位)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>void Printnu...
原创
0评论
0点赞
发布博客于 3 年前

获取一个数二进制序列中所有的偶数位和奇数位

题目:获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。 思路:利用“按位与”运算,将num32位中的的每一个二进制(由低位到高位)位取下来,存放到数组中(注意,这里依次取下每一位与数组下标正好是反着的,即a[0]存放的是第32位,a[31]存放的是第1位)代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h...
原创
0评论
0点赞
发布博客于 3 年前

练习7-2 求最大值及其下标

练习7-2 求最大值及其下标 (20 分)本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。输入样例:62 8 10 1 9 10输出样例:10 2思路一:先...
原创
0评论
1点赞
发布博客于 3 年前

习题4-11 兔子繁衍问题

习题4-11 兔子繁衍问题 (15 分)一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。输入样例:30输出样例:9...
原创
0评论
0点赞
发布博客于 3 年前

写一个函数返回参数二进制中 1 的个数

题目:写一个函数返回参数二进制中 1 的个数 。比如: 15 0000 1111 4 个 1 程序原型: int count_one_bits(unsigned int value) { // 返回 1的位数 } 方法一:让数字不断移位,与1相与代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#inc...
原创
0评论
0点赞
发布博客于 3 年前

编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

题目:编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?  输入例子: 1999 2299  输出例子:7思路:利用位操作中的“异或”。异或的特征:相同为0.相异为1。先利用两个数进行“异或”操作,得到一个值value,然后问题就演变成了数出这个值value中1的个数,与上一题一样的方法。代码:#define _CRT_SECURE_NO_WAR...
原创
0评论
0点赞
发布博客于 3 年前

编写一个函数 reverse_string(char * string),将参数字符串中的字符反向排列

题目:编写一个函数 reverse_string(char * string),将参数字符串中的字符反向排列思路:设置两个指针,分别指向字符串的头部和尾部,两两交换;然后另两个指针都向中间移动,每次移动都交换元素,直到指针相遇。图解如下:代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include&lt...
原创
2评论
1点赞
发布博客于 3 年前

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

题目: 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和;例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 。代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int DigitSum(int n){ if...
原创
0评论
0点赞
发布博客于 3 年前

编写一个函数实现n^k,使用递归实现

题目:编写一个函数实现n^k,使用递归实现 代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int Kpowerofn(int n, int k)//默认n>0,k>=0,这里没有考虑n<0的情况{ if (k == 1) { retur...
原创
0评论
0点赞
发布博客于 3 年前

递归和非递归分别实现求第n个斐波那契数

题目:递归和非递归分别实现求第n个斐波那契数代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>//递归实现求第n个斐波那契数int Fib(int n){ if (n == 1 || n == 2) { return 1; } return Fib(n...
原创
0评论
1点赞
发布博客于 3 年前

递归和非递归分别实现求n的阶乘

题目:递归和非递归分别实现求n的阶乘 代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>//非递归实现n的阶乘int Factor(int n){ int ret = 1;//处理0的阶乘和1的阶乘 for (int i = 1; i <= n; i+...
原创
0评论
0点赞
发布博客于 3 年前

模拟实现strlen函数

题目:模拟实现strlen函数非递归方式:主要是借助计数器的方式,利用指针移动一个一个数字符个数,直到遇到末尾的\0截止 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>//非递归实现strlenint Strl...
原创
0评论
0点赞
发布博客于 3 年前

打印一个整数的每一位

题目:打印一个整数的每一位 ,例如输入数字1234,打印出来的结果为1  2  3  4分析:我们还记得之前有做过“逆序的三位数”的题(https://blog.csdn.net/melody_1016/article/details/81092305),其中的思路完全可以用到这道题当中。先把1234逆序成4321,然后就转化为“整数的分解”,即采取模除的方法,取下4321的每一位;每取下一位...
原创
0评论
0点赞
发布博客于 3 年前

大小写字符转换

题目:编写一个程序,可以一直接收键盘字符, 如果是小写字符就输出对应的大写字符;如果接收的是大写字符,就输出对应的小写字符; 如果是数字不输出。 代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int main(){ int ch; wh...
原创
0评论
0点赞
发布博客于 3 年前

编写代码模拟三次密码输入的场景

题目:编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。 分析:题目相对简单,看完后,你可能马上会写下如下代码-->#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>...
原创
0评论
0点赞
发布博客于 3 年前

写代码可以在整型有序数组中查找想要的数字

题目:写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找) 代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int BinarySearch(int a[], int key,int len){ int ret = -1;//...
原创
0评论
0点赞
发布博客于 3 年前

猜数字游戏

题目:写一个简单的猜数字游戏代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<time.h>//猜数字游戏void Menu(){ printf("欢迎小可爱来到我们的“幸运猜猜猜”游戏环节
"); printf("*****...
原创
0评论
0点赞
发布博客于 3 年前

习题4-10 猴子吃桃问题

习题4-10 猴子吃桃问题 (15 分)一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?输入格式:输入在一行中给出正整数N(1<N≤10)。输出格式:在一行中输出第一天共摘了多少个桃子。输入...
原创
0评论
3点赞
发布博客于 3 年前

习题4-9 打印菱形图案

习题4-9 打印菱形图案 (15 分)本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。输入样例:7输出样例: * * * * * * * * * * * * * * * * * * * * ...
原创
1评论
2点赞
发布博客于 3 年前

习题4-8 高空坠球

习题4-8 高空坠球 (20 分)皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输入格式:输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。输出格式:在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一...
原创
2评论
8点赞
发布博客于 3 年前

习题4-7 最大公约数和最小公倍数

习题4-7 最大公约数和最小公倍数 (15 分)本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例:511 292输出样例:73 2044 分析:对于“求最大公约数”有两种方法:(1)枚举法(2)辗转相除法。对...
原创
1评论
5点赞
发布博客于 3 年前

习题4-5 换硬币

习题4-5 换硬币 (20 分)将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。...
原创
0评论
11点赞
发布博客于 3 年前

习题4-4 特殊a串数列求和

习题4-4 特殊a串数列求和 (20 分)给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。输入格式:输入在一行中给出不超过9的正整数a和n。输出格式:在一行中按照“s = 对应的和”的格式输出。输入样例:2 3输出样例:s = 246分析:本题与“求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和...
原创
0评论
2点赞
发布博客于 3 年前

习题4-3 求分数序列前N项和

习题4-3 求分数序列前N项和 (15 分)本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。输入样例:20输出样例:3...
原创
3评论
3点赞
发布博客于 3 年前

习题4-2 求幂级数展开的部分和

习题4-2 求幂级数展开的部分和 (20 分)已知函数e​x​​可以展开为幂级数1+x+x​2​​/2!+x​3​​/3!+⋯+x​k​​/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求e​x​​的近似值,求和一直继续到最后一项的绝对值小于0.00001。输入格式:输入在一行中给出一个实数x∈[0,5]。输出格式:在一行中输出满足条件的幂级数部分和,保留小数点后四位。...
原创
4评论
12点赞
发布博客于 3 年前

在屏幕上输出以下图案

题目:在屏幕上输出以下图案:      *     ***    *****   *******  ********* ************************ ***********  *********   *******    *****     ***      *代码:#define _CRT_SECURE_NO_WARNINGS 1#in...
原创
1评论
1点赞
发布博客于 3 年前

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和

题目:求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字, 例如:2+22+222+2222+22222 分析:由于不论输入的a是什么,都是计算前5项之和。所以关键点就是求出每一项的值。所以可以在主函数中for循环i=1~5(这里的i表示位数),然后调用5次fun函数(fun函数用于求出Sn的每一项的值);fun函数的图解如下:代码:#define _...
原创
0评论
1点赞
发布博客于 3 年前

习题4-6 水仙花数

习题4-6 水仙花数 (20 分)水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3输出样例:1533703...
原创
6评论
14点赞
发布博客于 3 年前

求出0~999之间的所有“水仙花数”并输出

题目:求出0~999之间的所有“水仙花数”并输出“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153 = 1^3 + 5^3 + 3^3,则153是一个“水仙花数”。 /* 在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。 例如1...
原创
0评论
0点赞
发布博客于 3 年前

习题4-1 求奇数和

习题4-1 求奇数和 (15 分)本题要求计算给定的一系列正整数中奇数的和。输入格式:输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。输出格式:在一行中输出正整数序列中奇数的和。输入样例:8 7 4 3 70 5 6 101 -1输出样例:116 分析:本题较为简单,基本思想就是判断奇数。此外,关于数的存...
原创
1评论
2点赞
发布博客于 3 年前

编写程序数一下 1到 100 的所有整数中出现多少次数字9

题目:编写程序数一下 1到 100 的所有整数中出现多少次数字9分析:1-100之间的数字,9要么出现在个位要么出现在十位,所以问题就演变成如何取出数字的每一位?判断是否是9.这里我们不难想到之前学过的知识:整数的分解。采用%10再/10的办法。代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#includ...
原创
0评论
0点赞
发布博客于 3 年前

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

题目:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值分析:本题属于“交错列相加求和”问题,关键点就是符号位正负的变化。具体可以参见之前写过的一篇博客https://blog.csdn.net/melody_1016/article/details/82320590代码:#define _CRT_SECURE_NO_WARNINGS 1#incl...
原创
0评论
0点赞
发布博客于 3 年前