![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
动起来才能健康快乐
这个作者很懒,什么都没留下…
展开
-
关于C语言函数之间的数据交换
C语言的函数可以分为主调函数和被调函数两大类,他们共同完成程序的功能。现在把主调函数当成一个人,被调函数是一个具有某个功能的工厂。那么人怎样协调工厂一起把原料加工成产品呢。有三种模式:一、普通的参数传递(图片来自百度,向图片作者致谢)此时,我们的甘蔗棍就是原材料,榨汁机就是工厂,工厂加工后,产品就是果汁。对应到函数,榨汁机就是函数,留的那个放甘蔗的地方就是形式参数,甘蔗是实际参数,液体是水龙头提供产品的形态,是返回值类型,杯子里的甘蔗汁是返回值。当你不用甘蔗机的时候,原创 2022-01-09 11:47:54 · 766 阅读 · 0 评论 -
素数判断中一个典型错误
在学习C语言过程中,素数判断也是一个经典题目,大约每年都有40%的学生学不会。究其原因,是逻辑没有理顺的原因。下面是一个典型错误,看看你是否犯过。输入一个整数x,判断其是否是素数,若是输出Yes,否则输出No。某学生写成下面的样子。# include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL x,i; cin>>x; for(i=2;i<原创 2021-12-28 09:43:40 · 660 阅读 · 0 评论 -
初学编程者要学会发现问题---多加打印语句
一些学生,对编程很感兴趣,也会去做题,但当程序运行结果不正确时,往往不会去发现问题。这里给大家演示一个方法,可以帮助你看清楚程序的运行过程,从而自己发现问题,进而解决问题。 只有自己发现问题、解决问题,得到的成就感和幸福感才是实实在在的。 比如:输入一个整数n,计算 sum=1!+2!+3!+....+n!,输出 sum。 某个同学写出下面的程序:# include <bits/stdc++.h>using names...原创 2021-12-28 09:16:35 · 353 阅读 · 0 评论 -
有些实数在计算机内存储是不精确的,如何验证?
我们列出0-10,这11个数的开平方b,b*b,比较一下结果。并且我们保留到小数点后10位和20位。#include<bits/stdc++.h>using namespace std;int main(){ for(int i=0;i<11;i++) { double b; b=sqrt(i); //cout<<b<<" "<<b*b<<" "<<i...原创 2021-12-15 21:21:55 · 1051 阅读 · 0 评论 -
求组合数cnm
传统算法cnm=n!/m!/(n-m)!,当n比较大时,会溢出下面的方法可以避免LL cnm(LL n,LL m){ LL f=1; LL i,j=1; for(i=n-m+1;i<=n;i++) { f=f*i; if(f%j==0) { f=f/j; j++; } }...原创 2021-10-16 10:37:06 · 2415 阅读 · 0 评论 -
c++11以前中的hash_map
自己杜撰一个题目:对于一组数据,存在数组中a,现在输入多行,每行两个整数m,n要求输出每个a【m,n】中最大值。每次输入一对m,n就在hash_map中查找是否存在,若存在,则直接输出,若不错在则去a中查找,查找过程中产生的中间结果都加以记录。这样后面若遇到查过的,则不用再查了。————————————————#include <ext/hash_map> #include<bits/stdc++.h>using namespace std;//usi..原创 2021-10-09 20:09:55 · 238 阅读 · 0 评论 -
C++11中的unordered_map,底层基于hash table实现
在C++11中,有了基于哈希表的unordered_map和unordered_set,可以直接使用。但是,c、c++程序竞赛似乎不支持c++11.万能头文件#include<bits/stdc++.h>using namespace std;怎样使得dev-cpp支持c++ 11呢?(96条消息) 让devcpp支持c++11_速趴赛亚金的博客-CSDN博客1.选择菜单栏的--工具,打开编译选项。2.在编译项中勾选“编译时加入以下命令”,并加入命令 -std=c+.原创 2021-10-09 17:13:19 · 517 阅读 · 0 评论 -
C++关于字符串的读入操作
C++11中不允许使用gets()得到一行字符。若使用字符数组,C++ string的优秀功能不能使用。现找到使用getline的方法可以用C++11得到一行字符。特记之。一、string1、读入不能包含空白符的字符串string s;cin>>s;读入字符串,遇到空白符、回车符等结束。2、读入一行,以回车符结束string s; getline(cin,s);//s中不包含回车符 cout<<s;3、先读入一个整数n,再读...原创 2021-10-04 20:44:49 · 3592 阅读 · 0 评论 -
C++-重载运算符以利用sort函数对复杂类型(结构体类型)排序
在使用c++的sort函数时,其函数原型为:①两个参数的形式template <class RandomAccessIterator>void sort ( RandomAccessIterator first, RandomAccessIterator last );②三个参数的形式template <class RandomAccessIterator, class Compare> void sort ( RandomAccessIterator f..原创 2021-09-16 08:50:45 · 1024 阅读 · 0 评论 -
【转】C++ 万能头文件
#include<bits/stdc++.h>//包含了目前c++所包含的所有头文件!!!!using namespace std;int main(){ return 0;}转载 2021-09-16 08:39:35 · 1675 阅读 · 0 评论 -
C++的find_if函数
find_if函数可以查询复杂数据类型,比如结构体。///ttt.cpp//c++编译器下通过#include<stdio.h>#include<stdlib.h>#include<vector>#include<algorithm>#include<iostream>using namespace std;struct node{ int data; int count;};node x...原创 2021-09-13 20:56:35 · 2819 阅读 · 0 评论 -
cin输入字符时的一个坑---默认会跳过空格
我们知道,在C++中定义一个字符变量并进行输入输出的代码如下:char a;cin>>a;cout<<a;那么,读下面的程序:#include<bits/stdc++.h>using namespace std;int main(){ char a,b,c,d; cin>>a; cin>>b; cin>>c; cin>>d; cout<<a<原创 2020-11-17 15:15:23 · 1752 阅读 · 0 评论 -
二叉树的层次遍历-基于递归方法
在前面介绍了二叉树的层次遍历,是用非递归算法实现的。本文,我们基于递归算法实现。#include<queue>#include<iostream>using namespace std;struct node{//树的结点结构。二叉链表表示法 char data; node *lchild,*rchild;}; void layerTraverseRecurve(queue<node*> &q) {//递归部分 if(q.empt原创 2020-11-11 08:50:58 · 1612 阅读 · 1 评论 -
二叉树的层次遍历
本篇主要介绍二叉树的层次遍历算法。要点如下:1、采用二叉链表存储结构。2、手工构建一棵简单的静态二叉树。3、基于stl的队列queue构建层次遍历算法。一、测试用例中用到的二叉树二、定义二叉链表的结点类型struct node{//树的结点结构。二叉链表表示法 char data; node *lchild,*rchild;};三、构建静态二叉树为了将精力集中到二叉树的层次遍历上,我们构建一棵静态的二叉树。int main( ){ node a,b,原创 2020-11-11 08:43:35 · 795 阅读 · 0 评论 -
DS007-二叉树-顺序表表示法-先根-中根-后根遍历
本篇介绍二叉树的顺序表表示法,及其先、中、后根遍历。以下面这棵二叉树为例。对应的顺序存储结构为: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..原创 2020-09-16 06:20:26 · 1049 阅读 · 0 评论 -
DS007-二叉树-二叉链表表示法-先根-中根-后根遍历
本篇介绍二叉树的二叉链表表示法,及其先、中、后根遍历。以下面这棵二叉树为例。#include "stdafx.h"#include<iostream> using namespace std;template<typename T> class tree{//基于二叉链表的二叉树 struct node { T data; node *lchild; node *rchild; }; node *root; node a, b.原创 2020-09-16 06:19:50 · 412 阅读 · 0 评论 -
DS007-二叉树-伪指针表示法-先根-中根-后根遍历
本篇介绍二叉树的顺序表表示法,及其先、中、后根遍历。以下面这棵二叉树为例。对应的伪指针存储结构为:整体是一个顺序表,每个元素是一个结构体,包含本身元素,左孩子的下标,右孩子的下标。也可以包含双亲结点的下标,此例没有包含。参考代码如下:#include "stdafx.h"#include<iostream> using namespace std;template<typename T>class tree{//基于伪指针的二...原创 2020-09-16 06:18:39 · 749 阅读 · 0 评论 -
学习数据结构-补充部分C++知识-基础不牢-地动山摇
各位同学: 本学期的数据结构课程授课过程中采用了一点点C++的知识,目的是为了简化、方便代码的编写。涉及的知识点有如下几个:1、文件扩展名的变化C语言的源代码文件扩展名为c,C++语言的源代码文件扩展名为cpp2、头文件的变化C语言采用scanf、printf作为输入输出函数,格式繁杂,容易出错,对应的头文件格式为:#include<stdio.h>C++语言采用cin、cout作为输入输出函数,格式简单,对应的头文件格式为:#include &l...原创 2020-09-07 19:43:39 · 450 阅读 · 0 评论 -
DS002-矩阵的乘法
本程序演示矩阵的乘法原创 2020-08-31 21:01:32 · 165 阅读 · 0 评论 -
DS001-测试冒泡排序的运行时间
本程序演示如何测试一段程序的运行时间。以冒泡排序算法为例。#include "time.h" //与时间相关的函数#include "stdlib.h" //rand()函数在此库中#include "stdio.h" //输入输出相关函数 void BubbleSort(int *a, int n){//冒泡排序, a是指针,代表连续空间的首地址,n表示有n个元素 for(int i=1;i<=n-1;i++) { for(int j=0;j<=n-i-1;j原创 2020-08-31 20:48:46 · 1366 阅读 · 0 评论 -
hdu1005-sequence number-解题
这是一道在数字序列中寻找周期的题目。其中有令人叹为观止的技巧。原创 2020-07-07 08:00:54 · 870 阅读 · 0 评论 -
C语言-函数-学会方程你的数学能力会乘风破浪突飞猛进-学会函数你的编程能力将百尺竿头更进一步
方程是一种数学工具,列方程解方程能够有效解决数学问题。函数是一种编程技巧,设计函数实现函数能够提高程序设计的效率。本篇从简单到复杂介绍函数的设计。原创 2020-07-05 06:31:38 · 535 阅读 · 0 评论 -
hdu1002-A+B-求长整数的加法-acm程序竞赛入门题目
长整数的加法。程序设计竞赛入门题目。考查数组的灵活应用。原创 2020-07-04 07:37:54 · 255 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题12-头插法建立带头结点的单链表
每来一个数据,生成一个结点,插入点链表的头部。#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};struct node* CreateNode(int x){//为数据x生成一个结点//成功后,返回指向新结点的指针//失败后,返回空指针 struct node *temp; temp=(struct node*)malloc(sizeo.原创 2020-06-23 08:21:34 · 314 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题10--一维数组-冒泡排序
代码如下原创 2020-06-21 10:31:07 · 194 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题11-递归法打印单链表
#include<stdio.h> struct node{ int data; struct node *next; }; void printF2L(struct node *head){//head指向第一个数据结点 //从头到尾打印,递归 struct node *p=head; if(p==0)return; printf("%d ",p->data);//先打印第一个 printF2L(p->next); //再打印其他 }void.原创 2020-06-22 07:01:29 · 305 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题13-尾插法建立带头结点的单链表
每来一个数据,生成一个结点,插入点链表的尾部。#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};struct node* CreateNode(int x){//为数据x生成一个结点//成功后,返回指向新结点的指针//失败后,返回空指针 struct node *temp; temp=(struct node*)malloc(sizeof原创 2020-06-24 07:56:09 · 290 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题8-递归专题-求数组中最大值的下标
代码如下:#include <stdio.h> int max(int *A,int i,int j) {//求数组A的区间[i,j]中最大值的下标 if(i==j) return i; int x; x=max(A,i+1,j); if(A[x]>A[i]) { return x; } return i; }int main() { int A[]={1,3,6,2,4,5}; printf("%d\n",max(A,0,5));原创 2020-06-19 09:23:15 · 331 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题9-递归专题-简单选择排序
代码如下:#include <stdio.h> void printArray(int *A,int n){ if(n==0) { return; } printf("%d ",*A); printArray(A+1,n-1); }void ssSort(int *A,int n){//简单选择排序 if(n<=1) { return; } int i,t; for(i=1;i<n;i++) {//一趟简单选择排序 if(A原创 2020-06-20 06:27:30 · 288 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题7-求数组中数据最大值
代码如下:#include <stdio.h> int max(int *A,int n) {//求数组中最大值 if(n==1) return *A; int x; x=max(A+1,n-1); if(x>*A) { return x; } return *A; }int main() { int A[]={1,3,6,2,4,5}; printf("%d\n",max(A,6)); return 0; } ..原创 2020-06-18 08:37:38 · 215 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题6-一维数组中元素倒置
代码如下原创 2020-06-17 16:13:08 · 192 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题5-求斐波那契数列第n项
代码如下:原创 2020-06-16 07:10:44 · 229 阅读 · 3 评论 -
只有刻意练习递归,才能掌握递归-递归专题4-打印一维数组中数据
代码如下原创 2020-06-15 06:03:54 · 197 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题3-求两个数的最小公倍数
要求两个整数m、n的最小公倍数,从m、n中的最大数开始,不失一般性,假设为x试探x,如果能同时被m、n整除,则x就是最大公约数,否则x++,继续试探原创 2020-06-14 09:34:52 · 413 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题2-求两个数的最大公约数-非辗转相除法
要求两个整数m、n的最大公约数,从m、n中的最小数开始,不失一般性,假设为x试探x,如果能同时被m、n整除,则x就是最大公约数,否则x--,继续试探原创 2020-06-13 07:10:08 · 242 阅读 · 0 评论 -
在数组中查找数据-C++的find函数
在数组a中查找元素x,是一个常规性的操作。在C语言中没有对应的函数,在C++中有。下面进行介绍。对于简单数据类型,语法形式如下:x的位置=find(开始位置,结束位置+1,x);//即对于简单数据类型就是通常意义上的指针例如://#include<bits/stdc++.h>#include<algorithm>//find函数在其中 #include<iostream>using namespace std;int main(){原创 2020-06-06 13:50:53 · 15964 阅读 · 5 评论 -
求二者最大二值最小值之max函数min函数-C++
C++提供方便的max、min函数,对许多类型进行了重载,程序员可以直接使用。#include<algorithm>#include<iostream>using namespace std;int main(void) { cout<<max(2.2,3.3)<<'\t'<<min(2.2,3.3)<<endl; cout<<max(2,3)<<'\t'<<min(2,3)&原创 2020-06-05 16:23:41 · 3398 阅读 · 0 评论