笔记
清风彬
主动思考很重要!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
什么是回调函数?
回调就是一种利用函数指针进行函数调用的过程。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。原创 2022-04-12 18:40:01 · 7571 阅读 · 0 评论 -
指针-数组-引用概念与区别!
一、指针在计算机科学中,指针(Pointer)是编程语言中的一个对象,指针是个变量,存放内存单元的地址(编号)。该地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。#include <stdio.h>int main(){ int a = 10;//在内存中开辟一块空间 int *p = &a;//这里我们对变量a,取出它的地址,可以使用&a原创 2021-04-04 20:39:09 · 639 阅读 · 0 评论 -
怎么解决vs2013代码运行结果闪退的问题?
1.首先,这是一个随便的一行代码。按F5运行,哦呦??结果一闪而过,真是太气人了。怎么解决这个问题呢?2.最简单的方法就是在return 0;前加一句getchar();这样运行结果就不会一闪而过了。原创 2021-03-23 21:11:52 · 492 阅读 · 1 评论 -
C语言关键字你知道几个?
C语言关键字大全关键字的基本概念:被c语言赋予了特殊的含义的单词关键字特征:全部都是小写注意:关键字不能用做变量名ANSI C标准C语言共有32个关键字:数据类型关键字(12个)char,short,int,long,float,double,unsigned,signed,struct,union,enum,void控制语句关键字(12个)if,else,switch,case,default,for,do,while,break,continue,goto,return存储关键字(5原创 2021-03-16 09:12:39 · 2081 阅读 · 4 评论 -
计算日期到天数转换!
题目描述根据输入的日期,计算是这一年的第几天。。测试用例有多组,注意循环输入输入描述:输入多行,每行空格分割,分别是年,月,日输出描述:成功:返回outDay输出计算后的第几天;失败:返回-1示例:输入2012 12 31输出366#include<iostream>using namespace std;int main(){ int monthday[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,原创 2020-12-09 20:18:02 · 292 阅读 · 0 评论 -
C++——函数模板与类模板
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础.(模板——函数模板+类模板)函数模板:1.函数模板概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。2.函数模板格式:template<typename T1, typename T2,......,typename Tn>返回值类型 函数名(参数列表){}//以swap函数为例template<typename T> voi原创 2020-11-15 11:40:43 · 231 阅读 · 0 评论 -
C++——malloc/free和new/delete的区别
malloc/free和new/delete的区别malloc/free和new/delete共同点是:都是从堆上申请空间,并且需要用户手动释放。不同的地方是:1 malloc和free是函数,new和delete是操作符2. malloc申请的空间不会初始化,new可以初始化3. malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可。4. malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型。5. malloc原创 2020-11-15 02:31:05 · 7727 阅读 · 1 评论 -
C++——内存管理
C++内存管理方式C语言中动态内存管理方式:malloc/calloc/realloc/freeC语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。new/delete操作内置类型:void Test (){ int* p1 = (int*) malloc(sizeof(int)); free(p1); // 1.malloc/calloc/realloc的区别是什么?原创 2020-11-15 02:26:41 · 182 阅读 · 0 评论 -
C++——友元介绍
友元介绍:友元分为:友元函数和友元类友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装。1.友元函数:友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。class Date{friend ostream& operator<<(ostream& _cout, const Date& d);friend istream& operator&g原创 2020-11-15 01:58:38 · 1509 阅读 · 0 评论 -
C++——this指针
this指针:C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变t量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。this指针是类“成员函数”第一个隐藏的参数,该指针时时刻刻指向调用函数的对象this指针的特点:this指针的类型:类 类型* const只能在“成员函数”的内部使用this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作原创 2020-11-15 01:44:12 · 456 阅读 · 0 评论 -
C++——类的引入
1.C语言和C++的区别:C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。3.类的定义class className{ // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注原创 2020-11-15 01:18:12 · 541 阅读 · 0 评论 -
static成员
static成员所有对象共享,可以看做类的成员static成员不会存放在对象中,存放在静态数据区//stati c成员的访问方式:通过对象方法,对象. static成员,对象指针->static成员2.通过类名访问:类名: :static成员//static成员必须在类外初始化...原创 2020-11-19 11:02:38 · 195 阅读 · 0 评论 -
C++入门——“Hello World!“
C++入门创建文件名与C语言不同,“文件命名+.cpp"一个简单的C++程序包含三个部分:头文件 #include <iostream>命名空间 using namespace std;主函数int main(void){…}C++输入&输出:输入:cin>>输出:cout<<C++“Hello World”在这里插入代码片...原创 2020-10-11 19:16:46 · 326 阅读 · 0 评论 -
C语言实现——通讯录!
实现一个通讯录;通讯录可以用来存储个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址。通讯录功能如下:1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信息6.清空所有联系人7.以名字排序所有联系人0.退出以上功能采用不同函数实现,为了使代码清晰明了,我采用多文件来完成!main.c...原创 2020-07-17 23:43:17 · 2296 阅读 · 0 评论 -
剖析数据在内存中的存储!
深度剖析数据在内存中的存储,从以下四个方面展开:数据类型的介绍整形在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储> 1. 数据类型的介绍C语言中九种基本数据类型:void 表示空类型(无类型)通常应用于函数的返回类型、函数的参数、指针类型。void不能定义变量,可以充当函数的返回值。而void既可以定义变量,也可以赋值,但void对应的变量不能被直接解引用。void*常用来接收任意类型的指针。> 2.整形在内存中的存储:原码、反码、补码原创 2020-06-17 01:08:13 · 292 阅读 · 0 评论 -
猜名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。(采用穷举+过滤的方法)#include <stdio.h>void game(){ int a = 1; for(; a<=5;a++){ int b = 1; for(;b<=5;b++){ int原创 2020-06-16 00:24:06 · 667 阅读 · 0 评论 -
猜凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。#include <stdio.h>char findkiller(){ char killer = 'a'; for (;killer<= 'd';killer++){ if(((killer!='a')+(killer=='c'原创 2020-06-16 00:20:01 · 451 阅读 · 0 评论 -
杨辉三角的打印!
杨辉三角的特点:各行的第一个数都是1各行的最后一个数都是1从第3行起,除上面指出的第一个数和最后一个数外,其余各数是上一行同列和前一列两个数之和。可以表示为:a[ i ][ j ] = a[ i-1 ][ j ] + a[ i-1 ][ j-1 ]代码如下:#include<stdio.h>void showyang(){ int arr[10][10]; int i = 0; int j = 0; for (; i<10;i++){ for(j=0;j<=原创 2020-06-16 00:16:35 · 238 阅读 · 0 评论 -
打印菱形!
#include<stdio.h>void show(int n){ //菱形上半部 int i = 0; for(; i < n; i++ ){ int j = 0; for(; j < n-1-i; j++){ printf(" "); } for(j=0; j < 2*i+1; j++){ printf("*"); } printf("\n"); } //菱形下半部 for(i = 0; i < n-1; i++)原创 2020-05-15 01:11:45 · 1401 阅读 · 0 评论 -
喝汽水空瓶兑换问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给n元,可以多少汽水(编程实现)#include<stdio.h>int main(){ int money = 0; int sum = 0; printf("请输入你有多少钱:"); scanf("%d", &money); sum = money * 2 - 1; printf("可以喝的汽水瓶数为:%d\n", sum); return 0;}举个例子:给20元,可以多少汽水?可以喝的汽共有20+10+5+2原创 2020-05-14 23:36:28 · 567 阅读 · 0 评论 -
求出0~100000之间的所有“水仙花数”并输出。
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一n位数,其各位数字的n次方和等于该数。比如:153 = 1^3 + 5^3 +3^3此程序要运用到math函数库的pow()函数#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int n; int a[10] = { 0 }原创 2020-05-11 01:29:18 · 1233 阅读 · 1 评论 -
计算求和(求Sn=a+aa+aaa+aaaa+aaaaa的前n项之和,其中a是一个数字)
#include<stdio.h>int main(){ int a, n; int sum = 0; int temp = 0; int i = 0; printf("所求数字a:"); scanf("%d",&a); printf("所求数字的前n项:"); scanf("%d",&n); for(;i < n;i++){ temp = temp * 10 + a; printf("%d+", temp); sum = sum + te原创 2020-05-10 23:56:32 · 1264 阅读 · 0 评论 -
写一个函数实现字符串逆序输出
#include<stdio.h>#include<string.h> void Reversestring(char *a){ char *start = a, *end = a+strlen(a)-1; while (start < end){ char temp = *start; *start = *end; *end = temp; start++; end--; }}int main(){ char arr[] = "ABCDEF"原创 2020-05-10 23:34:35 · 5433 阅读 · 6 评论 -
交换两个变量(不创建临时变量)
#include <stdio.h>int main(){ int a = 13; int b = 77; a = a^b; b = a^b; a = a^b; printf("a = %d\nb = %d\n", a, b); return 0;}原创 2020-05-06 01:11:59 · 254 阅读 · 0 评论 -
统计二进制中1的个数!
#include<stdio.h>int countOne(int num){ int count = 0; while (num) { if (num % 2 == 1)//模2可以得到最低位的数,如果模2的结果是1,则将count++ count++; num = num / 2;//除2可...原创 2020-05-06 01:05:28 · 377 阅读 · 0 评论 -
打印整数二进制的奇数位和偶数位!
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列:#include <stdio.h>int main(){ int i = 0; int num = 7; printf("奇数位:"); for (i = 31; i >= 1; i-=2) { printf("%d ", (num >> i) & 1); } pri...原创 2020-05-05 23:38:58 · 863 阅读 · 0 评论 -
求两个二进制数中不同位的个数
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?代码如下:#include<stdio.h>int main(){ int a = 0; int b = 0; int count = 0; printf("请输入a和b:\n"); scanf("%d%d", &a, &b); while (a != 0 || b != ...原创 2020-05-05 23:11:29 · 367 阅读 · 0 评论 -
C语言实现三子棋小游戏!!!
为了使我的三子棋小游戏代码看起来更加清晰,所以我采用了多文件形式将代码分开,分别是chess.h/main.c/chess.c这三个文件。首先是头文件chess.h用来存放头文件,宏定义和函数声明...原创 2020-05-05 18:40:23 · 846 阅读 · 0 评论 -
写一个函数打印数组内容!三种方式(指针/数组下标/数组地址)
1.函数打印arr数组的内容,使用指针:#include <stdio.h>void PrintArr(int arr[]){ int i = 0; int* p = arr; for (i = 0; i < 10; i++) { printf("%d ", *(p + i));//指针 }}int main(){ int arr[] = { 1, 2...原创 2020-05-05 16:59:12 · 2209 阅读 · 0 评论 -
使用指针打印数组内容!
使用指针打印arr数组的内容。arr是一个整形一维数组。代码如下:#include <stdio.h>int main(){ int a[10] = {1,2,3,4,5,6,7,8,9,10}; int *p; int i; p = a; printf("数组下标输出数组a:"); for(i=0;i<10;i++) ...原创 2020-05-05 16:34:03 · 792 阅读 · 0 评论 -
将两个数组内容进行交换(数组一样大)
#include<stdio.h>int main(){ int arr1[4]={1,2,3,4}; int arr2[4]={5,6,7,8}; int i = 0; for(;i<4;i++){ int temp; temp = arr1[i]; arr1[i] = arr2[i]; arr2[i] = temp; } for(i=0;i...原创 2020-04-23 23:36:00 · 703 阅读 · 0 评论 -
对一个整形数组实现3类函数操作/初始化数组为全0/打印数组的每个元素/数组元素的逆置
#include<stdio.h>//// 1.实现函数init() 初始化数组为全0//void init(int arr[],int sz) //{// int j = 0;// for (j = 0; j < sz; j++)// {// arr[j] = 0;// }//}//// 2.实现打印数组的每个元素//void pri...原创 2020-04-23 23:08:01 · 454 阅读 · 0 评论 -
用函数实现一个对整形数组的冒泡排序/
#include<stdio.h>void bobble_sort(int arr[],int sz){ int i = 0; for(i=0;i<sz-1;i++){ //遍历时防止越界i<sz-1, int j = 0; int flag=1; for(;j<sz-1-i;j++){ //冒泡排序时数组元素每遍历一次,把最大或者最小值排在最后,...原创 2020-04-23 12:53:32 · 1619 阅读 · 1 评论 -
递归和非递归分别实现求第n个斐波那契数
#include <stdio.h>#include <stdlib.h> int fib(int n)//递归{ if (n <= 2) { return 1; } else { return fib(n - 2) + fib(n - 1); }}// int fib(int n)//非递归//{// int a = 1;/...原创 2020-04-20 23:55:31 · 281 阅读 · 0 评论 -
递归求n的k次方
#include <stdio.h>#include <stdlib.h>int PowerFunction(int n,int k){ if (k ==0){ return 1; } else if (k == 1){ return n; } else { return n*PowerFunction(n, k - 1); }}int ma...原创 2020-04-20 23:42:25 · 290 阅读 · 0 评论 -
计算一个数的每位之和(递归实现)
#include<stdio.h>int DigitSum(int n){ if (n>9) return DigitSum(n / 10) + n % 10; else return n;}int main(){ int n = 0; printf("请输入一个数字\n"); scanf("%d", &n); printf("%d\n", D...原创 2020-04-20 23:33:53 · 2298 阅读 · 0 评论 -
字符串逆序(递归实现)
#include<stdio.h>void reverse_string(char* string){ if ('\0' != *(++string)){ reverse_string(string); } printf("%c", *(string - 1));}int main(){ char *a ="abcdefg"; reverse_string(a);...原创 2020-04-20 23:25:43 · 455 阅读 · 0 评论 -
递归和非递归分别实现strlen
#include<stdio.h>//非递归 int my_strlen(char* str) { int count = 0; while (*str != '\0') { str++; count++; } return count; }//递归方法//int my_strlen(char*str)//{// if (*str ...原创 2020-04-20 23:18:00 · 195 阅读 · 0 评论 -
用递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
什么是递归?程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 递归的主要思考方式在于:把大事化小。递归的两个必要条件...原创 2020-04-20 02:41:27 · 1823 阅读 · 0 评论 -
函数交换两个数//
#include <stdio.h>void Swap(int *px, int *py){ int tmp = 0; tmp = *px; *px = *py; *py = tmp;} int main(){ int num1 = 1; int num2 = 2; Swap(&num1, &num...原创 2020-04-17 18:56:22 · 260 阅读 · 0 评论
分享